I tracked down this crash to a single Wither annotation from Lombok. Haven't checked the GitHub master branch nor any other versions though.
Minimal example is at https://github.com/Ferada/errorprone-test with mvn clean install.
Stacktrace:
/home/olof/workspace/errorprone-test/src/main/java/com/example/Setting.java:10: error: An unhandled exception was thrown by the Error Prone static analysis plugin.
String key;
^
Please report this at https://github.com/google/error-prone/issues/new and include the following:
error-prone version: 2.0.11
Stack Trace:
java.lang.IllegalArgumentException: Invalid range: [163‥-1)
at com.google.common.collect.Range.<init>(Range.java:352)
at com.google.common.collect.Range.create(Range.java:146)
at com.google.common.collect.Range.closedOpen(Range.java:182)
at com.google.errorprone.fixes.Replacement.create(Replacement.java:38)
at com.google.errorprone.fixes.SuggestedFix$ReplacementFix.getReplacement(SuggestedFix.java:365)
at com.google.errorprone.fixes.SuggestedFix.getReplacements(SuggestedFix.java:94)
at com.google.errorprone.fixes.AppliedFix$Applier.apply(AppliedFix.java:67)
at com.google.errorprone.JavacErrorDescriptionListener$1.apply(JavacErrorDescriptionListener.java:51)
...
The crash indicates that the suggest fix logic is seeing an AST node without an end position.
I'm getting this with Lombok 1.16.20 and Error Prone 2.2.0
Still doesn't work with @Wither.
ErrorProne 2.3.1
Lombok 1.16.20
@Value
public static class Payment {
Long id;
// for tests
@Wither
String name;
}
leads to:
error: An unhandled exception was thrown by the Error Prone static analysis plugin.
@Wither
^
Please report this at https://github.com/google/error-prone/issues/new and include the following:
error-prone version: 2.3.1
BugPattern: ReferenceEquality
Stack Trace:
java.lang.IllegalArgumentException: invalid replacement: [5882, -1) (Objects.equals(null, null))
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:458)
at com.google.errorprone.fixes.Replacement.create(Replacement.java:37)
at com.google.errorprone.fixes.SuggestedFix$ReplacementFix.getReplacement(SuggestedFix.java:372)
at com.google.errorprone.fixes.SuggestedFix.getReplacements(SuggestedFix.java:84)
at com.google.errorprone.fixes.AppliedFix$Applier.apply(AppliedFix.java:66)
at com.google.errorprone.JavacErrorDescriptionListener.lambda$new$0(JavacErrorDescriptionListener.java:62)
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
at java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
at com.google.errorprone.JavacErrorDescriptionListener.onDescribed(JavacErrorDescriptionListener.java:76)
at com.google.errorprone.VisitorState.reportMatch(VisitorState.java:160)
at com.google.errorprone.scanner.Scanner.reportMatch(Scanner.java:153)
at com.google.errorprone.scanner.ErrorProneScanner.visitBinary(ErrorProneScanner.java:506)
at com.google.errorprone.scanner.ErrorProneScanner.visitBinary(ErrorProneScanner.java:145)
at com.sun.tools.javac.tree.JCTree$JCBinary.accept(JCTree.java:1993)
at com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82)
at com.google.errorprone.scanner.Scanner.scan(Scanner.java:82)
at com.google.errorprone.scanner.Scanner.scan(Scanner.java:42)
at com.sun.source.util.TreeScanner.visitConditionalExpression(TreeScanner.java:403)
...
Still getting this with Lombok 1.18.6 and Error Prone 2.3.3
Maybe a fix similar to #1135 inside this code will do the trick here
It seems like a fix has been proposed here: https://github.com/google/error-prone/pull/1195
package t;
import lombok.Value;
import lombok.With;
@Value
public class I447 {
Long x;
@With String y;
}
@With String y;
^
error-prone version: 2.5.1
BugPattern: ReferenceEquality
Stack Trace:
java.lang.IllegalArgumentException: invalid replacement: [94, -1) (Objects.equals(null, null))
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:459)
at com.google.errorprone.fixes.Replacement.create(Replacement.java:37)
Most helpful comment
I'm getting this with Lombok 1.16.20 and Error Prone 2.2.0