diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ConvertReturnStatementsVisitor.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ConvertReturnStatementsVisitor.java index 79eb124284c6..aed8f23003bf 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ConvertReturnStatementsVisitor.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ConvertReturnStatementsVisitor.java @@ -21,6 +21,7 @@ import com.intellij.psi.*; import com.intellij.psi.controlFlow.ReturnStatementsVisitor; import com.intellij.psi.util.PsiTypesUtil; import com.intellij.util.IncorrectOperationException; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.List; @@ -42,6 +43,7 @@ class ConvertReturnStatementsVisitor implements ReturnStatementsVisitor { @Override public void visit(final List returnStatements) throws IncorrectOperationException { final PsiReturnStatement statement = ApplicationManager.getApplication().runWriteAction(new Computable() { + @Override public PsiReturnStatement compute() { return replaceReturnStatements(returnStatements); } @@ -55,18 +57,21 @@ class ConvertReturnStatementsVisitor implements ReturnStatementsVisitor { return myLatestReturn; } - private String generateValue(final PsiElement stopElement) { + private String generateValue(@NotNull PsiElement stopElement) { final PsiVariable variable = mySearcher.getDeclaration(stopElement); return variable != null ? variable.getName() : myDefaultValue; } public PsiReturnStatement createReturnInLastStatement() throws IncorrectOperationException { return ApplicationManager.getApplication().runWriteAction(new Computable() { + @Override public PsiReturnStatement compute() { PsiCodeBlock body = myMethod.getBody(); - final String value = generateValue(body.getRBrace()); + PsiJavaToken rBrace = body.getRBrace(); + if (rBrace == null) return null; + final String value = generateValue(rBrace); PsiReturnStatement returnStatement = (PsiReturnStatement) myFactory.createStatementFromText("return " + value+";", myMethod); - return (PsiReturnStatement) body.addBefore(returnStatement, body.getRBrace()); + return (PsiReturnStatement) body.addBefore(returnStatement, rBrace); } }); } diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/DeclarationSearcher.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/DeclarationSearcher.java index e2347c70d6ff..b31a533bb5df 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/DeclarationSearcher.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/DeclarationSearcher.java @@ -16,6 +16,7 @@ package com.intellij.codeInsight.daemon.impl.quickfix; import com.intellij.psi.*; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.HashMap; @@ -35,7 +36,7 @@ public class DeclarationSearcher { } @Nullable - public PsiVariable getDeclaration(final PsiElement endPositionElement) { + public PsiVariable getDeclaration(@NotNull PsiElement endPositionElement) { final PsiVariable localVariable = getLocalDeclaration(endPositionElement); if (localVariable != null) { return localVariable; @@ -54,7 +55,7 @@ public class DeclarationSearcher { } @Nullable - private PsiVariable getLocalDeclaration(final PsiElement endPositionElement) { + private PsiVariable getLocalDeclaration(@NotNull PsiElement endPositionElement) { final PsiElement parent = endPositionElement.getParent(); // reuse of cache is possible IF requests are done up-to-down. otherwise - not first declaration can be returned