IDEA-120586 @ParametersAreNonnullByDefault support broken

This commit is contained in:
peter
2014-02-11 15:31:13 +01:00
parent b189061b82
commit 581d2b73aa
8 changed files with 138 additions and 88 deletions
@@ -0,0 +1,17 @@
package foo;
import javax.annotation.Nullable;
class C {
@Nullable
private String a;
private String b;
public void setA(String <warning descr="Setter parameter for @Nullable field is annotated @ParametersAreNonnullByDefault">a</warning>) {
this.a = a;
}
public void setB(@Nullable String b) { // doesn't lead to a warning because b field is not a parameter
this.b = b;
}
}
@@ -6,7 +6,7 @@ class B {
public void fun(Object o) {}
};
new AnyFunction() {
public void fun(Object <warning descr="Not annotated parameter overrides @NotNull parameter">o</warning>) {}
public void fun(Object <warning descr="Not annotated parameter overrides @ParametersAreNonnullByDefault parameter">o</warning>) {}
};
}
}
@@ -0,0 +1,13 @@
package foo;
interface A {
void f(double a);
void f2(Object a);
}
class B implements A {
public void f(double a) {
}
public void f2(Object a) {
}
}
@@ -37,7 +37,7 @@ public class NullableStuffInspectionTest extends LightCodeInsightFixtureTestCase
doTest();
}
public void testParametersAreNonnullByDefault() {
public void testHonorSuperParameterDefault() {
myFixture.addClass("package javax.annotation; public @interface ParametersAreNonnullByDefault {}");
myFixture.addClass("package javax.annotation; public @interface Nullable {}");
myFixture.addFileToProject("foo/package-info.java", "@javax.annotation.ParametersAreNonnullByDefault package foo;");
@@ -45,8 +45,26 @@ public class NullableStuffInspectionTest extends LightCodeInsightFixtureTestCase
myFixture.addClass("import javax.annotation.*; package foo; public interface NullableFunction { void fun(@Nullable Object o); }");
myFixture.addClass("package foo; public interface AnyFunction { void fun(Object o); }");
myInspection.REPORT_ANNOTATION_NOT_PROPAGATED_TO_OVERRIDERS = true;
doTest();
}
public void testHonorThisParameterDefault() {
myFixture.addClass("package javax.annotation; public @interface ParametersAreNonnullByDefault {}");
myFixture.addFileToProject("foo/package-info.java", "@javax.annotation.ParametersAreNonnullByDefault package foo;");
myFixture.configureFromExistingVirtualFile(myFixture.copyFileToProject(getTestName(false) + ".java", "foo/Classes.java"));
myFixture.enableInspections(myInspection);
myFixture.checkHighlighting(true, false, true);
}
public void testHonorParameterDefaultInSetters() {
myFixture.addClass("package javax.annotation; public @interface ParametersAreNonnullByDefault {}");
myFixture.addClass("package javax.annotation; public @interface Nullable {}");
myFixture.addFileToProject("foo/package-info.java", "@javax.annotation.ParametersAreNonnullByDefault package foo;");
myFixture.configureFromExistingVirtualFile(myFixture.copyFileToProject(getTestName(false) + ".java", "foo/Classes.java"));
myFixture.enableInspections(myInspection);
myFixture.checkHighlighting(true, false, true);
}
}