mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
NullableStuffInspection: don't check hierarchy for @NotNull on primitive type (IDEA-217864)
GitOrigin-RevId: 0ecb2dd0809071c98c5e0ae25d7d82020af955a1
This commit is contained in:
committed by
intellij-monorepo-bot
parent
349df3fdce
commit
d03ceed722
+10
-6
@@ -739,6 +739,7 @@ public class NullableStuffInspectionBase extends AbstractBaseJavaLocalInspection
|
||||
PsiParameter[] parameters = method.getParameterList().getParameters();
|
||||
for (int i = 0; i < parameters.length; i++) {
|
||||
PsiParameter parameter = parameters[i];
|
||||
if (parameter.getType() instanceof PsiPrimitiveType) continue;
|
||||
|
||||
List<PsiParameter> superParameters = new ArrayList<>();
|
||||
for (PsiMethod superMethod : superMethods) {
|
||||
@@ -843,15 +844,18 @@ public class NullableStuffInspectionBase extends AbstractBaseJavaLocalInspection
|
||||
@NotNull NullableNotNullManager nullableManager) {
|
||||
PsiParameter[] parameters = method.getParameterList().getParameters();
|
||||
if (REPORT_ANNOTATION_NOT_PROPAGATED_TO_OVERRIDERS) {
|
||||
boolean[] parameterAnnotated = new boolean[parameters.length];
|
||||
boolean[] checkParameter = new boolean[parameters.length];
|
||||
boolean[] parameterQuickFixSuggested = new boolean[parameters.length];
|
||||
boolean hasAnnotatedParameter = false;
|
||||
for (int i = 0; i < parameters.length; i++) {
|
||||
PsiParameter parameter = parameters[i];
|
||||
parameterAnnotated[i] = isNotNullNotInferred(parameter, false, false) && !hasInheritableNotNull(parameter);
|
||||
hasAnnotatedParameter |= parameterAnnotated[i];
|
||||
checkParameter[i] = isNotNullNotInferred(parameter, false, false) &&
|
||||
!hasInheritableNotNull(parameter) &&
|
||||
!(parameter.getType() instanceof PsiPrimitiveType);
|
||||
hasAnnotatedParameter |= checkParameter[i];
|
||||
}
|
||||
if (hasAnnotatedParameter || annotated.isDeclaredNotNull && !hasInheritableNotNull(method)) {
|
||||
boolean checkReturnType = annotated.isDeclaredNotNull && !hasInheritableNotNull(method) && !(method.getReturnType() instanceof PsiPrimitiveType);
|
||||
if (hasAnnotatedParameter || checkReturnType) {
|
||||
final String defaultNotNull = nullableManager.getDefaultNotNull();
|
||||
final boolean superMethodApplicable = AnnotationUtil.isAnnotatingApplicable(method, defaultNotNull);
|
||||
PsiMethod[] overridings =
|
||||
@@ -861,7 +865,7 @@ public class NullableStuffInspectionBase extends AbstractBaseJavaLocalInspection
|
||||
if (shouldSkipOverriderAsGenerated(overriding)) continue;
|
||||
|
||||
if (!methodQuickFixSuggested
|
||||
&& annotated.isDeclaredNotNull
|
||||
&& checkReturnType
|
||||
&& !isNotNullNotInferred(overriding, false, false)
|
||||
&& (isNullableNotInferred(overriding, false) || !isNullableNotInferred(overriding, true))
|
||||
&& AddAnnotationPsiFix.isAvailable(overriding, defaultNotNull)) {
|
||||
@@ -888,7 +892,7 @@ public class NullableStuffInspectionBase extends AbstractBaseJavaLocalInspection
|
||||
for (int i = 0; i < psiParameters.length; i++) {
|
||||
if (parameterQuickFixSuggested[i]) continue;
|
||||
PsiParameter parameter = psiParameters[i];
|
||||
if (parameterAnnotated[i] &&
|
||||
if (checkParameter[i] &&
|
||||
!isNotNullNotInferred(parameter, false, false) &&
|
||||
!isNullableNotInferred(parameter, false) &&
|
||||
AddAnnotationPsiFix.isAvailable(parameter, defaultNotNull)) {
|
||||
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
class HelperClazz {
|
||||
|
||||
abstract class ClassA {
|
||||
|
||||
<warning descr="Primitive type members cannot be annotated">@NotNull</warning>
|
||||
abstract void aMethod();
|
||||
|
||||
abstract void bMethod(<warning descr="Primitive type members cannot be annotated">@NotNull</warning> int a);
|
||||
}
|
||||
|
||||
class ClassB extends ClassA {
|
||||
|
||||
@Override
|
||||
void aMethod() {}
|
||||
|
||||
@Override
|
||||
void bMethod(int a) {}
|
||||
}
|
||||
}
|
||||
+5
@@ -97,6 +97,11 @@ public class NullableStuffInspectionTest extends LightJavaCodeInsightFixtureTest
|
||||
doTest();
|
||||
}
|
||||
|
||||
public void testNoOverridingChecksOnInapplicableAnnotations() {
|
||||
myInspection.REPORT_ANNOTATION_NOT_PROPAGATED_TO_OVERRIDERS = true;
|
||||
doTest();
|
||||
}
|
||||
|
||||
public void testOverriddenMethodsWithDefaults() {
|
||||
DataFlowInspectionTest.addJavaxNullabilityAnnotations(myFixture);
|
||||
DataFlowInspectionTest.addJavaxDefaultNullabilityAnnotations(myFixture);
|
||||
|
||||
Reference in New Issue
Block a user