aoqi@0: /* aoqi@0: * @test /nodynamiccopyright/ aoqi@0: * @bug 4880220 aoqi@0: * @summary Add a warning when accessing a static method via an reference aoqi@0: * aoqi@0: * @compile/ref=T4880220.empty.out T4880220.java aoqi@0: * @compile/ref=T4880220.warn.out -XDrawDiagnostics -Xlint:static T4880220.java aoqi@0: * @compile/ref=T4880220.warn.out -XDrawDiagnostics -Xlint:all T4880220.java aoqi@0: * @compile/ref=T4880220.empty.out -XDrawDiagnostics -Xlint:all,-static T4880220.java aoqi@0: * @compile/ref=T4880220.error.out/fail -XDrawDiagnostics -Werror -Xlint:all T4880220.java aoqi@0: */ aoqi@0: aoqi@0: public class T4880220 { aoqi@0: void m1() { aoqi@0: int good_1 = C.m(); aoqi@0: int good_2 = C.f; aoqi@0: int good_3 = C.x; aoqi@0: aoqi@0: C c = new C(); aoqi@0: int bad_inst_1 = c.m(); aoqi@0: int bad_inst_2 = c.f; aoqi@0: int bad_inst_3 = c.x; aoqi@0: aoqi@0: int bad_expr_1 = c().m(); aoqi@0: int bad_expr_2 = c().f; aoqi@0: int bad_expr_3 = c().x; aoqi@0: } aoqi@0: aoqi@0: void m2() { aoqi@0: Class good_1 = C.class; aoqi@0: Class good_2 = C[].class; aoqi@0: } aoqi@0: aoqi@0: C c() { aoqi@0: return new C(); aoqi@0: } aoqi@0: aoqi@0: static class C { aoqi@0: static int m() { return 0; } aoqi@0: static int f; aoqi@0: static final int x = 3; aoqi@0: } aoqi@0: }