FIR deserializer: provide proper type for enum entries
This commit is contained in:
committed by
Mikhail Glukhikh
parent
ca350e64c2
commit
e521e66c74
+10
-1
@@ -33,6 +33,7 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeAliasSymbol
|
||||
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
|
||||
import org.jetbrains.kotlin.fir.types.impl.ConeClassTypeImpl
|
||||
import org.jetbrains.kotlin.fir.types.impl.FirErrorTypeRefImpl
|
||||
import org.jetbrains.kotlin.fir.types.impl.FirResolvedTypeRefImpl
|
||||
import org.jetbrains.kotlin.load.java.JavaClassFinder
|
||||
@@ -296,7 +297,15 @@ class KotlinDeserializedJvmSymbolsProvider(
|
||||
}
|
||||
|
||||
val symbol = FirClassSymbol(classId)
|
||||
FirEnumEntryImpl(session, null, symbol, classId.shortClassName)
|
||||
FirEnumEntryImpl(session, null, symbol, classId.shortClassName).apply {
|
||||
superTypeRefs += FirResolvedTypeRefImpl(
|
||||
session,
|
||||
null,
|
||||
ConeClassTypeImpl(ConeClassLikeLookupTagImpl(outerClassId), emptyArray(), false),
|
||||
false,
|
||||
emptyList()
|
||||
)
|
||||
}
|
||||
classesCache[classId] = symbol
|
||||
} else {
|
||||
if (kotlinJvmBinaryClass.classHeader.kind != KotlinClassHeader.Kind.CLASS) return null
|
||||
|
||||
Vendored
+1
-1
@@ -6,7 +6,7 @@
|
||||
public final enum class E : R|kotlin/Enum<test/E>| {
|
||||
private constructor(): R|test/E|
|
||||
|
||||
public? final enum entry ENTRY {
|
||||
public? final enum entry ENTRY : R|test/E| {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+4
-4
@@ -17,16 +17,16 @@ public final annotation class Bnno : R|kotlin/Annotation| {
|
||||
public final enum class Eee : R|kotlin/Enum<test/Eee>| {
|
||||
private constructor(): R|test/Eee|
|
||||
|
||||
public? final enum entry Entry1 {
|
||||
public? final enum entry Entry1 : R|test/Eee| {
|
||||
}
|
||||
|
||||
public? final enum entry Entry2 {
|
||||
public? final enum entry Entry2 : R|test/Eee| {
|
||||
}
|
||||
|
||||
public? final enum entry Entry3 {
|
||||
public? final enum entry Entry3 : R|test/Eee| {
|
||||
}
|
||||
|
||||
public? final enum entry Entry4 {
|
||||
public? final enum entry Entry4 : R|test/Eee| {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
internal final enum class In : R|kotlin/Enum<test/In>| {
|
||||
private constructor(): R|test/In|
|
||||
|
||||
public? final enum entry A {
|
||||
public? final enum entry A : R|test/In| {
|
||||
}
|
||||
|
||||
}
|
||||
@@ -9,7 +9,7 @@ internal final enum class In : R|kotlin/Enum<test/In>| {
|
||||
private final enum class Pr : R|kotlin/Enum<test/Pr>| {
|
||||
private constructor(): R|test/Pr|
|
||||
|
||||
public? final enum entry A {
|
||||
public? final enum entry A : R|test/Pr| {
|
||||
}
|
||||
|
||||
}
|
||||
@@ -17,7 +17,7 @@ private final enum class Pr : R|kotlin/Enum<test/Pr>| {
|
||||
public final enum class Pu : R|kotlin/Enum<test/Pu>| {
|
||||
private constructor(): R|test/Pu|
|
||||
|
||||
public? final enum entry A {
|
||||
public? final enum entry A : R|test/Pu| {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+3
-3
@@ -7,13 +7,13 @@ public final enum class En : R|kotlin/Enum<test/En>| {
|
||||
|
||||
private constructor(b: R|kotlin/Boolean| = STUB, i: R|kotlin/Int| = STUB): R|test/En|
|
||||
|
||||
public? final enum entry E1 {
|
||||
public? final enum entry E1 : R|test/En| {
|
||||
}
|
||||
|
||||
public? final enum entry E2 {
|
||||
public? final enum entry E2 : R|test/En| {
|
||||
}
|
||||
|
||||
public? final enum entry E3 {
|
||||
public? final enum entry E3 : R|test/En| {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+2
-2
@@ -19,10 +19,10 @@ public final enum class Enum : R|kotlin/Enum<test/Enum>| {
|
||||
public abstract interface Trait : R|kotlin/Any| {
|
||||
}
|
||||
|
||||
public? final enum entry ENTRY1 {
|
||||
public? final enum entry ENTRY1 : R|test/Enum| {
|
||||
}
|
||||
|
||||
public? final enum entry ENTRY2 {
|
||||
public? final enum entry ENTRY2 : R|test/Enum| {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -4,9 +4,10 @@ public final class A : R|kotlin/Any| {
|
||||
public final enum class E : R|kotlin/Enum<test/A.E>| {
|
||||
private constructor(): R|test/A.E|
|
||||
|
||||
public? final enum entry ENTRY {
|
||||
public? final enum entry ENTRY : R|test/A.E| {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
+2
-1
@@ -9,9 +9,10 @@ public final class A : R|kotlin/Any| {
|
||||
public final enum class E : R|kotlin/Enum<test/A.E>| {
|
||||
private constructor(): R|test/A.E|
|
||||
|
||||
public? final enum entry ENTRY {
|
||||
public? final enum entry ENTRY : R|test/A.E| {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
public final enum class MyEnum : R|kotlin/Enum<test/MyEnum>| {
|
||||
private constructor(): R|test/MyEnum|
|
||||
|
||||
public? final enum entry ENTRY {
|
||||
public? final enum entry ENTRY : R|test/MyEnum| {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
public final enum class Test : R|kotlin/Enum<test/Test>| {
|
||||
private constructor(a: R|kotlin/Int|): R|test/Test|
|
||||
|
||||
public? final enum entry A {
|
||||
public? final enum entry A : R|test/Test| {
|
||||
}
|
||||
|
||||
public? final enum entry B {
|
||||
public? final enum entry B : R|test/Test| {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+8
-8
@@ -1,28 +1,28 @@
|
||||
public final enum class E : R|kotlin/Enum<test/E>| {
|
||||
private constructor(): R|test/E|
|
||||
|
||||
public? final enum entry ONE {
|
||||
public? final enum entry ONE : R|test/E| {
|
||||
}
|
||||
|
||||
public? final enum entry TWO {
|
||||
public? final enum entry TWO : R|test/E| {
|
||||
}
|
||||
|
||||
public? final enum entry THREE {
|
||||
public? final enum entry THREE : R|test/E| {
|
||||
}
|
||||
|
||||
public? final enum entry FOUR {
|
||||
public? final enum entry FOUR : R|test/E| {
|
||||
}
|
||||
|
||||
public? final enum entry FIVE {
|
||||
public? final enum entry FIVE : R|test/E| {
|
||||
}
|
||||
|
||||
public? final enum entry SIX {
|
||||
public? final enum entry SIX : R|test/E| {
|
||||
}
|
||||
|
||||
public? final enum entry SEVEN {
|
||||
public? final enum entry SEVEN : R|test/E| {
|
||||
}
|
||||
|
||||
public? final enum entry EIGHT {
|
||||
public? final enum entry EIGHT : R|test/E| {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user