Added 'change to backing field' fix

This commit is contained in:
svtk
2011-11-01 19:00:57 +04:00
parent 41c9b7e414
commit a3ef9f9b50
9 changed files with 69 additions and 5 deletions
@@ -56,8 +56,7 @@ public abstract class JetTestCaseBuilder {
resultFilter = new FilenameFilter() {
@Override
public boolean accept(File file, String s) {
if (extensionFilter.accept(file, s) && filter.accept(file, s)) return true;
return false;
return extensionFilter.accept(file, s) && filter.accept(file, s);
}
};
}
@@ -77,7 +76,7 @@ public abstract class JetTestCaseBuilder {
List<File> subdirs = Arrays.asList(files);
Collections.sort(subdirs);
for (File subdir : subdirs) {
suite.addTest(suiteForDirectory(baseDataDir, dataPath + "/" + subdir.getName(), recursive, factory));
suite.addTest(suiteForDirectory(baseDataDir, dataPath + "/" + subdir.getName(), recursive, filter, factory));
}
}
List<File> files = Arrays.asList(dir.listFiles(resultFilter));
@@ -23,4 +23,5 @@ remove.cast=Remove cast
remove.elvis.operator=Remove elvis operator
replace.operation.in.binary.expression=Replace operation in a binary expression
replace.cast.with.static.assert=Replace a cast with a static assert
replace.with.dot.call=Replace with dot call
replace.with.dot.call=Replace with dot call
change.to.backing.field=Change reference to backing field
@@ -0,0 +1,48 @@
package org.jetbrains.jet.plugin.quickfix;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiFile;
import com.intellij.util.IncorrectOperationException;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.diagnostics.DiagnosticWithPsiElement;
import org.jetbrains.jet.lang.psi.JetPsiFactory;
import org.jetbrains.jet.lang.psi.JetSimpleNameExpression;
import org.jetbrains.jet.plugin.JetBundle;
/**
* @author svtk
*/
public class ChangeToBackingFieldFix extends JetIntentionAction<JetSimpleNameExpression> {
public ChangeToBackingFieldFix(@NotNull JetSimpleNameExpression element) {
super(element);
}
@NotNull
@Override
public String getText() {
return JetBundle.message("change.to.backing.field");
}
@NotNull
@Override
public String getFamilyName() {
return JetBundle.message("change.to.backing.field");
}
@Override
public void invoke(@NotNull Project project, Editor editor, PsiFile file) throws IncorrectOperationException {
JetSimpleNameExpression backingField = (JetSimpleNameExpression) JetPsiFactory.createExpression(project, "$" + element.getText());
element.replace(backingField);
}
public static JetIntentionActionFactory<JetSimpleNameExpression> createFactory() {
return new JetIntentionActionFactory<JetSimpleNameExpression>() {
@Override
public JetIntentionAction<JetSimpleNameExpression> createAction(DiagnosticWithPsiElement diagnostic) {
assert diagnostic.getPsiElement() instanceof JetSimpleNameExpression;
return new ChangeToBackingFieldFix((JetSimpleNameExpression) diagnostic.getPsiElement());
}
};
}
}
@@ -105,5 +105,7 @@ public class QuickFixes {
add(Errors.ILLEGAL_MODIFIER, removeModifierFactory);
add(Errors.PUBLIC_MEMBER_SHOULD_SPECIFY_TYPE, AddReturnTypeFix.createFactory());
add(Errors.INITIALIZATION_USING_BACKING_FIELD, ChangeToBackingFieldFix.createFactory());
}
}
@@ -0,0 +1,7 @@
// "Change reference to backing field" "true"
class A() {
val a : Int
{
<caret>$a = 1
}
}
@@ -0,0 +1,7 @@
// "Change reference to backing field" "true"
class A() {
val a : Int
{
<caret>a = 1
}
}
@@ -60,7 +60,7 @@ public class JetQuickFixTest extends LightQuickFixTestCase {
List<String> subDirs = Arrays.asList(quickFixTestsFilter != null ? dir.list(quickFixTestsFilter) : dir.list());
Collections.sort(subDirs);
for (String subDirName : subDirs) {
suite.addTest(JetTestCaseBuilder.suiteForDirectory(getTestDataPathBase(), subDirName, false, fileNameFilter, namedTestFactory));
suite.addTest(JetTestCaseBuilder.suiteForDirectory(getTestDataPathBase(), subDirName, true, fileNameFilter, namedTestFactory));
}
return suite;