diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/VariableAccessFromInnerClassJava10Fix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/VariableAccessFromInnerClassJava10Fix.java index e8e5d46acc9d..bdca35783c50 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/VariableAccessFromInnerClassJava10Fix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/VariableAccessFromInnerClassJava10Fix.java @@ -27,7 +27,6 @@ import java.util.LinkedHashSet; import java.util.List; import java.util.Objects; -import static com.intellij.util.ObjectUtils.assertNotNull; import static com.intellij.util.ObjectUtils.tryCast; import static java.util.Collections.emptyList; @@ -40,10 +39,10 @@ public class VariableAccessFromInnerClassJava10Fix extends BaseIntentionAction { }; private static final LinkedHashSet ourSuggestions = new LinkedHashSet<>(Arrays.asList(NAMES)); - private final SmartPsiElementPointer myContext; + private final PsiElement myContext; public VariableAccessFromInnerClassJava10Fix(PsiElement context) { - myContext = SmartPointerManager.createPointer(context); + myContext = context; } @Nls(capitalization = Nls.Capitalization.Sentence) @@ -56,7 +55,7 @@ public class VariableAccessFromInnerClassJava10Fix extends BaseIntentionAction { @Override public boolean isAvailable(@NotNull Project project, Editor editor, PsiFile file) { if (!PsiUtil.isLanguageLevel10OrHigher(file)) return false; - if (myContext.getElement() == null) return false; + if (!myContext.isValid()) return false; PsiReferenceExpression reference = tryCast(myContext, PsiReferenceExpression.class); if (reference == null) return false; PsiLocalVariable variable = tryCast(reference.resolve(), PsiLocalVariable.class); @@ -69,7 +68,7 @@ public class VariableAccessFromInnerClassJava10Fix extends BaseIntentionAction { (variable.getTypeElement().isInferredType() && type instanceof PsiClassType && ((PsiClassType)type).resolve() instanceof PsiAnonymousClass) - ) { + ) { return false; } setText(QuickFixBundle.message("convert.variable.to.field.in.anonymous.class.fix.name", name)); @@ -78,12 +77,10 @@ public class VariableAccessFromInnerClassJava10Fix extends BaseIntentionAction { @Override public void invoke(@NotNull Project project, Editor editor, PsiFile file) throws IncorrectOperationException { - PsiElement context = myContext.getElement(); - assertNotNull(context); - if (!FileModificationService.getInstance().preparePsiElementsForWrite(context)) return; + if (!FileModificationService.getInstance().preparePsiElementsForWrite(myContext)) return; WriteCommandAction.runWriteCommandAction(project, () -> { - if (context instanceof PsiReferenceExpression && context.isValid()) { - PsiReferenceExpression referenceExpression = (PsiReferenceExpression)context; + if (myContext instanceof PsiReferenceExpression && myContext.isValid()) { + PsiReferenceExpression referenceExpression = (PsiReferenceExpression)myContext; PsiLocalVariable variable = tryCast(referenceExpression.resolve(), PsiLocalVariable.class); if (variable == null) return; PsiElementFactory factory = JavaPsiFacade.getElementFactory(project); @@ -91,7 +88,7 @@ public class VariableAccessFromInnerClassJava10Fix extends BaseIntentionAction { final String variableText = getFieldText(variable, factory, initializer); - PsiLambdaExpression lambdaExpression = PsiTreeUtil.getParentOfType(context, PsiLambdaExpression.class); + PsiLambdaExpression lambdaExpression = PsiTreeUtil.getParentOfType(myContext, PsiLambdaExpression.class); if (lambdaExpression == null) return; DeclarationInfo declarationInfo = DeclarationInfo.findExistingAnonymousClass(variable);