KT-2255, KT-3032 Repair renaming in JetSimpleNameReference
This commit is contained in:
committed by
Andrey Breslav
parent
2201e63031
commit
e4d33e386e
@@ -33,6 +33,7 @@ import org.jetbrains.jet.plugin.JetFileType;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class JetPsiFactory {
|
public class JetPsiFactory {
|
||||||
|
|
||||||
public static ASTNode createValNode(Project project) {
|
public static ASTNode createValNode(Project project) {
|
||||||
JetProperty property = createProperty(project, "val x = 1");
|
JetProperty property = createProperty(project, "val x = 1");
|
||||||
return property.getValOrVarNode();
|
return property.getValOrVarNode();
|
||||||
@@ -200,4 +201,13 @@ public class JetPsiFactory {
|
|||||||
JetClass aClass = createClass(project, "class A()");
|
JetClass aClass = createClass(project, "class A()");
|
||||||
return aClass.findElementAt(7).getParent();
|
return aClass.findElementAt(7).getParent();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static JetSimpleNameExpression createClassLabel(Project project, @NotNull String labelName) {
|
||||||
|
JetThisExpression expression = (JetThisExpression) createExpression(project, "this@" + labelName);
|
||||||
|
return expression.getTargetLabel();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static JetExpression createFieldIdentifier(Project project, @NotNull String fieldName) {
|
||||||
|
return createExpression(project, "$" + fieldName);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,17 +16,20 @@
|
|||||||
|
|
||||||
package org.jetbrains.jet.plugin.references;
|
package org.jetbrains.jet.plugin.references;
|
||||||
|
|
||||||
|
import com.intellij.openapi.project.Project;
|
||||||
import com.intellij.openapi.util.TextRange;
|
import com.intellij.openapi.util.TextRange;
|
||||||
import com.intellij.psi.PsiElement;
|
import com.intellij.psi.PsiElement;
|
||||||
|
import com.intellij.psi.tree.IElementType;
|
||||||
import com.intellij.util.IncorrectOperationException;
|
import com.intellij.util.IncorrectOperationException;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.jet.plugin.codeInsight.TipsManager;
|
|
||||||
import org.jetbrains.jet.lang.psi.JetFile;
|
import org.jetbrains.jet.lang.psi.JetFile;
|
||||||
import org.jetbrains.jet.lang.psi.JetPsiFactory;
|
import org.jetbrains.jet.lang.psi.JetPsiFactory;
|
||||||
import org.jetbrains.jet.lang.psi.JetSimpleNameExpression;
|
import org.jetbrains.jet.lang.psi.JetSimpleNameExpression;
|
||||||
import org.jetbrains.jet.lang.resolve.BindingContext;
|
import org.jetbrains.jet.lang.resolve.BindingContext;
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.ResolveSession;
|
import org.jetbrains.jet.lang.resolve.lazy.ResolveSession;
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.ResolveSessionUtils;
|
import org.jetbrains.jet.lang.resolve.lazy.ResolveSessionUtils;
|
||||||
|
import org.jetbrains.jet.lexer.JetTokens;
|
||||||
|
import org.jetbrains.jet.plugin.codeInsight.TipsManager;
|
||||||
import org.jetbrains.jet.plugin.completion.DescriptorLookupConverter;
|
import org.jetbrains.jet.plugin.completion.DescriptorLookupConverter;
|
||||||
import org.jetbrains.jet.plugin.project.WholeProjectAnalyzerFacade;
|
import org.jetbrains.jet.plugin.project.WholeProjectAnalyzerFacade;
|
||||||
|
|
||||||
@@ -69,7 +72,18 @@ public class JetSimpleNameReference extends JetPsiReference {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PsiElement handleElementRename(String newElementName) throws IncorrectOperationException {
|
public PsiElement handleElementRename(String newElementName) throws IncorrectOperationException {
|
||||||
PsiElement element = JetPsiFactory.createNameIdentifier(myExpression.getProject(), newElementName);
|
IElementType type = myExpression.getReferencedNameElementType();
|
||||||
|
Project project = myExpression.getProject();
|
||||||
|
PsiElement element;
|
||||||
|
if (JetTokens.FIELD_IDENTIFIER == type) {
|
||||||
|
element = JetPsiFactory.createFieldIdentifier(project, newElementName);
|
||||||
|
}
|
||||||
|
else if (JetTokens.LABEL_IDENTIFIER == type) {
|
||||||
|
element = JetPsiFactory.createClassLabel(project, newElementName);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
element = JetPsiFactory.createNameIdentifier(project, newElementName);
|
||||||
|
}
|
||||||
return myExpression.getReferencedNameElement().replace(element);
|
return myExpression.getReferencedNameElement().replace(element);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user