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) {