mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
fix javax nullable/notnull tests (IDEA-125281)
This commit is contained in:
+2
-2
@@ -189,12 +189,12 @@ public final class FieldFromParameterUtils {
|
||||
final NullableNotNullManager manager = NullableNotNullManager.getInstance(project);
|
||||
final PsiAnnotation nullable = manager.getNullableAnnotation(parameter, false);
|
||||
if (nullable != null && !manager.isContainerAnnotation(nullable)) {
|
||||
modifierList.addAfter(factory.createAnnotationFromText("@" + nullable, field), null);
|
||||
modifierList.addAfter(factory.createAnnotationFromText("@" + nullable.getQualifiedName(), field), null);
|
||||
}
|
||||
else if (isFinal) {
|
||||
final PsiAnnotation notNull = manager.getNotNullAnnotation(parameter, false);
|
||||
if (notNull != null && !manager.isContainerAnnotation(notNull)) {
|
||||
modifierList.addAfter(factory.createAnnotationFromText("@" + notNull, field), null);
|
||||
modifierList.addAfter(factory.createAnnotationFromText("@" + notNull.getQualifiedName(), field), null);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@ package com.intellij.codeInspection;
|
||||
import com.intellij.JavaTestUtil;
|
||||
import com.intellij.codeInspection.dataFlow.DataFlowInspection;
|
||||
import com.intellij.testFramework.LightProjectDescriptor;
|
||||
import com.intellij.testFramework.fixtures.JavaCodeInsightTestFixture;
|
||||
import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@@ -258,14 +259,8 @@ public class DataFlowInspectionTest extends LightCodeInsightFixtureTestCase {
|
||||
public void testAccessingSameArrayElements() { doTest(); }
|
||||
|
||||
public void testParametersAreNonnullByDefault() {
|
||||
addJavaxNullabilityAnnotations();
|
||||
|
||||
myFixture.addClass("package javax.annotation;" +
|
||||
"@javax.annotation.meta.TypeQualifierDefault(java.lang.annotation.ElementType.PARAMETER) @javax.annotation.Nonnull " +
|
||||
"public @interface ParametersAreNonnullByDefault {}");
|
||||
myFixture.addClass("package javax.annotation;" +
|
||||
"@javax.annotation.meta.TypeQualifierDefault(java.lang.annotation.ElementType.PARAMETER) @javax.annotation.Nullable " +
|
||||
"public @interface ParametersAreNullableByDefault {}");
|
||||
addJavaxNullabilityAnnotations(myFixture);
|
||||
addJavaxDefaultNullabilityAnnotations(myFixture);
|
||||
|
||||
myFixture.addClass("package foo; public class AnotherPackageNotNull { public static void foo(String s) {}}");
|
||||
myFixture.addFileToProject("foo/package-info.java", "@javax.annotation.ParametersAreNonnullByDefault package foo;");
|
||||
@@ -273,17 +268,26 @@ public class DataFlowInspectionTest extends LightCodeInsightFixtureTestCase {
|
||||
doTest();
|
||||
}
|
||||
|
||||
private void addJavaxNullabilityAnnotations() {
|
||||
myFixture.addClass("package javax.annotation;" +
|
||||
"public @interface Nonnull {}");
|
||||
myFixture.addClass("package javax.annotation.meta;" +
|
||||
"public @interface TypeQualifier {}");
|
||||
myFixture.addClass("package javax.annotation.meta;" +
|
||||
"public @interface TypeQualifierDefault { java.lang.annotation.ElementType[] value() default {};}");
|
||||
public static void addJavaxDefaultNullabilityAnnotations(final JavaCodeInsightTestFixture fixture) {
|
||||
fixture.addClass("package javax.annotation;" +
|
||||
"@javax.annotation.meta.TypeQualifierDefault(java.lang.annotation.ElementType.PARAMETER) @javax.annotation.Nonnull " +
|
||||
"public @interface ParametersAreNonnullByDefault {}");
|
||||
fixture.addClass("package javax.annotation;" +
|
||||
"@javax.annotation.meta.TypeQualifierDefault(java.lang.annotation.ElementType.PARAMETER) @javax.annotation.Nullable " +
|
||||
"public @interface ParametersAreNullableByDefault {}");
|
||||
}
|
||||
|
||||
public static void addJavaxNullabilityAnnotations(final JavaCodeInsightTestFixture fixture) {
|
||||
fixture.addClass("package javax.annotation;" +
|
||||
"public @interface Nonnull {}");
|
||||
fixture.addClass("package javax.annotation;" +
|
||||
"public @interface Nullable {}");
|
||||
fixture.addClass("package javax.annotation.meta;" +
|
||||
"public @interface TypeQualifierDefault { java.lang.annotation.ElementType[] value() default {};}");
|
||||
}
|
||||
|
||||
public void testCustomTypeQualifierDefault() {
|
||||
addJavaxNullabilityAnnotations();
|
||||
addJavaxNullabilityAnnotations(myFixture);
|
||||
myFixture.addClass("package bar;" +
|
||||
"@javax.annotation.meta.TypeQualifierDefault(java.lang.annotation.ElementType.METHOD) @javax.annotation.Nonnull " +
|
||||
"public @interface MethodsAreNotNullByDefault {}");
|
||||
|
||||
+6
-5
@@ -40,8 +40,8 @@ public class NullableStuffInspectionTest extends LightCodeInsightFixtureTestCase
|
||||
}
|
||||
|
||||
public void testHonorSuperParameterDefault() {
|
||||
myFixture.addClass("package javax.annotation; public @interface ParametersAreNonnullByDefault {}");
|
||||
myFixture.addClass("package javax.annotation; public @interface Nullable {}");
|
||||
DataFlowInspectionTest.addJavaxNullabilityAnnotations(myFixture);
|
||||
DataFlowInspectionTest.addJavaxDefaultNullabilityAnnotations(myFixture);
|
||||
myFixture.addFileToProject("foo/package-info.java", "@javax.annotation.ParametersAreNonnullByDefault package foo;");
|
||||
|
||||
myFixture.addClass("import javax.annotation.*; package foo; public interface NullableFunction { void fun(@Nullable Object o); }");
|
||||
@@ -51,7 +51,8 @@ public class NullableStuffInspectionTest extends LightCodeInsightFixtureTestCase
|
||||
}
|
||||
|
||||
public void testHonorThisParameterDefault() {
|
||||
myFixture.addClass("package javax.annotation; public @interface ParametersAreNonnullByDefault {}");
|
||||
DataFlowInspectionTest.addJavaxNullabilityAnnotations(myFixture);
|
||||
DataFlowInspectionTest.addJavaxDefaultNullabilityAnnotations(myFixture);
|
||||
myFixture.addFileToProject("foo/package-info.java", "@javax.annotation.ParametersAreNonnullByDefault package foo;");
|
||||
|
||||
myFixture.configureFromExistingVirtualFile(myFixture.copyFileToProject(getTestName(false) + ".java", "foo/Classes.java"));
|
||||
@@ -60,8 +61,8 @@ public class NullableStuffInspectionTest extends LightCodeInsightFixtureTestCase
|
||||
}
|
||||
|
||||
public void testHonorParameterDefaultInSetters() {
|
||||
myFixture.addClass("package javax.annotation; public @interface ParametersAreNonnullByDefault {}");
|
||||
myFixture.addClass("package javax.annotation; public @interface Nullable {}");
|
||||
DataFlowInspectionTest.addJavaxNullabilityAnnotations(myFixture);
|
||||
DataFlowInspectionTest.addJavaxDefaultNullabilityAnnotations(myFixture);
|
||||
myFixture.addFileToProject("foo/package-info.java", "@javax.annotation.ParametersAreNonnullByDefault package foo;");
|
||||
|
||||
myFixture.configureFromExistingVirtualFile(myFixture.copyFileToProject(getTestName(false) + ".java", "foo/Classes.java"));
|
||||
|
||||
Reference in New Issue
Block a user