blob: f3393eb74e24b77c8300a240132bd5ace06ce5ba [file] [log] [blame]
package com.siyeh.ig.style;
import com.intellij.codeInspection.LocalInspectionTool;
import com.siyeh.ig.LightInspectionTestCase;
public class UnnecessaryThisInspectionTest extends LightInspectionTestCase {
public void testSimpleField() {
doTest("class A {" +
" private int x;" +
" void m() {" +
" /*'this' is unnecessary in this context*/this/**/.x = 3;" +
" }" +
"}");
}
public void testSimpleMethod() {
doTest("class A {" +
" void x() {}" +
" void m() {" +
" /*'this' is unnecessary in this context*/this/**/.x();" +
" }" +
"}");
}
public void testQualifiedThisNeeded() {
doTest("class A {" +
" public void foo(String s) {}" +
" class D{" +
" public void foo(String s) {}" +
" }" +
" class C extends D {" +
" class Box {" +
" void bar() {" +
" A.this.foo(\"\");" +
" }" +
" }" +
" }" +
"}");
}
public void testQualifiedThisNeeded2() {
doTest("class A {" +
" private int x;" +
" public void x() {}" +
" class X {" +
" private int x;" +
" public void x(){}" +
" void y() {" +
" A.this.x = 4;" +
" A.this.x();" +
" }" +
" }" +
"}");
}
public void testQualifiedThisNotNeeded() {
doTest("class A {" +
" public void foo(String s) {}" +
" class D{" +
" private void foo(String s) {}" +
" }" +
" class C extends D {" +
" class Box {" +
" void bar() {" +
" /*'A.this' is unnecessary in this context*/A.this/**/.foo(\"\");" +
" }" +
" }" +
" }" +
"}");
}
public void testQualifiedThisDifferentPackage() {
myFixture.addClass("package foo;" +
"public abstract class Foo {" +
" protected void foo() {}" +
"}");
doTest("package bar;" +
"import foo.Foo;" +
"final class Bar extends Foo {" +
" public void foo() {}" +
" final class InnerBar extends Foo {" +
" void bar() {" +
" Bar.this.foo(); " +
" }" +
" }" +
"}");
}
/**
* IDEA-42154
*/
public void testCatchBlockParameter() {
doTest("class A {" +
" private Throwable throwable = null;" +
" public void method() {" +
" try {" +
" } catch (Throwable throwable) {" +
" this.throwable = throwable;" +
" throwable.printStackTrace();" +
" }" +
" }" +
"}");
}
public void testForLoopParameter() {
doTest("class A {" +
" private int i = 0;" +
" void m() {" +
" for (int i = 0; i < 10; i++) {" +
" this.i = 3;" +
" }" +
" }" +
"}");
}
public void testMethodParameter() {
doTest("class A {" +
" private int i = 1;" +
" void m(int i) {" +
" this.i = 3;" +
" }" +
"}");
}
public void testLocalVariable() {
doTest("class A {" +
" private int i = 2;" +
" void foo() {" +
" int i = 3;" +
" this.i=4;" +
" }" +
"}");
}
public void testLambdaMethodRefSelfRefs() {
doTest("class Main {" +
" Runnable lambdaExpression = () -> System.out.println(this.lambdaExpression);" +
" Runnable methodReference = this.methodReference::run;" +
"}");
}
@Override
protected LocalInspectionTool getInspection() {
return new UnnecessaryThisInspection();
}
}