mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-18 09:34:34 +07:00
EA-34029
This commit is contained in:
+8
-3
@@ -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<PsiReturnStatement> returnStatements) throws IncorrectOperationException {
|
||||
final PsiReturnStatement statement = ApplicationManager.getApplication().runWriteAction(new Computable<PsiReturnStatement>() {
|
||||
@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<PsiReturnStatement>() {
|
||||
@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);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
+3
-2
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user