Bug 422760 - Certain escaped digits in string literals cause
InvalidArgumentException
Change-Id: Ia35ab842c5371b43ea904cbd0b24be960ceb5f04
Signed-off-by: Olivier Thomann <Olivier_Thomann@ca.ibm.com>
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ScannerTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ScannerTest.java
index 3f8bd30..e8c64cc 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ScannerTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ScannerTest.java
@@ -1540,5 +1540,19 @@
assertTrue(false);
}
}
-
+ /**
+ * http://bugs.eclipse.org/bugs/show_bug.cgi?id=422760
+ */
+ public void testBug422760() {
+ String sourceA001 = "\\u0660";
+ IScanner scanner = ToolFactory.createScanner(false, true, false, false);
+ scanner.setSource(sourceA001.toCharArray());
+ int token = 0;
+ try {
+ token = scanner.getNextToken();
+ } catch (InvalidInputException e) {
+ assertTrue(false);
+ }
+ assertEquals("Wrong token type", ITerminalSymbols.TokenNameIntegerLiteral, token);
+ }
}
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/ScannerHelper.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/ScannerHelper.java
index 59ec2cd..8f6b5a8 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/ScannerHelper.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/ScannerHelper.java
@@ -383,10 +383,7 @@
if(c < ScannerHelper.MAX_OBVIOUS) {
return (ScannerHelper.OBVIOUS_IDENT_CHAR_NATURES[c] & ScannerHelper.C_DIGIT) != 0;
}
- if (Character.isDigit(c)) {
- throw new InvalidInputException(Scanner.INVALID_DIGIT);
- }
- return false;
+ return Character.isDigit(c);
}
public static int digit(char c, int radix) {
if (c < ScannerHelper.MAX_OBVIOUS) {