Resolve "values" and "valueOf" in enum class object
Import enum class's static scope into its class object's member scope
This commit is contained in:
+3
-1
@@ -81,10 +81,12 @@ public class MutableClassDescriptor extends ClassDescriptorBase implements Class
|
||||
.changeLockLevel(WritableScope.LockLevel.BOTH);
|
||||
this.scopeForMemberResolution = new WritableScopeImpl(scopeForSupertypeResolution, this, redeclarationHandler, "MemberResolution")
|
||||
.changeLockLevel(WritableScope.LockLevel.BOTH);
|
||||
if (getKind() == ClassKind.TRAIT) {
|
||||
|
||||
if (kind == ClassKind.TRAIT) {
|
||||
setUpScopeForInitializers(this);
|
||||
}
|
||||
|
||||
scopeForMemberResolution.importScope(staticScope);
|
||||
scopeForMemberResolution.addLabeledDeclaration(this);
|
||||
}
|
||||
|
||||
|
||||
+3
-1
@@ -255,7 +255,9 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements ClassDes
|
||||
thisScope,
|
||||
getScopeForMemberLookup(),
|
||||
getScopeForClassHeaderResolution(),
|
||||
classObjectAdapterScope);
|
||||
classObjectAdapterScope,
|
||||
getStaticScope()
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
enum class E {
|
||||
ENTRY
|
||||
|
||||
class object {
|
||||
fun foo(): E = ENTRY
|
||||
fun bar(): Array<E> = values()
|
||||
fun baz(): E = valueOf("ENTRY")
|
||||
val valuez = values()
|
||||
}
|
||||
|
||||
fun oof(): E = ENTRY
|
||||
fun rab(): Array<E> = values()
|
||||
fun zab(): E = valueOf("ENTRY")
|
||||
}
|
||||
|
||||
fun foo() = E.ENTRY
|
||||
fun bar() = E.values()
|
||||
fun baz() = E.valueOf("ENTRY")
|
||||
@@ -3826,6 +3826,11 @@ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest {
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("valuesValueOfAndEntriesAccessibility.kt")
|
||||
public void testValuesValueOfAndEntriesAccessibility() throws Exception {
|
||||
doTest("compiler/testData/diagnostics/tests/enum/valuesValueOfAndEntriesAccessibility.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("compiler/testData/diagnostics/tests/enum/inner")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
@RunWith(org.jetbrains.jet.JUnit3RunnerWithInners.class)
|
||||
|
||||
@@ -3,7 +3,14 @@ enum class E {
|
||||
|
||||
class object {
|
||||
fun foo(): E = ENTRY
|
||||
fun bar(): Array<E> = values()
|
||||
fun baz(): E = valueOf("ENTRY")
|
||||
val valuez = values()
|
||||
}
|
||||
|
||||
fun oof(): E = ENTRY
|
||||
fun rab(): Array<E> = values()
|
||||
fun zab(): E = valueOf("ENTRY")
|
||||
}
|
||||
|
||||
fun foo() = E.ENTRY
|
||||
|
||||
Reference in New Issue
Block a user