SSR: fix bad psi tree when replacing parameter

This commit is contained in:
Bas Leijdekkers
2016-03-05 11:46:15 +01:00
parent c7595ad7b4
commit 613871ca43
2 changed files with 21 additions and 0 deletions
@@ -284,6 +284,16 @@ public class JavaReplaceHandler extends StructuralReplaceHandler {
}
else if (statements.length == 1) {
PsiElement replacement = getMatchExpr(statements[0], elementToReplace);
if (elementToReplace instanceof PsiParameter && replacement instanceof PsiLocalVariable) {
final PsiVariable variable = (PsiVariable)replacement;
final PsiIdentifier identifier = variable.getNameIdentifier();
assert identifier != null;
final String text = variable.getText();
// chop off unneeded semicolons & initializers
final String parameterText = text.substring(0, identifier.getStartOffsetInParent() + identifier.getTextLength());
replacement = JavaPsiFacade.getElementFactory(variable.getProject()).createParameterFromText(parameterText, variable);
}
copyUnmatchedElements(elementToReplace, replacement);
replacement = handleSymbolReplacement(replacement, elementToReplace);