From 653d690ee29b15b8f4c2947e9e5278d18ce91b7e Mon Sep 17 00:00:00 2001 From: Tagir Valeev Date: Wed, 29 Apr 2020 15:57:07 +0700 Subject: [PATCH] NullableNotNullManager#findDefaultTypeUseNullability: fix local variables handling We should not use container annotation for top-level local variable type, but may use it for nested ones. GitOrigin-RevId: 507cfd221f073dffc78ccec3fd9ba6b79b888c76 --- .../intellij/codeInsight/NullableNotNullManager.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/java/java-psi-api/src/com/intellij/codeInsight/NullableNotNullManager.java b/java/java-psi-api/src/com/intellij/codeInsight/NullableNotNullManager.java index 57cc56782d84..0925f1edf922 100644 --- a/java/java-psi-api/src/com/intellij/codeInsight/NullableNotNullManager.java +++ b/java/java-psi-api/src/com/intellij/codeInsight/NullableNotNullManager.java @@ -369,7 +369,11 @@ public abstract class NullableNotNullManager { * @param context place in PSI tree * @return default nullability for type-use elements at given place */ - public @Nullable NullabilityAnnotationInfo findDefaultTypeUseNullability(PsiElement context) { + public @Nullable NullabilityAnnotationInfo findDefaultTypeUseNullability(@Nullable PsiElement context) { + if (context == null) return null; + if (context.getParent() instanceof PsiTypeElement && context.getParent().getParent() instanceof PsiLocalVariable) { + return null; + } return findNullabilityDefault(context, PsiAnnotation.TargetType.TYPE_USE); } @@ -381,11 +385,6 @@ public abstract class NullableNotNullManager { @NotNull PsiAnnotation.TargetType @NotNull ... placeTargetTypes) { PsiElement element = place.getParent(); while (element != null) { - if (element instanceof PsiTypeElement && element.getContext() instanceof PsiLocalVariable) { - // Type of local variables is not influenced by container annotations - return null; - } - if (element instanceof PsiModifierListOwner) { NullabilityAnnotationInfo result = getNullityDefault((PsiModifierListOwner)element, placeTargetTypes, place, false); if (result != null) {