Fix float literal lexing
Support the `Digits ExponentPart [FloatTypeSuffix]` production
in JLS 3.10.2, e.g. `1e0`.
MOE_MIGRATED_REVID=137065662
diff --git a/java/com/google/turbine/parse/StreamLexer.java b/java/com/google/turbine/parse/StreamLexer.java
index 35dd81d..2197dfc 100644
--- a/java/com/google/turbine/parse/StreamLexer.java
+++ b/java/com/google/turbine/parse/StreamLexer.java
@@ -474,6 +474,8 @@
private Token decimalLiteral() {
readDigits();
switch (ch) {
+ case 'e':
+ case 'E':
case '.':
eat();
return floatLiteral();
diff --git a/javatests/com/google/turbine/lower/LowerIntegrationTest.java b/javatests/com/google/turbine/lower/LowerIntegrationTest.java
index a96fea8..76a43f5 100644
--- a/javatests/com/google/turbine/lower/LowerIntegrationTest.java
+++ b/javatests/com/google/turbine/lower/LowerIntegrationTest.java
@@ -225,6 +225,7 @@
"marker.test",
"interface_method.test",
"raw_canon.test",
+ "float_exponent.test",
};
List<Object[]> tests =
ImmutableList.copyOf(testCases).stream().map(x -> new Object[] {x}).collect(toList());
diff --git a/javatests/com/google/turbine/lower/testdata/float_exponent.test b/javatests/com/google/turbine/lower/testdata/float_exponent.test
new file mode 100644
index 0000000..49564c0
--- /dev/null
+++ b/javatests/com/google/turbine/lower/testdata/float_exponent.test
@@ -0,0 +1,4 @@
+=== Test.java ===
+interface Test {
+ long NANOS = (long) 1e9;
+}
\ No newline at end of file