From 0ef54104beecb6cdcd9345d24fd6af1a82d83507 Mon Sep 17 00:00:00 2001 From: BoykoAlex Date: Tue, 27 Sep 2016 15:37:17 -0400 Subject: [PATCH] Correct syntax error ranges --- .../properties/antlr/parser/AntlrParser.java | 14 ++++++++++++-- .../parser/test/PropertiesAntlrParserTest.java | 9 ++++++--- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/vscode-extensions/commons/java-properties/src/main/java/org/springframework/ide/vscode/properties/antlr/parser/AntlrParser.java b/vscode-extensions/commons/java-properties/src/main/java/org/springframework/ide/vscode/properties/antlr/parser/AntlrParser.java index 6491a9d5b..77e4a6f5c 100644 --- a/vscode-extensions/commons/java-properties/src/main/java/org/springframework/ide/vscode/properties/antlr/parser/AntlrParser.java +++ b/vscode-extensions/commons/java-properties/src/main/java/org/springframework/ide/vscode/properties/antlr/parser/AntlrParser.java @@ -132,12 +132,22 @@ public class AntlrParser implements Parser { @Override public int getOffset() { - return token.getStartIndex(); + if (token.getStartIndex() >= token.getStopIndex()) { + // No range? Make error span the whole line then + return token.getStartIndex() - token.getCharPositionInLine(); + } else { + return token.getStartIndex(); + } } @Override public int getLength() { - return token.getStopIndex() - token.getStartIndex(); + if (token.getStartIndex() >= token.getStopIndex()) { + // No range? Make error span the whole line then + return token.getCharPositionInLine(); + } else { + return token.getStopIndex() - token.getStartIndex(); + } } }; diff --git a/vscode-extensions/commons/java-properties/src/test/java/org/springframework/ide/vscode/properties/parser/test/PropertiesAntlrParserTest.java b/vscode-extensions/commons/java-properties/src/test/java/org/springframework/ide/vscode/properties/parser/test/PropertiesAntlrParserTest.java index bb69c7a0f..5c523c66f 100644 --- a/vscode-extensions/commons/java-properties/src/test/java/org/springframework/ide/vscode/properties/parser/test/PropertiesAntlrParserTest.java +++ b/vscode-extensions/commons/java-properties/src/test/java/org/springframework/ide/vscode/properties/parser/test/PropertiesAntlrParserTest.java @@ -191,7 +191,8 @@ public class PropertiesAntlrParserTest { assertEquals(1, results.ast.getAllNodes().size()); Problem syntaxError = results.syntaxErrors.get(0); - assertEquals(text.length(), syntaxError.getOffset()); + assertEquals(0, syntaxError.getOffset()); + assertEquals(text.length(), syntaxError.getLength()); } @Test @@ -214,9 +215,11 @@ public class PropertiesAntlrParserTest { // Test errors Problem syntaxError1 = results.syntaxErrors.get(0); - assertEquals(11, syntaxError1.getOffset()); + assertEquals(0, syntaxError1.getOffset()); + assertEquals(11, syntaxError1.getLength()); Problem syntaxError2 = results.syntaxErrors.get(1); - assertEquals(text.length(), syntaxError2.getOffset()); + assertEquals(22, syntaxError2.getOffset()); + assertEquals(6, syntaxError2.getLength()); } }