# HG changeset patch # User jjg # Date 1255472790 25200 # Node ID 8a4543b30586eeee80e3db284adb849666e333ec # Parent e526e39579ae81f270edb961b215f9a9cd276d76 6891079: Compiler allows invalid binary literals 0b and oBL Reviewed-by: darcy diff -r e526e39579ae -r 8a4543b30586 src/share/classes/com/sun/tools/javac/parser/Scanner.java --- a/src/share/classes/com/sun/tools/javac/parser/Scanner.java Tue Oct 13 14:02:53 2009 -0700 +++ b/src/share/classes/com/sun/tools/javac/parser/Scanner.java Tue Oct 13 15:26:30 2009 -0700 @@ -876,7 +876,11 @@ } scanChar(); skipIllegalUnderscores(); - scanNumber(2); + if (digit(2) < 0) { + lexError("invalid.binary.number"); + } else { + scanNumber(2); + } } else { putChar('0'); if (ch == '_') { diff -r e526e39579ae -r 8a4543b30586 src/share/classes/com/sun/tools/javac/resources/compiler.properties --- a/src/share/classes/com/sun/tools/javac/resources/compiler.properties Tue Oct 13 14:02:53 2009 -0700 +++ b/src/share/classes/com/sun/tools/javac/resources/compiler.properties Tue Oct 13 15:26:30 2009 -0700 @@ -252,6 +252,8 @@ interface methods cannot have body compiler.err.invalid.annotation.member.type=\ invalid type for annotation member +compiler.err.invalid.binary.number=\ + binary numbers must contain at least one binary digit compiler.err.invalid.hex.number=\ hexadecimal numbers must contain at least one hexadecimal digit compiler.err.invalid.meth.decl.ret.type.req=\ diff -r e526e39579ae -r 8a4543b30586 test/tools/javac/literals/T6891079.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/tools/javac/literals/T6891079.java Tue Oct 13 15:26:30 2009 -0700 @@ -0,0 +1,12 @@ +/* @test /nodynamiccopyright/ + * @bug 6891079 + * @summary Compiler allows invalid binary literals 0b and oBL + * @compile/fail/ref=T6891079.out -XDrawDiagnostics T6891079.java + */ + +class Test { + int bi = 0B; + long bl = 0BL; + int xi = 0X; + long xl = 0XL; +} diff -r e526e39579ae -r 8a4543b30586 test/tools/javac/literals/T6891079.out --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/tools/javac/literals/T6891079.out Tue Oct 13 15:26:30 2009 -0700 @@ -0,0 +1,7 @@ +T6891079.java:8:14: compiler.err.invalid.binary.number +T6891079.java:9:15: compiler.err.invalid.binary.number +T6891079.java:9:18: compiler.err.expected: token.identifier +T6891079.java:10:14: compiler.err.invalid.hex.number +T6891079.java:11:15: compiler.err.invalid.hex.number +T6891079.java:11:18: compiler.err.expected: token.identifier +6 errors