/*
* Copyright 2012 Google Inc. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.google.errorprone.bugpatterns.testdata;
import java.math.BigDecimal;
/** @author eaftan@google.com (Eddie Aftandilian) */
class MyClass {
static int STATIC_FIELD = 42;
static int staticMethod() {
return 42;
}
int FIELD = 42;
int method() {
return 42;
}
static class StaticInnerClass {
static final MyClass myClass = new MyClass();
}
}
class MyStaticClass {
static MyClass myClass = new MyClass();
}
public class StaticQualifiedUsingExpressionPositiveCase1 {
public static int staticVar1 = 1;
private StaticQualifiedUsingExpressionPositiveCase1 next;
public static int staticTestMethod() {
return 1;
}
public static Object staticTestMethod2() {
return new Object();
}
public static Object staticTestMethod3(Object x) {
return null;
}
public void test1() {
StaticQualifiedUsingExpressionPositiveCase1 testObj =
new StaticQualifiedUsingExpressionPositiveCase1();
int i;
// BUG: Diagnostic contains: variable staticVar1
// i = staticVar1
i = this.staticVar1;
// BUG: Diagnostic contains: variable staticVar1
// i = staticVar1
i = testObj.staticVar1;
// BUG: Diagnostic contains: variable staticVar1
// i = staticVar1
i = testObj.next.next.next.staticVar1;
}
public void test2() {
int i;
Integer integer = new Integer(1);
// BUG: Diagnostic contains: variable MAX_VALUE
// i = Integer.MAX_VALUE
i = integer.MAX_VALUE;
}
public void test3() {
String s1 = new String();
// BUG: Diagnostic contains: method valueOf
// String s2 = String.valueOf(10)
String s2 = s1.valueOf(10);
// BUG: Diagnostic contains: method valueOf
// s2 = String.valueOf(10)
s2 = new String().valueOf(10);
// BUG: Diagnostic contains: method staticTestMethod
// int i = staticTestMethod()
int i = this.staticTestMethod();
// BUG: Diagnostic contains: method staticTestMethod2
// String s3 = staticTestMethod2().toString
String s3 = this.staticTestMethod2().toString();
// BUG: Diagnostic contains: method staticTestMethod
// i = staticTestMethod()
i = this.next.next.next.staticTestMethod();
}
public void test4() {
BigDecimal decimal = new BigDecimal(1);
// BUG: Diagnostic contains: method valueOf
// BigDecimal decimal2 = BigDecimal.valueOf(1)
BigDecimal decimal2 = decimal.valueOf(1);
}
public static MyClass hiding;
public void test5(MyClass hiding) {
// BUG: Diagnostic contains: method staticTestMethod3
// Object o = staticTestMethod3(this.toString())
Object o = this.staticTestMethod3(this.toString());
// BUG: Diagnostic contains: variable myClass
// x = MyClass.StaticInnerClass.myClass.FIELD;
int x = new MyClass.StaticInnerClass().myClass.FIELD;
// BUG: Diagnostic contains: variable STATIC_FIELD
// x = MyClass.STATIC_FIELD;
x = new MyClass.StaticInnerClass().myClass.STATIC_FIELD;
// BUG: Diagnostic contains: variable hiding
// StaticQualifiedUsingExpressionPositiveCase1.hiding = hiding;
this.hiding = hiding;
// BUG: Diagnostic contains: variable STATIC_FIELD
// x = MyClass.STATIC_FIELD;
x = MyStaticClass.myClass.STATIC_FIELD;
// BUG: Diagnostic contains: method staticMethod
// x = MyClass.staticMethod();
x = MyStaticClass.myClass.staticMethod();
x = MyStaticClass.myClass.FIELD;
x = MyStaticClass.myClass.method();
}
static class Bar {
static int baz = 0;
static int baz() {
return 42;
}
}
static class Foo {
static Bar bar;
}
static void test6() {
Foo foo = new Foo();
// BUG: Diagnostic contains: method baz
// x = Bar.baz();
int x = Foo.bar.baz();
Bar bar = Foo.bar;
// BUG: Diagnostic contains: variable bar
// bar = Foo.bar;
bar = foo.bar;
// BUG: Diagnostic contains: variable baz
// x = Bar.baz;
x = Foo.bar.baz;
}
static class C<T extends String> {
static int foo() {
return 42;
}
}
public void test7() {
// BUG: Diagnostic contains: method foo
// x = C.foo();
int x = new C<String>().foo();
}
}