mirror of
https://github.com/lightbend/config.git
synced 2025-03-22 15:20:26 +08:00
Add line numbers to ConfigDocumentParser errors
Add line numbers into the ConfigDocumentParser error messages, as these were previously not being displayed.
This commit is contained in:
parent
7aff85dead
commit
05e7a0e176
@ -27,6 +27,7 @@ final class ConfigDocumentParser {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static private final class ParseContext {
|
static private final class ParseContext {
|
||||||
|
private int lineNumber;
|
||||||
final private Stack<Token> buffer;
|
final private Stack<Token> buffer;
|
||||||
final private Iterator<Token> tokens;
|
final private Iterator<Token> tokens;
|
||||||
final private ConfigSyntax flavor;
|
final private ConfigSyntax flavor;
|
||||||
@ -41,6 +42,7 @@ final class ConfigDocumentParser {
|
|||||||
int arrayCount;
|
int arrayCount;
|
||||||
|
|
||||||
ParseContext(ConfigSyntax flavor, Iterator<Token> tokens) {
|
ParseContext(ConfigSyntax flavor, Iterator<Token> tokens) {
|
||||||
|
lineNumber = 1;
|
||||||
buffer = new Stack<Token>();
|
buffer = new Stack<Token>();
|
||||||
this.tokens = tokens;
|
this.tokens = tokens;
|
||||||
this.flavor = flavor;
|
this.flavor = flavor;
|
||||||
@ -74,7 +76,13 @@ final class ConfigDocumentParser {
|
|||||||
Token t = nextToken();
|
Token t = nextToken();
|
||||||
if (Tokens.isIgnoredWhitespace(t) || Tokens.isComment(t) || Tokens.isNewline(t) || isUnquotedWhitespace(t)) {
|
if (Tokens.isIgnoredWhitespace(t) || Tokens.isComment(t) || Tokens.isNewline(t) || isUnquotedWhitespace(t)) {
|
||||||
nodes.add(new ConfigNodeSingleToken(t));
|
nodes.add(new ConfigNodeSingleToken(t));
|
||||||
|
if (Tokens.isNewline(t)) {
|
||||||
|
lineNumber = t.lineNumber() + 1;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
|
int newNumber = t.lineNumber();
|
||||||
|
if (newNumber >= 0)
|
||||||
|
lineNumber = newNumber;
|
||||||
return t;
|
return t;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -108,7 +116,7 @@ final class ConfigDocumentParser {
|
|||||||
//do nothing
|
//do nothing
|
||||||
} else if (Tokens.isNewline(t)) {
|
} else if (Tokens.isNewline(t)) {
|
||||||
sawSeparatorOrNewline = true;
|
sawSeparatorOrNewline = true;
|
||||||
|
lineNumber++;
|
||||||
// we want to continue to also eat
|
// we want to continue to also eat
|
||||||
// a comma if there is one.
|
// a comma if there is one.
|
||||||
} else if (t == Tokens.COMMA) {
|
} else if (t == Tokens.COMMA) {
|
||||||
@ -197,7 +205,7 @@ final class ConfigDocumentParser {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private ConfigException parseError(String message, Throwable cause) {
|
private ConfigException parseError(String message, Throwable cause) {
|
||||||
return new ConfigException.Parse(SimpleConfigOrigin.newSimple(""), message, cause);
|
return new ConfigException.Parse(SimpleConfigOrigin.newSimple("").withLineNumber(lineNumber), message, cause);
|
||||||
}
|
}
|
||||||
|
|
||||||
private String previousFieldName(Path lastPath) {
|
private String previousFieldName(Path lastPath) {
|
||||||
|
Loading…
Reference in New Issue
Block a user