IG: do not suggest qualified this expression on method of local class

This commit is contained in:
Bas Leijdekkers
2016-03-17 17:48:55 +01:00
parent 27e6a8821b
commit 36cccb5ced
2 changed files with 22 additions and 2 deletions
@@ -1,5 +1,5 @@
/*
* Copyright 2006-2012 Bas Leijdekkers
* Copyright 2006-2016 Bas Leijdekkers
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -17,6 +17,8 @@ package com.siyeh.ig.style;
import com.intellij.codeInspection.CleanupLocalInspectionTool;
import com.intellij.psi.*;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.util.PsiUtil;
import com.siyeh.InspectionGadgetsBundle;
import com.siyeh.ig.BaseInspection;
import com.siyeh.ig.BaseInspectionVisitor;
@@ -70,9 +72,16 @@ public class UnqualifiedMethodAccessInspection extends BaseInspection implements
return;
}
final PsiClass containingClass = method.getContainingClass();
if (containingClass instanceof PsiAnonymousClass) {
if (containingClass == null) {
return;
}
if (PsiUtil.isLocalOrAnonymousClass(containingClass)) {
final PsiClass expressionClass = PsiTreeUtil.getParentOfType(expression, PsiClass.class);
if (expressionClass == null || !expressionClass.equals(containingClass)) {
// qualified this expression not possible for anonymous or local class
return;
}
}
registerError(expression);
}
}
@@ -14,6 +14,16 @@ public class UnqualifiedMethodAccess extends JPanel {
void foo(String s) {
this.foo();
class A {
void a() {
<warning descr="Instance method call 'a' is not qualified with 'this'">a</warning>();
new Object() {
void b() {
a();
}
};
}
}
}
void anonymous() {
@@ -22,6 +32,7 @@ public class UnqualifiedMethodAccess extends JPanel {
new Object() {
void foo() {
bar();
<warning descr="Instance method call 'foo' is not qualified with 'this'">foo</warning>();
}
};
}