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