"Reuse variable declaration" no more suitable for resource variables

This commit is contained in:
Roman Shevchenko
2011-02-24 21:35:40 +01:00
parent 9e0bef7dcd
commit e4eacc4451
4 changed files with 5 additions and 40 deletions
@@ -608,7 +608,9 @@ public class HighlightUtil {
if (isIncorrect) {
String description = JavaErrorMessages.message("variable.already.defined", name);
HighlightInfo highlightInfo = HighlightInfo.createHighlightInfo(HighlightInfoType.ERROR, identifier, description);
QuickFixAction.registerQuickFixAction(highlightInfo, new ReuseVariableDeclarationFix(variable, identifier));
if (!(variable instanceof PsiResourceVariable)) {
QuickFixAction.registerQuickFixAction(highlightInfo, new ReuseVariableDeclarationFix(variable, identifier));
}
return highlightInfo;
}
return null;
@@ -57,7 +57,6 @@ public class ReuseVariableDeclarationFix implements IntentionAction {
return myVariable != null &&
myVariable.isValid() &&
myVariable instanceof PsiLocalVariable &&
!(myVariable.getParent() instanceof PsiResourceVariable && myVariable.getInitializer() == null) &&
previousVariable != null &&
Comparing.equal(previousVariable.getType(), myVariable.getType()) &&
myIdentifier != null &&
@@ -78,17 +77,9 @@ public class ReuseVariableDeclarationFix implements IntentionAction {
}
PsiUtil.setModifierProperty(refVariable, PsiModifier.FINAL, false);
final PsiElementFactory factory = JavaPsiFacade.getInstance(myVariable.getProject()).getElementFactory();
final PsiElement replacement;
final PsiElement parent = myVariable.getParent();
if (parent instanceof PsiResourceVariable) {
replacement = factory.createResourceFromText(myVariable.getName() + " = " + initializer.getText(), null);
}
else {
replacement = factory.createStatementFromText(myVariable.getName() + " = " + initializer.getText() + ";", null);
}
parent.replace(replacement);
final PsiElement statement = factory.createStatementFromText(myVariable.getName() + " = " + initializer.getText() + ";", null);
myVariable.getParent().replace(statement);
}
@Nullable
@@ -1,14 +0,0 @@
// "Reuse previous variable 'r' declaration" "true"
import java.io.*;
class a {
static class MyResource implements AutoCloseable {
public void close() { }
}
void m() {
MyResource r;
try (r = new MyResource()) {
}
}
}
@@ -1,14 +0,0 @@
// "Reuse previous variable 'r' declaration" "true"
import java.io.*;
class a {
static class MyResource implements AutoCloseable {
public void close() { }
}
void m() {
MyResource r;
try (MyResource <caret>r = new MyResource()) {
}
}
}