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;
|
||||
|
||||
public class JetPsiFactory {
|
||||
|
||||
public static ASTNode createValNode(Project project) {
|
||||
JetProperty property = createProperty(project, "val x = 1");
|
||||
return property.getValOrVarNode();
|
||||
@@ -200,4 +201,13 @@ public class JetPsiFactory {
|
||||
JetClass aClass = createClass(project, "class A()");
|
||||
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;
|
||||
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.tree.IElementType;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
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.JetPsiFactory;
|
||||
import org.jetbrains.jet.lang.psi.JetSimpleNameExpression;
|
||||
import org.jetbrains.jet.lang.resolve.BindingContext;
|
||||
import org.jetbrains.jet.lang.resolve.lazy.ResolveSession;
|
||||
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.project.WholeProjectAnalyzerFacade;
|
||||
|
||||
@@ -69,7 +72,18 @@ public class JetSimpleNameReference extends JetPsiReference {
|
||||
|
||||
@Override
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user