Resolve static methods of enum in front-end

Up to this point, front-end did not suspect that there could be classes which
have both a class object and a package for static members. Since this became
possible for enums loaded from Java binaries (enum entries and valueOf()/
values() are placed into the class object, and every other static member into
the package), we adjust the corresponding scope to also include members from
the corresponding package

 #KT-2990 Fixed
This commit is contained in:
Alexander Udalov
2013-01-18 21:48:19 +04:00
parent 7368ca09b9
commit a9776016a9
6 changed files with 77 additions and 11 deletions
@@ -0,0 +1,12 @@
package test;
import java.util.Set;
import java.util.EnumSet;
public enum staticField {
INSTANCE;
public static int foo = 42;
public static final Set<staticField> INSTANCES = EnumSet.of(INSTANCE);
}
@@ -0,0 +1,12 @@
import test.staticField as E
fun box(): String {
val instances = E.INSTANCES
if (E.foo != 42)
return "Wrong foo ${E.foo}"
if (instances.size() != 1)
return "Wrong size ${instances.size()}"
if (E.INSTANCES.iterator().next() != E.INSTANCE)
return "Wrong instance ${E.INSTANCES.iterator().next()}"
return "OK"
}
@@ -0,0 +1,9 @@
package test;
public enum staticMethod {
ENTRY;
public static String foo() {
return "OK";
}
}
@@ -0,0 +1 @@
fun box() = test.staticMethod.foo()