Raw FIR: add synthesized Enum.valueOf() function

This commit is contained in:
Mikhail Glukhikh
2019-11-07 17:18:43 +03:00
parent 1978db9d0e
commit 48938a20a7
25 changed files with 231 additions and 0 deletions
@@ -435,6 +435,7 @@ class DeclarationsConverter(
if (modifiers.isEnum()) {
firClass.generateValuesFunction(session, context.packageFqName, context.className)
firClass.generateValueOfFunction(session, context.packageFqName, context.className)
}
return@withChildClassName firClass
@@ -12,17 +12,22 @@ import org.jetbrains.kotlin.fir.declarations.addDeclaration
import org.jetbrains.kotlin.fir.declarations.impl.FirDeclarationStatusImpl
import org.jetbrains.kotlin.fir.declarations.impl.FirModifiableRegularClass
import org.jetbrains.kotlin.fir.declarations.impl.FirSimpleFunctionImpl
import org.jetbrains.kotlin.fir.declarations.impl.FirValueParameterImpl
import org.jetbrains.kotlin.fir.expressions.impl.FirEmptyExpressionBlock
import org.jetbrains.kotlin.fir.symbols.CallableId
import org.jetbrains.kotlin.fir.symbols.StandardClassIds
import org.jetbrains.kotlin.fir.symbols.impl.ConeClassLikeLookupTagImpl
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
import org.jetbrains.kotlin.fir.types.impl.ConeClassTypeImpl
import org.jetbrains.kotlin.fir.types.impl.FirImplicitStringTypeRef
import org.jetbrains.kotlin.fir.types.impl.FirResolvedTypeRefImpl
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
private val ENUM_VALUES = Name.identifier("values")
private val ENUM_VALUE_OF = Name.identifier("valueOf")
private val VALUE = Name.identifier("value")
fun FirModifiableRegularClass.generateValuesFunction(
session: FirSession, packageFqName: FqName, classFqName: FqName
@@ -48,4 +53,33 @@ fun FirModifiableRegularClass.generateValuesFunction(
body = FirEmptyExpressionBlock()
}
)
}
fun FirModifiableRegularClass.generateValueOfFunction(
session: FirSession, packageFqName: FqName, classFqName: FqName
) {
val symbol = FirNamedFunctionSymbol(CallableId(packageFqName, classFqName, ENUM_VALUE_OF))
val status = FirDeclarationStatusImpl(Visibilities.PUBLIC, Modality.FINAL).apply {
isStatic = true
}
addDeclaration(
FirSimpleFunctionImpl(
source, session,
FirResolvedTypeRefImpl(
source, ConeClassTypeImpl(
ConeClassLikeLookupTagImpl(this.symbol.classId),
emptyArray(),
isNullable = false
)
),
null, ENUM_VALUE_OF, status, symbol
).apply {
valueParameters += FirValueParameterImpl(
source, session, FirImplicitStringTypeRef(source),
VALUE, FirVariableSymbol(VALUE),
defaultValue = null, isCrossinline = false, isNoinline = false, isVararg = false
)
body = FirEmptyExpressionBlock()
}
)
}
@@ -537,6 +537,7 @@ class RawFirBuilder(session: FirSession, val stubMode: Boolean) : BaseFirBuilder
if (classOrObject.hasModifier(ENUM_KEYWORD)) {
firClass.generateValuesFunction(session, context.packageFqName, context.className)
firClass.generateValueOfFunction(session, context.packageFqName, context.className)
}
firClass
@@ -28,6 +28,9 @@ FILE: enums.kt
public final static fun values(): R|kotlin/Array<Order>| {
}
public final static fun valueOf(value: R|kotlin/String|): R|Order| {
}
}
public? final? enum class Planet : R|kotlin/Enum| {
public? constructor(m: Double, r: Double): R|Planet| {
@@ -91,4 +94,7 @@ FILE: enums.kt
public final static fun values(): R|kotlin/Array<Planet>| {
}
public final static fun valueOf(value: R|kotlin/String|): R|Planet| {
}
}
@@ -48,4 +48,7 @@ FILE: enums2.kt
public final static fun values(): R|kotlin/Array<SomeEnum>| {
}
public final static fun valueOf(value: R|kotlin/String|): R|SomeEnum| {
}
}
+3
View File
@@ -48,4 +48,7 @@ FILE: enum.kt
public final static fun values(): R|kotlin/Array<SomeEnum>| {
}
public final static fun valueOf(value: R|kotlin/String|): R|SomeEnum| {
}
}
@@ -28,6 +28,9 @@ FILE: exhaustiveness_enum.kt
public final static fun values(): R|kotlin/Array<Enum>| {
}
public final static fun valueOf(value: R|kotlin/String|): R|Enum| {
}
}
public final fun test_1(e: R|Enum|): R|kotlin/Unit| {
lval a: R|kotlin/Unit| = when (R|<local>/e|) {
@@ -12,4 +12,7 @@ fun foo() {
for (value in values) {
value.bar()
}
val first = MyEnum.valueOf("FIRST")
val last = MyEnum.valueOf("LAST")
}
@@ -32,6 +32,9 @@ FILE: enumValues.kt
public final static fun values(): R|kotlin/Array<MyEnum>| {
}
public final static fun valueOf(value: R|kotlin/String|): R|MyEnum| {
}
}
public final fun foo(): R|kotlin/Unit| {
lval values: R|kotlin/Array<MyEnum>| = Q|MyEnum|.R|/MyEnum.values|()
@@ -42,4 +45,6 @@ FILE: enumValues.kt
R|<local>/value|.R|/MyEnum.bar|()
}
lval first: R|MyEnum| = Q|MyEnum|.R|/MyEnum.valueOf|(String(FIRST))
lval last: R|MyEnum| = Q|MyEnum|.R|/MyEnum.valueOf|(String(LAST))
}
@@ -43,6 +43,9 @@ FILE: qualifiedExpressions.kt
public final static fun values(): R|kotlin/Array<a/b/E>| {
}
public final static fun valueOf(value: R|kotlin/String|): R|a/b/E| {
}
}
public final fun foo(): R|kotlin/Unit| {
}
@@ -28,6 +28,9 @@ FILE: enums.kt
public final static fun values(): R|kotlin/Array<Order>| {
}
public final static fun valueOf(value: R|kotlin/String|): R|Order| {
}
}
public final enum class Planet : R|kotlin/Enum| {
private constructor(m: R|kotlin/Double|, r: R|kotlin/Double|): R|Planet| {
@@ -91,4 +94,7 @@ FILE: enums.kt
public final static fun values(): R|kotlin/Array<Planet>| {
}
public final static fun valueOf(value: R|kotlin/String|): R|Planet| {
}
}
+4
View File
@@ -78,6 +78,10 @@ FILE fqName:<root> fileName:/classes.kt
FUN name:values visibility:public modality:FINAL <> ($this:<root>.TestEnumClass) returnType:kotlin.Array<<root>.TestEnumClass>
$this: VALUE_PARAMETER name:<this> type:<root>.TestEnumClass
BLOCK_BODY
FUN name:valueOf visibility:public modality:FINAL <> ($this:<root>.TestEnumClass, value:kotlin.String) returnType:<root>.TestEnumClass
$this: VALUE_PARAMETER name:<this> type:<root>.TestEnumClass
VALUE_PARAMETER name:value index:0 type:kotlin.String
BLOCK_BODY
FUN FAKE_OVERRIDE name:clone visibility:protected modality:FINAL <> ($this:kotlin.Enum) returnType:kotlin.Any [fake_override]
overridden:
protected final fun clone (): kotlin.Any declared in kotlin.Enum
+55
View File
@@ -47,6 +47,10 @@ FILE fqName:<root> fileName:/enum.kt
FUN name:values visibility:public modality:FINAL <> ($this:<root>.TestEnum1) returnType:kotlin.Array<<root>.TestEnum1>
$this: VALUE_PARAMETER name:<this> type:<root>.TestEnum1
BLOCK_BODY
FUN name:valueOf visibility:public modality:FINAL <> ($this:<root>.TestEnum1, value:kotlin.String) returnType:<root>.TestEnum1
$this: VALUE_PARAMETER name:<this> type:<root>.TestEnum1
VALUE_PARAMETER name:value index:0 type:kotlin.String
BLOCK_BODY
FUN FAKE_OVERRIDE name:clone visibility:protected modality:FINAL <> ($this:kotlin.Enum) returnType:kotlin.Any [fake_override]
overridden:
protected final fun clone (): kotlin.Any declared in kotlin.Enum
@@ -117,6 +121,11 @@ FILE fqName:<root> fileName:/enum.kt
overridden:
public final fun values (): kotlin.Array<<root>.TestEnum2> declared in <root>.TestEnum2
$this: VALUE_PARAMETER name:<this> type:<root>.TestEnum2
FUN FAKE_OVERRIDE name:valueOf visibility:public modality:FINAL <> ($this:<root>.TestEnum2, value:kotlin.String) returnType:<root>.TestEnum2 [fake_override]
overridden:
public final fun valueOf (value: kotlin.String): <root>.TestEnum2 declared in <root>.TestEnum2
$this: VALUE_PARAMETER name:<this> type:<root>.TestEnum2
VALUE_PARAMETER name:value index:0 type:kotlin.String
FUN FAKE_OVERRIDE name:clone visibility:protected modality:FINAL <> ($this:kotlin.Enum) returnType:kotlin.Any [fake_override]
overridden:
protected final fun clone (): kotlin.Any declared in kotlin.Enum
@@ -168,6 +177,11 @@ FILE fqName:<root> fileName:/enum.kt
overridden:
public final fun values (): kotlin.Array<<root>.TestEnum2> declared in <root>.TestEnum2
$this: VALUE_PARAMETER name:<this> type:<root>.TestEnum2
FUN FAKE_OVERRIDE name:valueOf visibility:public modality:FINAL <> ($this:<root>.TestEnum2, value:kotlin.String) returnType:<root>.TestEnum2 [fake_override]
overridden:
public final fun valueOf (value: kotlin.String): <root>.TestEnum2 declared in <root>.TestEnum2
$this: VALUE_PARAMETER name:<this> type:<root>.TestEnum2
VALUE_PARAMETER name:value index:0 type:kotlin.String
FUN FAKE_OVERRIDE name:clone visibility:protected modality:FINAL <> ($this:kotlin.Enum) returnType:kotlin.Any [fake_override]
overridden:
protected final fun clone (): kotlin.Any declared in kotlin.Enum
@@ -219,6 +233,11 @@ FILE fqName:<root> fileName:/enum.kt
overridden:
public final fun values (): kotlin.Array<<root>.TestEnum2> declared in <root>.TestEnum2
$this: VALUE_PARAMETER name:<this> type:<root>.TestEnum2
FUN FAKE_OVERRIDE name:valueOf visibility:public modality:FINAL <> ($this:<root>.TestEnum2, value:kotlin.String) returnType:<root>.TestEnum2 [fake_override]
overridden:
public final fun valueOf (value: kotlin.String): <root>.TestEnum2 declared in <root>.TestEnum2
$this: VALUE_PARAMETER name:<this> type:<root>.TestEnum2
VALUE_PARAMETER name:value index:0 type:kotlin.String
FUN FAKE_OVERRIDE name:clone visibility:protected modality:FINAL <> ($this:kotlin.Enum) returnType:kotlin.Any [fake_override]
overridden:
protected final fun clone (): kotlin.Any declared in kotlin.Enum
@@ -256,6 +275,10 @@ FILE fqName:<root> fileName:/enum.kt
FUN name:values visibility:public modality:FINAL <> ($this:<root>.TestEnum2) returnType:kotlin.Array<<root>.TestEnum2>
$this: VALUE_PARAMETER name:<this> type:<root>.TestEnum2
BLOCK_BODY
FUN name:valueOf visibility:public modality:FINAL <> ($this:<root>.TestEnum2, value:kotlin.String) returnType:<root>.TestEnum2
$this: VALUE_PARAMETER name:<this> type:<root>.TestEnum2
VALUE_PARAMETER name:value index:0 type:kotlin.String
BLOCK_BODY
FUN FAKE_OVERRIDE name:clone visibility:protected modality:FINAL <> ($this:kotlin.Enum) returnType:kotlin.Any [fake_override]
overridden:
protected final fun clone (): kotlin.Any declared in kotlin.Enum
@@ -326,6 +349,10 @@ FILE fqName:<root> fileName:/enum.kt
FUN name:values visibility:public modality:FINAL <> ($this:<root>.TestEnum3) returnType:kotlin.Array<<root>.TestEnum3>
$this: VALUE_PARAMETER name:<this> type:<root>.TestEnum3
BLOCK_BODY
FUN name:valueOf visibility:public modality:FINAL <> ($this:<root>.TestEnum3, value:kotlin.String) returnType:<root>.TestEnum3
$this: VALUE_PARAMETER name:<this> type:<root>.TestEnum3
VALUE_PARAMETER name:value index:0 type:kotlin.String
BLOCK_BODY
FUN FAKE_OVERRIDE name:clone visibility:protected modality:FINAL <> ($this:kotlin.Enum) returnType:kotlin.Any [fake_override]
overridden:
protected final fun clone (): kotlin.Any declared in kotlin.Enum
@@ -401,6 +428,11 @@ FILE fqName:<root> fileName:/enum.kt
overridden:
public final fun values (): kotlin.Array<<root>.TestEnum4> declared in <root>.TestEnum4
$this: VALUE_PARAMETER name:<this> type:<root>.TestEnum4
FUN FAKE_OVERRIDE name:valueOf visibility:public modality:FINAL <> ($this:<root>.TestEnum4, value:kotlin.String) returnType:<root>.TestEnum4 [fake_override]
overridden:
public final fun valueOf (value: kotlin.String): <root>.TestEnum4 declared in <root>.TestEnum4
$this: VALUE_PARAMETER name:<this> type:<root>.TestEnum4
VALUE_PARAMETER name:value index:0 type:kotlin.String
FUN FAKE_OVERRIDE name:clone visibility:protected modality:FINAL <> ($this:kotlin.Enum) returnType:kotlin.Any [fake_override]
overridden:
protected final fun clone (): kotlin.Any declared in kotlin.Enum
@@ -472,6 +504,11 @@ FILE fqName:<root> fileName:/enum.kt
overridden:
public final fun values (): kotlin.Array<<root>.TestEnum4> declared in <root>.TestEnum4
$this: VALUE_PARAMETER name:<this> type:<root>.TestEnum4
FUN FAKE_OVERRIDE name:valueOf visibility:public modality:FINAL <> ($this:<root>.TestEnum4, value:kotlin.String) returnType:<root>.TestEnum4 [fake_override]
overridden:
public final fun valueOf (value: kotlin.String): <root>.TestEnum4 declared in <root>.TestEnum4
$this: VALUE_PARAMETER name:<this> type:<root>.TestEnum4
VALUE_PARAMETER name:value index:0 type:kotlin.String
FUN FAKE_OVERRIDE name:clone visibility:protected modality:FINAL <> ($this:kotlin.Enum) returnType:kotlin.Any [fake_override]
overridden:
protected final fun clone (): kotlin.Any declared in kotlin.Enum
@@ -511,6 +548,10 @@ FILE fqName:<root> fileName:/enum.kt
FUN name:values visibility:public modality:FINAL <> ($this:<root>.TestEnum4) returnType:kotlin.Array<<root>.TestEnum4>
$this: VALUE_PARAMETER name:<this> type:<root>.TestEnum4
BLOCK_BODY
FUN name:valueOf visibility:public modality:FINAL <> ($this:<root>.TestEnum4, value:kotlin.String) returnType:<root>.TestEnum4
$this: VALUE_PARAMETER name:<this> type:<root>.TestEnum4
VALUE_PARAMETER name:value index:0 type:kotlin.String
BLOCK_BODY
FUN FAKE_OVERRIDE name:clone visibility:protected modality:FINAL <> ($this:kotlin.Enum) returnType:kotlin.Any [fake_override]
overridden:
protected final fun clone (): kotlin.Any declared in kotlin.Enum
@@ -601,6 +642,11 @@ FILE fqName:<root> fileName:/enum.kt
overridden:
public final fun values (): kotlin.Array<<root>.TestEnum5> declared in <root>.TestEnum5
$this: VALUE_PARAMETER name:<this> type:<root>.TestEnum5
FUN FAKE_OVERRIDE name:valueOf visibility:public modality:FINAL <> ($this:<root>.TestEnum5, value:kotlin.String) returnType:<root>.TestEnum5 [fake_override]
overridden:
public final fun valueOf (value: kotlin.String): <root>.TestEnum5 declared in <root>.TestEnum5
$this: VALUE_PARAMETER name:<this> type:<root>.TestEnum5
VALUE_PARAMETER name:value index:0 type:kotlin.String
FUN FAKE_OVERRIDE name:clone visibility:protected modality:FINAL <> ($this:kotlin.Enum) returnType:kotlin.Any [fake_override]
overridden:
protected final fun clone (): kotlin.Any declared in kotlin.Enum
@@ -652,6 +698,11 @@ FILE fqName:<root> fileName:/enum.kt
overridden:
public final fun values (): kotlin.Array<<root>.TestEnum5> declared in <root>.TestEnum5
$this: VALUE_PARAMETER name:<this> type:<root>.TestEnum5
FUN FAKE_OVERRIDE name:valueOf visibility:public modality:FINAL <> ($this:<root>.TestEnum5, value:kotlin.String) returnType:<root>.TestEnum5 [fake_override]
overridden:
public final fun valueOf (value: kotlin.String): <root>.TestEnum5 declared in <root>.TestEnum5
$this: VALUE_PARAMETER name:<this> type:<root>.TestEnum5
VALUE_PARAMETER name:value index:0 type:kotlin.String
FUN FAKE_OVERRIDE name:clone visibility:protected modality:FINAL <> ($this:kotlin.Enum) returnType:kotlin.Any [fake_override]
overridden:
protected final fun clone (): kotlin.Any declared in kotlin.Enum
@@ -689,6 +740,10 @@ FILE fqName:<root> fileName:/enum.kt
FUN name:values visibility:public modality:FINAL <> ($this:<root>.TestEnum5) returnType:kotlin.Array<<root>.TestEnum5>
$this: VALUE_PARAMETER name:<this> type:<root>.TestEnum5
BLOCK_BODY
FUN name:valueOf visibility:public modality:FINAL <> ($this:<root>.TestEnum5, value:kotlin.String) returnType:<root>.TestEnum5
$this: VALUE_PARAMETER name:<this> type:<root>.TestEnum5
VALUE_PARAMETER name:value index:0 type:kotlin.String
BLOCK_BODY
FUN FAKE_OVERRIDE name:clone visibility:protected modality:FINAL <> ($this:kotlin.Enum) returnType:kotlin.Any [fake_override]
overridden:
protected final fun clone (): kotlin.Any declared in kotlin.Enum
@@ -28,6 +28,10 @@ FILE fqName:<root> fileName:/enumClassModality.kt
FUN name:values visibility:public modality:FINAL <> ($this:<root>.TestFinalEnum1) returnType:kotlin.Array<<root>.TestFinalEnum1>
$this: VALUE_PARAMETER name:<this> type:<root>.TestFinalEnum1
BLOCK_BODY
FUN name:valueOf visibility:public modality:FINAL <> ($this:<root>.TestFinalEnum1, value:kotlin.String) returnType:<root>.TestFinalEnum1
$this: VALUE_PARAMETER name:<this> type:<root>.TestFinalEnum1
VALUE_PARAMETER name:value index:0 type:kotlin.String
BLOCK_BODY
FUN FAKE_OVERRIDE name:clone visibility:protected modality:FINAL <> ($this:kotlin.Enum) returnType:kotlin.Any [fake_override]
overridden:
protected final fun clone (): kotlin.Any declared in kotlin.Enum
@@ -98,6 +102,11 @@ FILE fqName:<root> fileName:/enumClassModality.kt
overridden:
public final fun values (): kotlin.Array<<root>.TestFinalEnum2> declared in <root>.TestFinalEnum2
$this: VALUE_PARAMETER name:<this> type:<root>.TestFinalEnum2
FUN FAKE_OVERRIDE name:valueOf visibility:public modality:FINAL <> ($this:<root>.TestFinalEnum2, value:kotlin.String) returnType:<root>.TestFinalEnum2 [fake_override]
overridden:
public final fun valueOf (value: kotlin.String): <root>.TestFinalEnum2 declared in <root>.TestFinalEnum2
$this: VALUE_PARAMETER name:<this> type:<root>.TestFinalEnum2
VALUE_PARAMETER name:value index:0 type:kotlin.String
FUN FAKE_OVERRIDE name:clone visibility:protected modality:FINAL <> ($this:kotlin.Enum) returnType:kotlin.Any [fake_override]
overridden:
protected final fun clone (): kotlin.Any declared in kotlin.Enum
@@ -135,6 +144,10 @@ FILE fqName:<root> fileName:/enumClassModality.kt
FUN name:values visibility:public modality:FINAL <> ($this:<root>.TestFinalEnum2) returnType:kotlin.Array<<root>.TestFinalEnum2>
$this: VALUE_PARAMETER name:<this> type:<root>.TestFinalEnum2
BLOCK_BODY
FUN name:valueOf visibility:public modality:FINAL <> ($this:<root>.TestFinalEnum2, value:kotlin.String) returnType:<root>.TestFinalEnum2
$this: VALUE_PARAMETER name:<this> type:<root>.TestFinalEnum2
VALUE_PARAMETER name:value index:0 type:kotlin.String
BLOCK_BODY
FUN FAKE_OVERRIDE name:clone visibility:protected modality:FINAL <> ($this:kotlin.Enum) returnType:kotlin.Any [fake_override]
overridden:
protected final fun clone (): kotlin.Any declared in kotlin.Enum
@@ -201,6 +214,10 @@ FILE fqName:<root> fileName:/enumClassModality.kt
FUN name:values visibility:public modality:FINAL <> ($this:<root>.TestFinalEnum3) returnType:kotlin.Array<<root>.TestFinalEnum3>
$this: VALUE_PARAMETER name:<this> type:<root>.TestFinalEnum3
BLOCK_BODY
FUN name:valueOf visibility:public modality:FINAL <> ($this:<root>.TestFinalEnum3, value:kotlin.String) returnType:<root>.TestFinalEnum3
$this: VALUE_PARAMETER name:<this> type:<root>.TestFinalEnum3
VALUE_PARAMETER name:value index:0 type:kotlin.String
BLOCK_BODY
FUN FAKE_OVERRIDE name:clone visibility:protected modality:FINAL <> ($this:kotlin.Enum) returnType:kotlin.Any [fake_override]
overridden:
protected final fun clone (): kotlin.Any declared in kotlin.Enum
@@ -265,6 +282,10 @@ FILE fqName:<root> fileName:/enumClassModality.kt
FUN name:values visibility:public modality:FINAL <> ($this:<root>.TestOpenEnum1) returnType:kotlin.Array<<root>.TestOpenEnum1>
$this: VALUE_PARAMETER name:<this> type:<root>.TestOpenEnum1
BLOCK_BODY
FUN name:valueOf visibility:public modality:FINAL <> ($this:<root>.TestOpenEnum1, value:kotlin.String) returnType:<root>.TestOpenEnum1
$this: VALUE_PARAMETER name:<this> type:<root>.TestOpenEnum1
VALUE_PARAMETER name:value index:0 type:kotlin.String
BLOCK_BODY
FUN FAKE_OVERRIDE name:clone visibility:protected modality:FINAL <> ($this:kotlin.Enum) returnType:kotlin.Any [fake_override]
overridden:
protected final fun clone (): kotlin.Any declared in kotlin.Enum
@@ -334,6 +355,10 @@ FILE fqName:<root> fileName:/enumClassModality.kt
FUN name:values visibility:public modality:FINAL <> ($this:<root>.TestOpenEnum2) returnType:kotlin.Array<<root>.TestOpenEnum2>
$this: VALUE_PARAMETER name:<this> type:<root>.TestOpenEnum2
BLOCK_BODY
FUN name:valueOf visibility:public modality:FINAL <> ($this:<root>.TestOpenEnum2, value:kotlin.String) returnType:<root>.TestOpenEnum2
$this: VALUE_PARAMETER name:<this> type:<root>.TestOpenEnum2
VALUE_PARAMETER name:value index:0 type:kotlin.String
BLOCK_BODY
FUN FAKE_OVERRIDE name:clone visibility:protected modality:FINAL <> ($this:kotlin.Enum) returnType:kotlin.Any [fake_override]
overridden:
protected final fun clone (): kotlin.Any declared in kotlin.Enum
@@ -402,6 +427,10 @@ FILE fqName:<root> fileName:/enumClassModality.kt
FUN name:values visibility:public modality:FINAL <> ($this:<root>.TestAbstractEnum1) returnType:kotlin.Array<<root>.TestAbstractEnum1>
$this: VALUE_PARAMETER name:<this> type:<root>.TestAbstractEnum1
BLOCK_BODY
FUN name:valueOf visibility:public modality:FINAL <> ($this:<root>.TestAbstractEnum1, value:kotlin.String) returnType:<root>.TestAbstractEnum1
$this: VALUE_PARAMETER name:<this> type:<root>.TestAbstractEnum1
VALUE_PARAMETER name:value index:0 type:kotlin.String
BLOCK_BODY
FUN FAKE_OVERRIDE name:clone visibility:protected modality:FINAL <> ($this:kotlin.Enum) returnType:kotlin.Any [fake_override]
overridden:
protected final fun clone (): kotlin.Any declared in kotlin.Enum
@@ -485,6 +514,10 @@ FILE fqName:<root> fileName:/enumClassModality.kt
FUN name:values visibility:public modality:FINAL <> ($this:<root>.TestAbstractEnum2) returnType:kotlin.Array<<root>.TestAbstractEnum2>
$this: VALUE_PARAMETER name:<this> type:<root>.TestAbstractEnum2
BLOCK_BODY
FUN name:valueOf visibility:public modality:FINAL <> ($this:<root>.TestAbstractEnum2, value:kotlin.String) returnType:<root>.TestAbstractEnum2
$this: VALUE_PARAMETER name:<this> type:<root>.TestAbstractEnum2
VALUE_PARAMETER name:value index:0 type:kotlin.String
BLOCK_BODY
FUN FAKE_OVERRIDE name:foo visibility:public modality:ABSTRACT <> ($this:<root>.IFoo) returnType:kotlin.Unit [fake_override]
overridden:
public abstract fun foo (): kotlin.Unit declared in <root>.IFoo
@@ -44,6 +44,10 @@ FILE fqName:<root> fileName:/enumWithSecondaryCtor.kt
FUN name:values visibility:public modality:FINAL <> ($this:<root>.Test0) returnType:kotlin.Array<<root>.Test0>
$this: VALUE_PARAMETER name:<this> type:<root>.Test0
BLOCK_BODY
FUN name:valueOf visibility:public modality:FINAL <> ($this:<root>.Test0, value:kotlin.String) returnType:<root>.Test0
$this: VALUE_PARAMETER name:<this> type:<root>.Test0
VALUE_PARAMETER name:value index:0 type:kotlin.String
BLOCK_BODY
FUN FAKE_OVERRIDE name:clone visibility:protected modality:FINAL <> ($this:kotlin.Enum) returnType:kotlin.Any [fake_override]
overridden:
protected final fun clone (): kotlin.Any declared in kotlin.Enum
@@ -133,6 +137,11 @@ FILE fqName:<root> fileName:/enumWithSecondaryCtor.kt
overridden:
public final fun values (): kotlin.Array<<root>.Test1> declared in <root>.Test1
$this: VALUE_PARAMETER name:<this> type:<root>.Test1
FUN FAKE_OVERRIDE name:valueOf visibility:public modality:FINAL <> ($this:<root>.Test1, value:kotlin.String) returnType:<root>.Test1 [fake_override]
overridden:
public final fun valueOf (value: kotlin.String): <root>.Test1 declared in <root>.Test1
$this: VALUE_PARAMETER name:<this> type:<root>.Test1
VALUE_PARAMETER name:value index:0 type:kotlin.String
FUN FAKE_OVERRIDE name:clone visibility:protected modality:FINAL <> ($this:kotlin.Enum) returnType:kotlin.Any [fake_override]
overridden:
protected final fun clone (): kotlin.Any declared in kotlin.Enum
@@ -174,6 +183,10 @@ FILE fqName:<root> fileName:/enumWithSecondaryCtor.kt
FUN name:values visibility:public modality:FINAL <> ($this:<root>.Test1) returnType:kotlin.Array<<root>.Test1>
$this: VALUE_PARAMETER name:<this> type:<root>.Test1
BLOCK_BODY
FUN name:valueOf visibility:public modality:FINAL <> ($this:<root>.Test1, value:kotlin.String) returnType:<root>.Test1
$this: VALUE_PARAMETER name:<this> type:<root>.Test1
VALUE_PARAMETER name:value index:0 type:kotlin.String
BLOCK_BODY
FUN FAKE_OVERRIDE name:clone visibility:protected modality:FINAL <> ($this:kotlin.Enum) returnType:kotlin.Any [fake_override]
overridden:
protected final fun clone (): kotlin.Any declared in kotlin.Enum
@@ -273,6 +286,11 @@ FILE fqName:<root> fileName:/enumWithSecondaryCtor.kt
overridden:
public final fun values (): kotlin.Array<<root>.Test2> declared in <root>.Test2
$this: VALUE_PARAMETER name:<this> type:<root>.Test2
FUN FAKE_OVERRIDE name:valueOf visibility:public modality:FINAL <> ($this:<root>.Test2, value:kotlin.String) returnType:<root>.Test2 [fake_override]
overridden:
public final fun valueOf (value: kotlin.String): <root>.Test2 declared in <root>.Test2
$this: VALUE_PARAMETER name:<this> type:<root>.Test2
VALUE_PARAMETER name:value index:0 type:kotlin.String
FUN FAKE_OVERRIDE name:clone visibility:protected modality:FINAL <> ($this:kotlin.Enum) returnType:kotlin.Any [fake_override]
overridden:
protected final fun clone (): kotlin.Any declared in kotlin.Enum
@@ -316,6 +334,10 @@ FILE fqName:<root> fileName:/enumWithSecondaryCtor.kt
FUN name:values visibility:public modality:FINAL <> ($this:<root>.Test2) returnType:kotlin.Array<<root>.Test2>
$this: VALUE_PARAMETER name:<this> type:<root>.Test2
BLOCK_BODY
FUN name:valueOf visibility:public modality:FINAL <> ($this:<root>.Test2, value:kotlin.String) returnType:<root>.Test2
$this: VALUE_PARAMETER name:<this> type:<root>.Test2
VALUE_PARAMETER name:value index:0 type:kotlin.String
BLOCK_BODY
FUN FAKE_OVERRIDE name:clone visibility:protected modality:FINAL <> ($this:kotlin.Enum) returnType:kotlin.Any [fake_override]
overridden:
protected final fun clone (): kotlin.Any declared in kotlin.Enum
@@ -138,6 +138,10 @@ FILE fqName:<root> fileName:/classesWithAnnotations.kt
FUN name:values visibility:public modality:FINAL <> ($this:<root>.TestEnum) returnType:kotlin.Array<<root>.TestEnum>
$this: VALUE_PARAMETER name:<this> type:<root>.TestEnum
BLOCK_BODY
FUN name:valueOf visibility:public modality:FINAL <> ($this:<root>.TestEnum, value:kotlin.String) returnType:<root>.TestEnum
$this: VALUE_PARAMETER name:<this> type:<root>.TestEnum
VALUE_PARAMETER name:value index:0 type:kotlin.String
BLOCK_BODY
FUN FAKE_OVERRIDE name:clone visibility:protected modality:FINAL <> ($this:kotlin.Enum) returnType:kotlin.Any [fake_override]
overridden:
protected final fun clone (): kotlin.Any declared in kotlin.Enum
@@ -90,6 +90,10 @@ FILE fqName:<root> fileName:/enumEntriesWithAnnotations.kt
FUN name:values visibility:public modality:FINAL <> ($this:<root>.TestEnum) returnType:kotlin.Array<<root>.TestEnum>
$this: VALUE_PARAMETER name:<this> type:<root>.TestEnum
BLOCK_BODY
FUN name:valueOf visibility:public modality:FINAL <> ($this:<root>.TestEnum, value:kotlin.String) returnType:<root>.TestEnum
$this: VALUE_PARAMETER name:<this> type:<root>.TestEnum
VALUE_PARAMETER name:value index:0 type:kotlin.String
BLOCK_BODY
FUN FAKE_OVERRIDE name:clone visibility:protected modality:FINAL <> ($this:kotlin.Enum) returnType:kotlin.Any [fake_override]
overridden:
protected final fun clone (): kotlin.Any declared in kotlin.Enum
@@ -85,6 +85,10 @@ FILE fqName:<root> fileName:/enumsInAnnotationArguments.kt
FUN name:values visibility:public modality:FINAL <> ($this:<root>.En) returnType:kotlin.Array<<root>.En>
$this: VALUE_PARAMETER name:<this> type:<root>.En
BLOCK_BODY
FUN name:valueOf visibility:public modality:FINAL <> ($this:<root>.En, value:kotlin.String) returnType:<root>.En
$this: VALUE_PARAMETER name:<this> type:<root>.En
VALUE_PARAMETER name:value index:0 type:kotlin.String
BLOCK_BODY
FUN FAKE_OVERRIDE name:clone visibility:protected modality:FINAL <> ($this:kotlin.Enum) returnType:kotlin.Any [fake_override]
overridden:
protected final fun clone (): kotlin.Any declared in kotlin.Enum
@@ -47,6 +47,10 @@ FILE fqName:<root> fileName:/expectedEnumClass.kt
FUN name:values visibility:public modality:FINAL <> ($this:<root>.MyEnum) returnType:kotlin.Array<<root>.MyEnum>
$this: VALUE_PARAMETER name:<this> type:<root>.MyEnum
BLOCK_BODY
FUN name:valueOf visibility:public modality:FINAL <> ($this:<root>.MyEnum, value:kotlin.String) returnType:<root>.MyEnum
$this: VALUE_PARAMETER name:<this> type:<root>.MyEnum
VALUE_PARAMETER name:value index:0 type:kotlin.String
BLOCK_BODY
FUN FAKE_OVERRIDE name:clone visibility:protected modality:FINAL <> ($this:kotlin.Enum) returnType:kotlin.Any [fake_override]
overridden:
protected final fun clone (): kotlin.Any declared in kotlin.Enum
@@ -148,6 +152,10 @@ FILE fqName:<root> fileName:/expectedEnumClass.kt
FUN name:values visibility:public modality:FINAL <> ($this:<root>.MyEnum) returnType:kotlin.Array<<root>.MyEnum>
$this: VALUE_PARAMETER name:<this> type:<root>.MyEnum
BLOCK_BODY
FUN name:valueOf visibility:public modality:FINAL <> ($this:<root>.MyEnum, value:kotlin.String) returnType:<root>.MyEnum
$this: VALUE_PARAMETER name:<this> type:<root>.MyEnum
VALUE_PARAMETER name:value index:0 type:kotlin.String
BLOCK_BODY
FUN FAKE_OVERRIDE name:clone visibility:protected modality:FINAL <> ($this:kotlin.Enum) returnType:kotlin.Any [fake_override]
overridden:
protected final fun clone (): kotlin.Any declared in kotlin.Enum
@@ -59,6 +59,10 @@ FILE fqName:<root> fileName:/enumEntryAsReceiver.kt
FUN name:values visibility:public modality:FINAL <> ($this:<root>.X) returnType:kotlin.Array<<root>.X>
$this: VALUE_PARAMETER name:<this> type:<root>.X
BLOCK_BODY
FUN name:valueOf visibility:public modality:FINAL <> ($this:<root>.X, value:kotlin.String) returnType:<root>.X
$this: VALUE_PARAMETER name:<this> type:<root>.X
VALUE_PARAMETER name:value index:0 type:kotlin.String
BLOCK_BODY
FUN FAKE_OVERRIDE name:clone visibility:protected modality:FINAL <> ($this:kotlin.Enum) returnType:kotlin.Any [fake_override]
overridden:
protected final fun clone (): kotlin.Any declared in kotlin.Enum
@@ -110,6 +110,10 @@ FILE fqName:<root> fileName:/enumEntryReferenceFromEnumEntryClass.kt
FUN name:values visibility:public modality:FINAL <> ($this:<root>.MyEnum) returnType:kotlin.Array<<root>.MyEnum>
$this: VALUE_PARAMETER name:<this> type:<root>.MyEnum
BLOCK_BODY
FUN name:valueOf visibility:public modality:FINAL <> ($this:<root>.MyEnum, value:kotlin.String) returnType:<root>.MyEnum
$this: VALUE_PARAMETER name:<this> type:<root>.MyEnum
VALUE_PARAMETER name:value index:0 type:kotlin.String
BLOCK_BODY
FUN FAKE_OVERRIDE name:clone visibility:protected modality:FINAL <> ($this:kotlin.Enum) returnType:kotlin.Any [fake_override]
overridden:
protected final fun clone (): kotlin.Any declared in kotlin.Enum
@@ -47,6 +47,10 @@ FILE fqName:<root> fileName:/objectAsCallable.kt
FUN name:values visibility:public modality:FINAL <> ($this:<root>.En) returnType:kotlin.Array<<root>.En>
$this: VALUE_PARAMETER name:<this> type:<root>.En
BLOCK_BODY
FUN name:valueOf visibility:public modality:FINAL <> ($this:<root>.En, value:kotlin.String) returnType:<root>.En
$this: VALUE_PARAMETER name:<this> type:<root>.En
VALUE_PARAMETER name:value index:0 type:kotlin.String
BLOCK_BODY
FUN FAKE_OVERRIDE name:clone visibility:protected modality:FINAL <> ($this:kotlin.Enum) returnType:kotlin.Any [fake_override]
overridden:
protected final fun clone (): kotlin.Any declared in kotlin.Enum
@@ -45,6 +45,11 @@ FILE fqName:<root> fileName:/temporaryInEnumEntryInitializer.kt
overridden:
public final fun values (): kotlin.Array<<root>.En> declared in <root>.En
$this: VALUE_PARAMETER name:<this> type:<root>.En
FUN FAKE_OVERRIDE name:valueOf visibility:public modality:FINAL <> ($this:<root>.En, value:kotlin.String) returnType:<root>.En [fake_override]
overridden:
public final fun valueOf (value: kotlin.String): <root>.En declared in <root>.En
$this: VALUE_PARAMETER name:<this> type:<root>.En
VALUE_PARAMETER name:value index:0 type:kotlin.String
FUN FAKE_OVERRIDE name:clone visibility:protected modality:FINAL <> ($this:kotlin.Enum) returnType:kotlin.Any [fake_override]
overridden:
protected final fun clone (): kotlin.Any declared in kotlin.Enum
@@ -82,6 +87,10 @@ FILE fqName:<root> fileName:/temporaryInEnumEntryInitializer.kt
FUN name:values visibility:public modality:FINAL <> ($this:<root>.En) returnType:kotlin.Array<<root>.En>
$this: VALUE_PARAMETER name:<this> type:<root>.En
BLOCK_BODY
FUN name:valueOf visibility:public modality:FINAL <> ($this:<root>.En, value:kotlin.String) returnType:<root>.En
$this: VALUE_PARAMETER name:<this> type:<root>.En
VALUE_PARAMETER name:value index:0 type:kotlin.String
BLOCK_BODY
FUN FAKE_OVERRIDE name:clone visibility:protected modality:FINAL <> ($this:kotlin.Enum) returnType:kotlin.Any [fake_override]
overridden:
protected final fun clone (): kotlin.Any declared in kotlin.Enum
@@ -28,6 +28,10 @@ FILE fqName:<root> fileName:/values.kt
FUN name:values visibility:public modality:FINAL <> ($this:<root>.Enum) returnType:kotlin.Array<<root>.Enum>
$this: VALUE_PARAMETER name:<this> type:<root>.Enum
BLOCK_BODY
FUN name:valueOf visibility:public modality:FINAL <> ($this:<root>.Enum, value:kotlin.String) returnType:<root>.Enum
$this: VALUE_PARAMETER name:<this> type:<root>.Enum
VALUE_PARAMETER name:value index:0 type:kotlin.String
BLOCK_BODY
FUN FAKE_OVERRIDE name:clone visibility:protected modality:FINAL <> ($this:kotlin.Enum) returnType:kotlin.Any [fake_override]
overridden:
protected final fun clone (): kotlin.Any declared in kotlin.Enum
@@ -55,6 +55,10 @@ FILE fqName:<root> fileName:/enumEntry.kt
FUN name:values visibility:public modality:FINAL <> ($this:<root>.Z) returnType:kotlin.Array<<root>.Z>
$this: VALUE_PARAMETER name:<this> type:<root>.Z
BLOCK_BODY
FUN name:valueOf visibility:public modality:FINAL <> ($this:<root>.Z, value:kotlin.String) returnType:<root>.Z
$this: VALUE_PARAMETER name:<this> type:<root>.Z
VALUE_PARAMETER name:value index:0 type:kotlin.String
BLOCK_BODY
FUN FAKE_OVERRIDE name:clone visibility:protected modality:FINAL <> ($this:kotlin.Enum) returnType:kotlin.Any [fake_override]
overridden:
protected final fun clone (): kotlin.Any declared in kotlin.Enum