OpenClover 4.5.0 fails to instrument code with "unexpected token: record" error
Closed this issue · 1 comments
marek-parfianowicz commented
Environment:
- OpenClover 4.5.0
- Java source code level 1.7-15
Behaviour:
Instrumentation fails with an error like the following.
com.atlassian.clover.api.CloverException: Abc.java:41:46:unexpected token: record
at com.atlassian.clover.instr.java.Instrumenter.instrument (Instrumenter.java:160)
at com.atlassian.clover.CloverInstr.execute (CloverInstr.java:110)
at com.atlassian.clover.CloverInstr.mainImpl (CloverInstr.java:86)
...
Caused by: clover.antlr.NoViableAltException: unexpected token: record
at com.atlassian.clover.instr.java.JavaRecognizer.classOrInterfaceType (JavaRecognizer.java:1619)
at com.atlassian.clover.instr.java.JavaRecognizer.classTypeSpec (JavaRecognizer.java:1520)
at com.atlassian.clover.instr.java.JavaRecognizer.typeSpec (JavaRecognizer.java:1481)
...```
**Cause:**
OpenClover 4.5.0 supports instrumentation of `record` types (introduced in Java 14-16). In case code written in older Java uses `record` word as a name of a symbol (variable, method), instrumentation fails.
**Expected behaviour:**
OpenClover should correctly detect Java source level and do not treat `record` as a keyword for versions prior to 16.
**Workaround:**
Rename a symbol (method/variable).
marek-parfianowicz commented
PR #208