diff --git a/framework/src/main/java/org/checkerframework/framework/util/JavaParserUtil.java b/framework/src/main/java/org/checkerframework/framework/util/JavaParserUtil.java index 4144a0d980a..a5a124b5aa7 100644 --- a/framework/src/main/java/org/checkerframework/framework/util/JavaParserUtil.java +++ b/framework/src/main/java/org/checkerframework/framework/util/JavaParserUtil.java @@ -61,6 +61,7 @@ public class JavaParserUtil { public static CompilationUnit parseCompilationUnit(InputStream inputStream) { ParserConfiguration parserConfiguration = new ParserConfiguration(); parserConfiguration.setLanguageLevel(DEFAULT_LANGUAGE_LEVEL); + parserConfiguration.setPreprocessUnicodeEscapes(true); JavaParser javaParser = new JavaParser(parserConfiguration); ParseResult parseResult = javaParser.parse(inputStream); if (parseResult.isSuccessful() && parseResult.getResult().isPresent()) { @@ -86,6 +87,7 @@ public static CompilationUnit parseCompilationUnit(InputStream inputStream) { public static CompilationUnit parseCompilationUnit(File file) throws FileNotFoundException { ParserConfiguration configuration = new ParserConfiguration(); configuration.setLanguageLevel(DEFAULT_LANGUAGE_LEVEL); + configuration.setPreprocessUnicodeEscapes(true); JavaParser javaParser = new JavaParser(configuration); ParseResult parseResult = javaParser.parse(file); if (parseResult.isSuccessful() && parseResult.getResult().isPresent()) { @@ -142,6 +144,7 @@ public static StubUnit parseStubUnit(InputStream inputStream) { configuration.setLexicalPreservationEnabled(false); configuration.setAttributeComments(false); configuration.setDetectOriginalLineSeparator(false); + configuration.setPreprocessUnicodeEscapes(true); JavaParser javaParser = new JavaParser(configuration); ParseResult parseResult = javaParser.parseStubUnit(inputStream); if (parseResult.isSuccessful() && parseResult.getResult().isPresent()) { @@ -188,6 +191,7 @@ public static Expression parseExpression(String expression, LanguageLevel langua configuration.setLexicalPreservationEnabled(false); configuration.setAttributeComments(false); configuration.setDetectOriginalLineSeparator(false); + configuration.setPreprocessUnicodeEscapes(true); JavaParser javaParser = new JavaParser(configuration); ParseResult parseResult = javaParser.parseExpression(expression); if (parseResult.isSuccessful() && parseResult.getResult().isPresent()) { diff --git a/framework/tests/all-systems/UnicodeEscape.java b/framework/tests/all-systems/UnicodeEscape.java new file mode 100644 index 00000000000..9d1c85552ab --- /dev/null +++ b/framework/tests/all-systems/UnicodeEscape.java @@ -0,0 +1,9 @@ +// Test case for https://github.com/typetools/checker-framework/issues/6631. + +public class UnicodeEscape { + void foo() { + while (true) { + System.out.print("Enter an expression like \u005c"1+(2+3)*4;\u005c" :"); + } + } +}