Consider code like this:
---
package t;
class Test {
void t() {
if (true) {
s().
} else {
}
}
String s() {
return null;
}
}
---
Compiling this with the current javac yields:
---
$ javac /tmp/Test.java
/tmp/Test.java:7: error: <identifier> expected
s().
^
/tmp/Test.java:7: error: not a statement
s().
^
/tmp/Test.java:8: error: ';' expected
} else {
^
/tmp/Test.java:8: error: 'else' without 'if'
} else {
^
/tmp/Test.java:12: error: ';' expected
String s() {
^
/tmp/Test.java:15: error: reached end of file while parsing
}
^
6 errors
---
This seems like too much errors for a fairly small mistake. The AST structure is also not very nice.
---
package t;
class Test {
void t() {
if (true) {
s().
} else {
}
}
String s() {
return null;
}
}
---
Compiling this with the current javac yields:
---
$ javac /tmp/Test.java
/tmp/Test.java:7: error: <identifier> expected
s().
^
/tmp/Test.java:7: error: not a statement
s().
^
/tmp/Test.java:8: error: ';' expected
} else {
^
/tmp/Test.java:8: error: 'else' without 'if'
} else {
^
/tmp/Test.java:12: error: ';' expected
String s() {
^
/tmp/Test.java:15: error: reached end of file while parsing
}
^
6 errors
---
This seems like too much errors for a fairly small mistake. The AST structure is also not very nice.
- relates to
-
JDK-8253770 Test tools/javac/parser/JavacParserTest.java fails on Windows after JDK-8253584
-
- Resolved
-
-
JDK-8256149 Weird AST structure for incomplete member select
-
- Resolved
-