create from usage: ensure that refs for methods/locals are not mixed (IDEA-195066)

This commit is contained in:
Anna.Kozlova
2018-07-05 16:29:28 +02:00
parent 8e49a997f8
commit d612b2c65b
3 changed files with 27 additions and 1 deletions

View File

@@ -500,7 +500,8 @@ public class CreateFromUsageUtils {
final List<PsiReferenceExpression> result = new ArrayList<>();
JavaRecursiveElementWalkingVisitor visitor = new JavaRecursiveElementWalkingVisitor() {
@Override public void visitReferenceExpression(PsiReferenceExpression expr) {
if (expression instanceof PsiReferenceExpression) {
if (expression instanceof PsiReferenceExpression &&
(expr.getParent() instanceof PsiMethodCallExpression == expression.getParent() instanceof PsiMethodCallExpression)) {
if (Comparing.equal(expr.getReferenceName(), ((PsiReferenceExpression)expression).getReferenceName()) && !isValidReference(expr, false)) {
result.add(expr);
}

View File

@@ -0,0 +1,13 @@
// "Create local variable 'a'" "true"
class C {
C builder() {
return this;
}
void foo() {
String a;
builder().a(a).intValue();
}
Integer a(String s) {}
}

View File

@@ -0,0 +1,12 @@
// "Create local variable 'a'" "true"
class C {
C builder() {
return this;
}
void foo() {
builder().a(<caret>a).intValue();
}
Integer a(String s) {}
}