-
Notifications
You must be signed in to change notification settings - Fork 742
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
NullPointerException in SuggestedFixes.compilesWithFix #1873
Comments
Bread crumbs for future debugging:
is That's sort of surprising, I wonder which part of that ended up being |
Hi @cushon thanks for looking at this. Per API docs, Thanks! |
Thanks, that makes sense. If you're willing to send a PR that'd be great. I think we might want to treat the case where re: improved NPE messages, just for fun this is what JDK 15 gives us:
I was curious what specific diagnostic was causing that problem, since even though it's specified that way I thought they were usually associated with files. Rebuilding @ 2.4.0 with: diff --git a/check_api/src/main/java/com/google/errorprone/fixes/SuggestedFixes.java b/check_api/src/main/java/com/google/errorprone/fixes/SuggestedFixes.java
index 315b5e58e..360dade69 100644
--- a/check_api/src/main/java/com/google/errorprone/fixes/SuggestedFixes.java
+++ b/check_api/src/main/java/com/google/errorprone/fixes/SuggestedFixes.java
@@ -1210,6 +1210,9 @@ public class SuggestedFixes {
boolean warningInSameCompilationUnit = false;
for (Diagnostic<? extends JavaFileObject> diagnostic : diagnosticListener.getDiagnostics()) {
warningIsError |= diagnostic.getCode().equals("compiler.err.warnings.and.werror");
+ if (diagnostic.getSource() == null) {
+ throw new AssertionError(diagnostic);
+ }
boolean diagnosticInSameCompilationUnit =
diagnostic.getSource().toUri().equals(modifiedFileUri);
switch (diagnostic.getKind()) { Shows that the underlying diagnostic was:
Somewhat interestingly the NPE doesn't reproduce with Error Prone built at head, but adding the null-check anyways still seems like a good idea. |
Nice use of the richer NPE error messages and interesting find on the underlying warning triggering this specific diagnostic case (slightly related to immutables/immutables#291 ). I created #2064 for the quick NPE fix, though haven't had time to see if there's a good way to unit test this without some major refactoring as |
In some cases, compiler diagnostics may not have an associated source, and for testing whether suggested fixes compile these should be treated as originating from the same compilation unit of the suggested fix. Fixes google#1873 Fixes google#2064 COPYBARA_INTEGRATE_REVIEW=google#2064 from schlosna:ds/1873-SuggestedFixes-NPE ddd042b PiperOrigin-RevId: 350812718
Description of the problem:
While upgrading to error-prone 2.4.0 as part of palantir/atlasdb#5044 I encountered the following
NullPointerException
from error-prone.com.palantir.baseline.errorprone.LambdaMethodReference
usesSuggestedFixes.compilesWithFix
as part of determining whether a suggested fix for a lambda that can be converted to a method reference.Bugs: what's the simplest, easiest way to reproduce this bug? Please provide a minimal example if possible.
What version of Error Prone are you using?
2.4.0
Reproduces with OpenJDK 15 and OpenJDK 8
Have you found anything relevant by searching the web?
This seems similar to some error-prone issues:
The text was updated successfully, but these errors were encountered: