diff --git a/pkl-core/src/test/files/LanguageSnippetTests/input/errors/binopDifferentLine.pkl b/pkl-core/src/test/files/LanguageSnippetTests/input/errors/binopDifferentLine.pkl new file mode 100644 index 00000000..31e82140 --- /dev/null +++ b/pkl-core/src/test/files/LanguageSnippetTests/input/errors/binopDifferentLine.pkl @@ -0,0 +1,5 @@ +binop_result: Int = 1 + +/*comment*/- + +/*comment*/ 1 diff --git a/pkl-core/src/test/files/LanguageSnippetTests/output/errors/binopDifferentLine.err b/pkl-core/src/test/files/LanguageSnippetTests/output/errors/binopDifferentLine.err new file mode 100644 index 00000000..c123026a --- /dev/null +++ b/pkl-core/src/test/files/LanguageSnippetTests/output/errors/binopDifferentLine.err @@ -0,0 +1,6 @@ +–– Pkl Error –– +Invalid token at position. Expected a class, typealias, method, or property. + +x | /*comment*/- + ^ +at binopDifferentLine (file:///$snippetsDir/input/errors/binopDifferentLine.pkl) diff --git a/pkl-parser/src/main/java/org/pkl/parser/Parser.java b/pkl-parser/src/main/java/org/pkl/parser/Parser.java index 1c85126d..5d6e8566 100644 --- a/pkl-parser/src/main/java/org/pkl/parser/Parser.java +++ b/pkl-parser/src/main/java/org/pkl/parser/Parser.java @@ -1811,11 +1811,13 @@ public class Parser { private FullToken forceNext() { var tk = lexer.next(); precededBySemicolon = false; + var newLines = lexer.newLinesBetween; while (tk.isAffix()) { precededBySemicolon = precededBySemicolon || tk == Token.SEMICOLON; tk = lexer.next(); + newLines += lexer.newLinesBetween; } - return new FullToken(tk, lexer.span(), lexer.newLinesBetween); + return new FullToken(tk, lexer.span(), newLines); } // Like next, but don't ignore comments diff --git a/pkl-parser/src/test/kotlin/org/pkl/parser/ParserComparisonTest.kt b/pkl-parser/src/test/kotlin/org/pkl/parser/ParserComparisonTest.kt index 7f6dd398..050e1a3c 100644 --- a/pkl-parser/src/test/kotlin/org/pkl/parser/ParserComparisonTest.kt +++ b/pkl-parser/src/test/kotlin/org/pkl/parser/ParserComparisonTest.kt @@ -93,6 +93,7 @@ class ParserComparisonTest { "stringError1.pkl", "annotationIsNotExpression2.pkl", "amendsRequiresParens.pkl", + "errors/binopDifferentLine.pkl", "errors/parser18.pkl", "errors/nested1.pkl", "errors/invalidCharacterEscape.pkl",