Fix #333 Nullaway init suppression issue (#343)
diff --git a/nullaway/src/main/java/com/uber/nullaway/NullAway.java b/nullaway/src/main/java/com/uber/nullaway/NullAway.java
index 7e4176f..30a2b94 100644
--- a/nullaway/src/main/java/com/uber/nullaway/NullAway.java
+++ b/nullaway/src/main/java/com/uber/nullaway/NullAway.java
@@ -1433,6 +1433,9 @@
ASTHelpers.getSymbol(entities.instanceInitializerMethods().iterator().next());
}
for (Symbol uninitField : notInitializedAtAll) {
+ if (errorBuilder.symbolHasSuppressInitializationWarningsAnnotation(uninitField)) {
+ continue;
+ }
if (singleInitializerMethod != null) {
// report it on the initializer
errorFieldsForInitializer.put(singleInitializerMethod, uninitField);
diff --git a/nullaway/src/test/resources/com/uber/nullaway/testdata/CheckFieldInitNegativeCases.java b/nullaway/src/test/resources/com/uber/nullaway/testdata/CheckFieldInitNegativeCases.java
index e047c3b..9685f79 100644
--- a/nullaway/src/test/resources/com/uber/nullaway/testdata/CheckFieldInitNegativeCases.java
+++ b/nullaway/src/test/resources/com/uber/nullaway/testdata/CheckFieldInitNegativeCases.java
@@ -302,4 +302,21 @@
@Initializer
static void init() {}
}
+
+ public class SuppressWarningsE {
+
+ @SuppressWarnings("NullAway.Init")
+ private Object f;
+
+ SuppressWarningsE(final Object f) {
+ this.setF(f);
+ }
+
+ @SuppressWarnings("NullAway.Init")
+ protected SuppressWarningsE() {}
+
+ public void setF(final Object f) {
+ this.f = f;
+ }
+ }
}