Skip to content

Instantly share code, notes, and snippets.

@ianbattersby
Last active December 15, 2015 14:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ianbattersby/5278610 to your computer and use it in GitHub Desktop.
Save ianbattersby/5278610 to your computer and use it in GitHub Desktop.
enum class MyEnum {
MyValOne {
override enum class InsideWeFind {
SubOne {
override fun BigFun() {
println("MyValOne only has one BigFun for SubOne.")
}
override fun SubFun() {
println("MyValOne only also has SubFun for SubOne.")
}
}
SubTwo {
override fun BigFun() {
println("MyValOne only has one BigFun for SubTwo.")
}
override fun SubFun() {
println("MyValOne only also has SubFun for SubTwo.")
}
}
}
override abstract fun BigFun()
abstract fun SubFun()
}
MyValTwo {
override enum class InsideWeFind { SubThree; SubFour; }
override fun BigFun() {
println("MyValTwo only has one BigFun for all.")
}
}
open enum class InsideWeFind { NoSub; }
abstract fun BigFun()
}
inline fun Something(body: MyEnum.() -> Unit) { }
fun Test() {
Something {
MyEnum.MyValOne.InsideWeFind.SubOne.BigFun //MyValOne only has one BigFun for SubOne.
MyEnum.MyValOne.InsideWeFind.SubOne.SubFun //MyValOne only also has SubFun for SubOne.
MyEnum.MyValOne.InsideWeFind.SubTwo.BigFun //MyValOne only has one BigFun for SubTwo.
MyEnum.MyValOne.InsideWeFind.SubTwo.SubFun //MyValOne only also has SubFun for SubTwo.
MyEnum.MyValTwo.InsideWeFind.SubThree.BigFun //MyValTwo only has one BigFun for all (same as below).
MyEnum.MyValTwo.InsideWeFind.SubFour.BigFun //MyValTwo only has one BigFun for all (same as above).
}
}
enum class MyEnum {
MyValOne {
override enum class InsideWeFind { SubOne; SubTwo; }
}
MyValTwo {
override enum class InsideWeFind { SubThree; SubFour; }
}
virtual enum class InsideWeFind { NoSub; }
}
inline fun Something(body: MyEnum.() -> Unit) { }
fun Test() {
Something {
MyEnum.MyValOne.InsideWeFind.SubOne
MyEnum.MyValOne.InsideWeFind.SubTwo
MyEnum.MyValTwo.InsideWeFind.SubThree
MyEnum.MyValTwo.InsideWeFind.SubFour
}
}
org.jetbrains.jet.codegen.CompilationException: Back-end (JVM) Internal error: null
Cause: java.lang.NullPointerException
File being compiled and position: (45,45) in /Users/ian/src/sushi/examples/EnumOverride.kt
The root cause was thrown at: StackValue.java:1238
at org.jetbrains.jet.codegen.ExpressionCodegen.genQualified(ExpressionCodegen.java:248)
at org.jetbrains.jet.codegen.ExpressionCodegen.genQualified(ExpressionCodegen.java:220)
at org.jetbrains.jet.codegen.ExpressionCodegen.visitDotQualifiedExpression(ExpressionCodegen.java:2402)
at org.jetbrains.jet.codegen.ExpressionCodegen.visitDotQualifiedExpression(ExpressionCodegen.java:78)
at org.jetbrains.jet.lang.psi.JetDotQualifiedExpression.accept(JetDotQualifiedExpression.java:34)
at org.jetbrains.jet.codegen.CodegenStatementVisitor.visitJetElement(CodegenStatementVisitor.java:30)
at org.jetbrains.jet.codegen.CodegenStatementVisitor.visitJetElement(CodegenStatementVisitor.java:21)
at org.jetbrains.jet.lang.psi.JetVisitor.visitExpression(JetVisitor.java:145)
at org.jetbrains.jet.lang.psi.JetVisitor.visitQualifiedExpression(JetVisitor.java:245)
at org.jetbrains.jet.lang.psi.JetVisitor.visitDotQualifiedExpression(JetVisitor.java:253)
at org.jetbrains.jet.lang.psi.JetDotQualifiedExpression.accept(JetDotQualifiedExpression.java:34)
at org.jetbrains.jet.codegen.ExpressionCodegen.genQualified(ExpressionCodegen.java:238)
at org.jetbrains.jet.codegen.ExpressionCodegen.genStatement(ExpressionCodegen.java:267)
at org.jetbrains.jet.codegen.ExpressionCodegen.generateBlock(ExpressionCodegen.java:1376)
at org.jetbrains.jet.codegen.ExpressionCodegen.visitBlockExpression(ExpressionCodegen.java:1222)
at org.jetbrains.jet.codegen.ExpressionCodegen.visitBlockExpression(ExpressionCodegen.java:78)
at org.jetbrains.jet.lang.psi.JetBlockExpression.accept(JetBlockExpression.java:47)
at org.jetbrains.jet.codegen.ExpressionCodegen.genQualified(ExpressionCodegen.java:238)
at org.jetbrains.jet.codegen.ExpressionCodegen.genQualified(ExpressionCodegen.java:220)
at org.jetbrains.jet.codegen.ExpressionCodegen.gen(ExpressionCodegen.java:254)
at org.jetbrains.jet.codegen.ExpressionCodegen.returnExpression(ExpressionCodegen.java:1502)
at org.jetbrains.jet.codegen.FunctionCodegen.generateMethodBody(FunctionCodegen.java:211)
at org.jetbrains.jet.codegen.FunctionCodegen.generateMethodHeaderAndBody(FunctionCodegen.java:148)
at org.jetbrains.jet.codegen.FunctionCodegen.generateMethod(FunctionCodegen.java:104)
at org.jetbrains.jet.codegen.ClosureCodegen.generateBody(ClosureCodegen.java:141)
at org.jetbrains.jet.codegen.ClosureCodegen.gen(ClosureCodegen.java:98)
at org.jetbrains.jet.codegen.ExpressionCodegen.genClosure(ExpressionCodegen.java:1260)
at org.jetbrains.jet.codegen.ExpressionCodegen.visitFunctionLiteralExpression(ExpressionCodegen.java:1249)
at org.jetbrains.jet.codegen.ExpressionCodegen.visitFunctionLiteralExpression(ExpressionCodegen.java:78)
at org.jetbrains.jet.lang.psi.JetFunctionLiteralExpression.accept(JetFunctionLiteralExpression.java:39)
at org.jetbrains.jet.codegen.ExpressionCodegen.genQualified(ExpressionCodegen.java:238)
at org.jetbrains.jet.codegen.ExpressionCodegen.genQualified(ExpressionCodegen.java:220)
at org.jetbrains.jet.codegen.ExpressionCodegen.gen(ExpressionCodegen.java:254)
at org.jetbrains.jet.codegen.ExpressionCodegen.gen(ExpressionCodegen.java:258)
at org.jetbrains.jet.codegen.ExpressionCodegen.pushMethodArguments(ExpressionCodegen.java:2291)
at org.jetbrains.jet.codegen.ExpressionCodegen.invokeMethodWithArguments(ExpressionCodegen.java:2104)
at org.jetbrains.jet.codegen.ExpressionCodegen.invokeFunction(ExpressionCodegen.java:1958)
at org.jetbrains.jet.codegen.ExpressionCodegen.visitCallExpression(ExpressionCodegen.java:1889)
at org.jetbrains.jet.codegen.ExpressionCodegen.visitCallExpression(ExpressionCodegen.java:78)
at org.jetbrains.jet.lang.psi.JetCallExpression.accept(JetCallExpression.java:59)
at org.jetbrains.jet.codegen.CodegenStatementVisitor.visitJetElement(CodegenStatementVisitor.java:30)
at org.jetbrains.jet.codegen.CodegenStatementVisitor.visitJetElement(CodegenStatementVisitor.java:21)
at org.jetbrains.jet.lang.psi.JetVisitor.visitExpression(JetVisitor.java:145)
at org.jetbrains.jet.lang.psi.JetVisitor.visitCallExpression(JetVisitor.java:237)
at org.jetbrains.jet.lang.psi.JetCallExpression.accept(JetCallExpression.java:59)
at org.jetbrains.jet.codegen.ExpressionCodegen.genQualified(ExpressionCodegen.java:238)
at org.jetbrains.jet.codegen.ExpressionCodegen.genStatement(ExpressionCodegen.java:267)
at org.jetbrains.jet.codegen.ExpressionCodegen.generateBlock(ExpressionCodegen.java:1376)
at org.jetbrains.jet.codegen.ExpressionCodegen.visitBlockExpression(ExpressionCodegen.java:1222)
at org.jetbrains.jet.codegen.ExpressionCodegen.visitBlockExpression(ExpressionCodegen.java:78)
at org.jetbrains.jet.lang.psi.JetBlockExpression.accept(JetBlockExpression.java:47)
at org.jetbrains.jet.codegen.ExpressionCodegen.genQualified(ExpressionCodegen.java:238)
at org.jetbrains.jet.codegen.ExpressionCodegen.genQualified(ExpressionCodegen.java:220)
at org.jetbrains.jet.codegen.ExpressionCodegen.gen(ExpressionCodegen.java:254)
at org.jetbrains.jet.codegen.ExpressionCodegen.returnExpression(ExpressionCodegen.java:1502)
at org.jetbrains.jet.codegen.FunctionCodegen.generateMethodBody(FunctionCodegen.java:211)
at org.jetbrains.jet.codegen.FunctionCodegen.generateMethodHeaderAndBody(FunctionCodegen.java:148)
at org.jetbrains.jet.codegen.FunctionCodegen.generateMethod(FunctionCodegen.java:104)
at org.jetbrains.jet.codegen.FunctionCodegen.gen(FunctionCodegen.java:79)
at org.jetbrains.jet.codegen.MemberCodegen.genFunctionOrProperty(MemberCodegen.java:46)
at org.jetbrains.jet.codegen.NamespaceCodegen.generate(NamespaceCodegen.java:153)
at org.jetbrains.jet.codegen.NamespaceCodegen.generate(NamespaceCodegen.java:96)
at org.jetbrains.jet.codegen.KotlinCodegenFacade.generateNamespace(KotlinCodegenFacade.java:73)
at org.jetbrains.jet.codegen.KotlinCodegenFacade.compileCorrectFiles(KotlinCodegenFacade.java:62)
at org.jetbrains.jet.plugin.internal.codewindow.BytecodeToolwindow$UpdateBytecodeToolWindowTask.processRequest(BytecodeToolwindow.java:96)
at org.jetbrains.jet.plugin.internal.codewindow.BytecodeToolwindow$UpdateBytecodeToolWindowTask.processRequest(BytecodeToolwindow.java:58)
at org.jetbrains.jet.plugin.util.LongRunningReadTask$1$1.run(LongRunningReadTask.java:110)
at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:935)
at org.jetbrains.jet.plugin.util.LongRunningReadTask$3.run(LongRunningReadTask.java:219)
at com.intellij.openapi.progress.impl.ProgressManagerImpl$2.run(ProgressManagerImpl.java:191)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:232)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.runProcess(ProgressManagerImpl.java:181)
at org.jetbrains.jet.plugin.util.LongRunningReadTask.runWithWriteActionPriority(LongRunningReadTask.java:216)
at org.jetbrains.jet.plugin.util.LongRunningReadTask$1.run(LongRunningReadTask.java:105)
at com.intellij.openapi.application.impl.ApplicationImpl$6.run(ApplicationImpl.java:465)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at java.lang.Thread.run(Thread.java:680)
at com.intellij.openapi.application.impl.ApplicationImpl$1$1.run(ApplicationImpl.java:153)
Caused by: java.lang.NullPointerException
at org.jetbrains.jet.codegen.StackValue$CallReceiver.calcType(StackValue.java:1238)
at org.jetbrains.jet.codegen.StackValue$CallReceiver.<init>(StackValue.java:1205)
at org.jetbrains.jet.codegen.StackValue.receiver(StackValue.java:328)
at org.jetbrains.jet.codegen.ExpressionCodegen.visitSimpleNameExpression(ExpressionCodegen.java:1535)
at org.jetbrains.jet.codegen.ExpressionCodegen.visitSimpleNameExpression(ExpressionCodegen.java:78)
at org.jetbrains.jet.lang.psi.JetSimpleNameExpression.accept(JetSimpleNameExpression.java:132)
at org.jetbrains.jet.codegen.ExpressionCodegen.genQualified(ExpressionCodegen.java:238)
... 81 more
// ================_DefaultPackage.class =================
// class version 50.0 (50)
// access flags 0x11
public final class _DefaultPackage {
// compiled from: EnumOverride.kt
@Ljet/runtime/typeinfo/JetPackageClass;(abiVersion=4)
// access flags 0x19
// signature (Ljet/ExtensionFunction0<-LMyEnum;+Ljet/Unit;>;)V
// declaration: void Something(jet.ExtensionFunction0<? super MyEnum, ? extends jet.Unit>)
public final static Something(Ljet/ExtensionFunction0;)V
@Ljet/runtime/typeinfo/JetMethod;(flags=16, returnType="V")
@Ljet/runtime/typeinfo/JetValueParameter;(name="body", type="Ljet/ExtensionFunction0<LMyEnum;Ljet/Unit;>;") // parameter 0
L0
L1
LINENUMBER 1 L1
ALOAD 0
INVOKESTATIC _DefaultPackage$src$EnumOverride$-2023223013.Something (Ljet/ExtensionFunction0;)V
RETURN
L2
LOCALVARIABLE body Ljet/ExtensionFunction0; L0 L2 0
MAXSTACK = -1
MAXLOCALS = -1
// access flags 0x19
public final static Test()V
@Ljet/runtime/typeinfo/JetMethod;(flags=16, returnType="V")
L0
L1
LINENUMBER 1 L1
INVOKESTATIC _DefaultPackage$src$EnumOverride$-2023223013.Test ()V
RETURN
L2
MAXSTACK = -1
MAXLOCALS = -1
}
// ================MyEnum.class =================
// class version 50.0 (50)
// access flags 0x4421
// signature Ljava/lang/Enum<LMyEnum;>;
// declaration: MyEnum extends java.lang.Enum<MyEnum>
public abstract enum MyEnum extends java/lang/Enum implements jet/JetObject {
// compiled from: EnumOverride.kt
// access flags 0x18
final static INNERCLASS MyEnum$MyValOne MyEnum MyValOne
// access flags 0x18
final static INNERCLASS MyEnum$MyValTwo MyEnum MyValTwo
@Ljet/runtime/typeinfo/JetClass;(signature="Ljava/lang/Enum<LMyEnum;>;", flags=16, abiVersion=4)
// access flags 0x4019
public final static enum LMyEnum; MyValOne
// access flags 0x4019
public final static enum LMyEnum; MyValTwo
// access flags 0x401
public abstract BigFun()V
@Ljet/runtime/typeinfo/JetMethod;(flags=16, returnType="V")
// access flags 0x4
// signature ()V
// declaration: void <init>()
protected <init>(Ljava/lang/String;I)V
@Ljet/runtime/typeinfo/JetConstructor;(flags=8)
ALOAD 0
ALOAD 1
ILOAD 2
INVOKESPECIAL java/lang/Enum.<init> (Ljava/lang/String;I)V
RETURN
MAXSTACK = -1
MAXLOCALS = -1
// access flags 0x9
public static values()[LMyEnum;
GETSTATIC MyEnum.$VALUES : [LMyEnum;
INVOKEVIRTUAL [LMyEnum;.clone ()Ljava/lang/Object;
CHECKCAST [LMyEnum;
ARETURN
MAXSTACK = -1
MAXLOCALS = -1
// access flags 0x9
public static valueOf(Ljava/lang/String;)LMyEnum;
LDC LMyEnum;.class
ALOAD 0
INVOKESTATIC java/lang/Enum.valueOf (Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;
CHECKCAST MyEnum
ARETURN
MAXSTACK = -1
MAXLOCALS = -1
// access flags 0x9
public static <clinit>()V
ICONST_2
ANEWARRAY MyEnum
DUP
DUP
ICONST_0
NEW MyEnum$MyValOne
DUP
LDC "MyValOne"
ICONST_0
INVOKESPECIAL MyEnum$MyValOne.<init> (Ljava/lang/String;I)V
DUP
PUTSTATIC MyEnum.MyValOne : LMyEnum;
AASTORE
DUP
ICONST_1
NEW MyEnum$MyValTwo
DUP
LDC "MyValTwo"
ICONST_1
INVOKESPECIAL MyEnum$MyValTwo.<init> (Ljava/lang/String;I)V
DUP
PUTSTATIC MyEnum.MyValTwo : LMyEnum;
AASTORE
PUTSTATIC MyEnum.$VALUES : [LMyEnum;
RETURN
MAXSTACK = -1
MAXLOCALS = -1
// access flags 0x101A
private final static [LMyEnum; $VALUES
}
// ================MyEnum$MyValOne.class =================
// class version 50.0 (50)
// access flags 0x30
final class MyEnum$MyValOne extends MyEnum implements jet/JetObject {
// compiled from: EnumOverride.kt
// access flags 0x18
final static INNERCLASS MyEnum$MyValOne MyEnum MyValOne
// access flags 0x4019
public final static enum INNERCLASS MyEnum$MyValOne$InsideWeFind MyEnum$MyValOne InsideWeFind
@Ljet/runtime/typeinfo/JetClass;(signature="LMyEnum;", flags=8, abiVersion=4)
// access flags 0x401
public abstract BigFun()V
@Ljet/runtime/typeinfo/JetMethod;(flags=16, returnType="V")
// access flags 0x401
public abstract SubFun()V
@Ljet/runtime/typeinfo/JetMethod;(flags=16, returnType="V")
// access flags 0x0
// signature ()V
// declaration: void <init>()
<init>(Ljava/lang/String;I)V
@Ljet/runtime/typeinfo/JetConstructor;(flags=8)
ALOAD 0
ALOAD 1
ILOAD 2
INVOKESPECIAL MyEnum.<init> (Ljava/lang/String;I)V
RETURN
MAXSTACK = -1
MAXLOCALS = -1
}
// ================MyEnum$MyValOne$InsideWeFind.class =================
// class version 50.0 (50)
// access flags 0x4021
// signature Ljava/lang/Enum<LMyEnum$MyValOne$InsideWeFind;>;
// declaration: MyEnum$MyValOne$InsideWeFind extends java.lang.Enum<MyEnum$MyValOne$InsideWeFind>
public enum MyEnum$MyValOne$InsideWeFind extends java/lang/Enum implements jet/JetObject {
// compiled from: EnumOverride.kt
// access flags 0x4019
public final static enum INNERCLASS MyEnum$MyValOne$InsideWeFind MyEnum$MyValOne InsideWeFind
// access flags 0x18
final static INNERCLASS MyEnum$MyValOne MyEnum MyValOne
// access flags 0x18
final static INNERCLASS MyEnum$MyValOne$InsideWeFind$SubOne MyEnum$MyValOne$InsideWeFind SubOne
// access flags 0x18
final static INNERCLASS MyEnum$MyValOne$InsideWeFind$SubTwo MyEnum$MyValOne$InsideWeFind SubTwo
@Ljet/runtime/typeinfo/JetClass;(signature="Ljava/lang/Enum<LMyEnum$MyValOne$InsideWeFind;>;", flags=16, abiVersion=4)
// access flags 0x4019
public final static enum LMyEnum$MyValOne$InsideWeFind; SubOne
// access flags 0x4019
public final static enum LMyEnum$MyValOne$InsideWeFind; SubTwo
// access flags 0x4
// signature ()V
// declaration: void <init>()
protected <init>(Ljava/lang/String;I)V
@Ljet/runtime/typeinfo/JetConstructor;(flags=8)
ALOAD 0
ALOAD 1
ILOAD 2
INVOKESPECIAL java/lang/Enum.<init> (Ljava/lang/String;I)V
RETURN
MAXSTACK = -1
MAXLOCALS = -1
// access flags 0x9
public static values()[LMyEnum$MyValOne$InsideWeFind;
GETSTATIC MyEnum$MyValOne$InsideWeFind.$VALUES : [LMyEnum$MyValOne$InsideWeFind;
INVOKEVIRTUAL [LMyEnum$MyValOne$InsideWeFind;.clone ()Ljava/lang/Object;
CHECKCAST [LMyEnum$MyValOne$InsideWeFind;
ARETURN
MAXSTACK = -1
MAXLOCALS = -1
// access flags 0x9
public static valueOf(Ljava/lang/String;)LMyEnum$MyValOne$InsideWeFind;
LDC LMyEnum$MyValOne$InsideWeFind;.class
ALOAD 0
INVOKESTATIC java/lang/Enum.valueOf (Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;
CHECKCAST MyEnum$MyValOne$InsideWeFind
ARETURN
MAXSTACK = -1
MAXLOCALS = -1
// access flags 0x9
public static <clinit>()V
ICONST_2
ANEWARRAY MyEnum$MyValOne$InsideWeFind
DUP
DUP
ICONST_0
NEW MyEnum$MyValOne$InsideWeFind$SubOne
DUP
LDC "SubOne"
ICONST_0
INVOKESPECIAL MyEnum$MyValOne$InsideWeFind$SubOne.<init> (Ljava/lang/String;I)V
DUP
PUTSTATIC MyEnum$MyValOne$InsideWeFind.SubOne : LMyEnum$MyValOne$InsideWeFind;
AASTORE
DUP
ICONST_1
NEW MyEnum$MyValOne$InsideWeFind$SubTwo
DUP
LDC "SubTwo"
ICONST_1
INVOKESPECIAL MyEnum$MyValOne$InsideWeFind$SubTwo.<init> (Ljava/lang/String;I)V
DUP
PUTSTATIC MyEnum$MyValOne$InsideWeFind.SubTwo : LMyEnum$MyValOne$InsideWeFind;
AASTORE
PUTSTATIC MyEnum$MyValOne$InsideWeFind.$VALUES : [LMyEnum$MyValOne$InsideWeFind;
RETURN
MAXSTACK = -1
MAXLOCALS = -1
// access flags 0x101A
private final static [LMyEnum$MyValOne$InsideWeFind; $VALUES
}
// ================MyEnum$MyValOne$InsideWeFind$SubOne.class =================
// class version 50.0 (50)
// access flags 0x30
final class MyEnum$MyValOne$InsideWeFind$SubOne extends MyEnum$MyValOne$InsideWeFind implements jet/JetObject {
// compiled from: EnumOverride.kt
// access flags 0x18
final static INNERCLASS MyEnum$MyValOne$InsideWeFind$SubOne MyEnum$MyValOne$InsideWeFind SubOne
// access flags 0x4019
public final static enum INNERCLASS MyEnum$MyValOne$InsideWeFind MyEnum$MyValOne InsideWeFind
// access flags 0x18
final static INNERCLASS MyEnum$MyValOne MyEnum MyValOne
@Ljet/runtime/typeinfo/JetClass;(signature="LMyEnum$MyValOne$InsideWeFind;", flags=8, abiVersion=4)
// access flags 0x1
public BigFun()V
@Ljet/runtime/typeinfo/JetMethod;(flags=16, returnType="V")
L0
L1
LINENUMBER 6 L1
LDC "MyValOne only has one BigFun for SubOne."
INVOKESTATIC kotlin/io/IoPackage.println (Ljava/lang/Object;)V
L2
RETURN
L3
LOCALVARIABLE this LMyEnum$MyValOne$InsideWeFind$SubOne; L0 L3 0
MAXSTACK = -1
MAXLOCALS = -1
// access flags 0x1
public SubFun()V
@Ljet/runtime/typeinfo/JetMethod;(flags=16, returnType="V")
L0
L1
LINENUMBER 10 L1
LDC "MyValOne only also has SubFun for SubOne."
INVOKESTATIC kotlin/io/IoPackage.println (Ljava/lang/Object;)V
L2
RETURN
L3
LOCALVARIABLE this LMyEnum$MyValOne$InsideWeFind$SubOne; L0 L3 0
MAXSTACK = -1
MAXLOCALS = -1
// access flags 0x0
// signature ()V
// declaration: void <init>()
<init>(Ljava/lang/String;I)V
@Ljet/runtime/typeinfo/JetConstructor;(flags=8)
ALOAD 0
ALOAD 1
ILOAD 2
INVOKESPECIAL MyEnum$MyValOne$InsideWeFind.<init> (Ljava/lang/String;I)V
RETURN
MAXSTACK = -1
MAXLOCALS = -1
}
// ================MyEnum$MyValOne$InsideWeFind$SubTwo.class =================
// class version 50.0 (50)
// access flags 0x30
final class MyEnum$MyValOne$InsideWeFind$SubTwo extends MyEnum$MyValOne$InsideWeFind implements jet/JetObject {
// compiled from: EnumOverride.kt
// access flags 0x18
final static INNERCLASS MyEnum$MyValOne$InsideWeFind$SubTwo MyEnum$MyValOne$InsideWeFind SubTwo
// access flags 0x4019
public final static enum INNERCLASS MyEnum$MyValOne$InsideWeFind MyEnum$MyValOne InsideWeFind
// access flags 0x18
final static INNERCLASS MyEnum$MyValOne MyEnum MyValOne
@Ljet/runtime/typeinfo/JetClass;(signature="LMyEnum$MyValOne$InsideWeFind;", flags=8, abiVersion=4)
// access flags 0x1
public BigFun()V
@Ljet/runtime/typeinfo/JetMethod;(flags=16, returnType="V")
L0
L1
LINENUMBER 16 L1
LDC "MyValOne only has one BigFun for SubTwo."
INVOKESTATIC kotlin/io/IoPackage.println (Ljava/lang/Object;)V
L2
RETURN
L3
LOCALVARIABLE this LMyEnum$MyValOne$InsideWeFind$SubTwo; L0 L3 0
MAXSTACK = -1
MAXLOCALS = -1
// access flags 0x1
public SubFun()V
@Ljet/runtime/typeinfo/JetMethod;(flags=16, returnType="V")
L0
L1
LINENUMBER 20 L1
LDC "MyValOne only also has SubFun for SubTwo."
INVOKESTATIC kotlin/io/IoPackage.println (Ljava/lang/Object;)V
L2
RETURN
L3
LOCALVARIABLE this LMyEnum$MyValOne$InsideWeFind$SubTwo; L0 L3 0
MAXSTACK = -1
MAXLOCALS = -1
// access flags 0x0
// signature ()V
// declaration: void <init>()
<init>(Ljava/lang/String;I)V
@Ljet/runtime/typeinfo/JetConstructor;(flags=8)
ALOAD 0
ALOAD 1
ILOAD 2
INVOKESPECIAL MyEnum$MyValOne$InsideWeFind.<init> (Ljava/lang/String;I)V
RETURN
MAXSTACK = -1
MAXLOCALS = -1
}
// ================MyEnum$MyValTwo.class =================
// class version 50.0 (50)
// access flags 0x30
final class MyEnum$MyValTwo extends MyEnum implements jet/JetObject {
// compiled from: EnumOverride.kt
// access flags 0x18
final static INNERCLASS MyEnum$MyValTwo MyEnum MyValTwo
// access flags 0x4019
public final static enum INNERCLASS MyEnum$MyValTwo$InsideWeFind MyEnum$MyValTwo InsideWeFind
@Ljet/runtime/typeinfo/JetClass;(signature="LMyEnum;", flags=8, abiVersion=4)
// access flags 0x1
public BigFun()V
@Ljet/runtime/typeinfo/JetMethod;(flags=16, returnType="V")
L0
L1
LINENUMBER 34 L1
LDC "MyValTwo only has one BigFun for all."
INVOKESTATIC kotlin/io/IoPackage.println (Ljava/lang/Object;)V
L2
RETURN
L3
LOCALVARIABLE this LMyEnum$MyValTwo; L0 L3 0
MAXSTACK = -1
MAXLOCALS = -1
// access flags 0x0
// signature ()V
// declaration: void <init>()
<init>(Ljava/lang/String;I)V
@Ljet/runtime/typeinfo/JetConstructor;(flags=8)
ALOAD 0
ALOAD 1
ILOAD 2
INVOKESPECIAL MyEnum.<init> (Ljava/lang/String;I)V
RETURN
MAXSTACK = -1
MAXLOCALS = -1
}
// ================MyEnum$MyValTwo$InsideWeFind.class =================
// class version 50.0 (50)
// access flags 0x4031
// signature Ljava/lang/Enum<LMyEnum$MyValTwo$InsideWeFind;>;
// declaration: MyEnum$MyValTwo$InsideWeFind extends java.lang.Enum<MyEnum$MyValTwo$InsideWeFind>
public final enum MyEnum$MyValTwo$InsideWeFind extends java/lang/Enum implements jet/JetObject {
// compiled from: EnumOverride.kt
// access flags 0x4019
public final static enum INNERCLASS MyEnum$MyValTwo$InsideWeFind MyEnum$MyValTwo InsideWeFind
// access flags 0x18
final static INNERCLASS MyEnum$MyValTwo MyEnum MyValTwo
@Ljet/runtime/typeinfo/JetClass;(signature="Ljava/lang/Enum<LMyEnum$MyValTwo$InsideWeFind;>;", flags=16, abiVersion=4)
// access flags 0x4019
public final static enum LMyEnum$MyValTwo$InsideWeFind; SubThree
// access flags 0x4019
public final static enum LMyEnum$MyValTwo$InsideWeFind; SubFour
// access flags 0x4
// signature ()V
// declaration: void <init>()
protected <init>(Ljava/lang/String;I)V
@Ljet/runtime/typeinfo/JetConstructor;(flags=8)
ALOAD 0
ALOAD 1
ILOAD 2
INVOKESPECIAL java/lang/Enum.<init> (Ljava/lang/String;I)V
RETURN
MAXSTACK = -1
MAXLOCALS = -1
// access flags 0x9
public static values()[LMyEnum$MyValTwo$InsideWeFind;
GETSTATIC MyEnum$MyValTwo$InsideWeFind.$VALUES : [LMyEnum$MyValTwo$InsideWeFind;
INVOKEVIRTUAL [LMyEnum$MyValTwo$InsideWeFind;.clone ()Ljava/lang/Object;
CHECKCAST [LMyEnum$MyValTwo$InsideWeFind;
ARETURN
MAXSTACK = -1
MAXLOCALS = -1
// access flags 0x9
public static valueOf(Ljava/lang/String;)LMyEnum$MyValTwo$InsideWeFind;
LDC LMyEnum$MyValTwo$InsideWeFind;.class
ALOAD 0
INVOKESTATIC java/lang/Enum.valueOf (Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;
CHECKCAST MyEnum$MyValTwo$InsideWeFind
ARETURN
MAXSTACK = -1
MAXLOCALS = -1
// access flags 0x9
public static <clinit>()V
ICONST_2
ANEWARRAY MyEnum$MyValTwo$InsideWeFind
DUP
DUP
ICONST_0
NEW MyEnum$MyValTwo$InsideWeFind
DUP
LDC "SubThree"
ICONST_0
INVOKESPECIAL MyEnum$MyValTwo$InsideWeFind.<init> (Ljava/lang/String;I)V
DUP
PUTSTATIC MyEnum$MyValTwo$InsideWeFind.SubThree : LMyEnum$MyValTwo$InsideWeFind;
AASTORE
DUP
ICONST_1
NEW MyEnum$MyValTwo$InsideWeFind
DUP
LDC "SubFour"
ICONST_1
INVOKESPECIAL MyEnum$MyValTwo$InsideWeFind.<init> (Ljava/lang/String;I)V
DUP
PUTSTATIC MyEnum$MyValTwo$InsideWeFind.SubFour : LMyEnum$MyValTwo$InsideWeFind;
AASTORE
PUTSTATIC MyEnum$MyValTwo$InsideWeFind.$VALUES : [LMyEnum$MyValTwo$InsideWeFind;
RETURN
MAXSTACK = -1
MAXLOCALS = -1
// access flags 0x101A
private final static [LMyEnum$MyValTwo$InsideWeFind; $VALUES
}
// ================_DefaultPackage$src$EnumOverride$-2023223013.class =================
// class version 50.0 (50)
// access flags 0x11
public final class _DefaultPackage$src$EnumOverride$-2023223013 {
// compiled from: EnumOverride.kt
// access flags 0x19
// signature (Ljet/ExtensionFunction0<-LMyEnum;+Ljet/Unit;>;)V
// declaration: void Something(jet.ExtensionFunction0<? super MyEnum, ? extends jet.Unit>)
public final static Something(Ljet/ExtensionFunction0;)V
@Ljet/runtime/typeinfo/JetMethod;(flags=16, returnType="V")
@Ljet/runtime/typeinfo/JetValueParameter;(name="body", type="Ljet/ExtensionFunction0<LMyEnum;Ljet/Unit;>;") // parameter 0
L0
ALOAD 0
LDC "Something"
INVOKESTATIC jet/runtime/Intrinsics.checkParameterIsNotNull (Ljava/lang/Object;Ljava/lang/String;)V
L1
RETURN
L2
LOCALVARIABLE body Ljet/ExtensionFunction0; L0 L2 0
MAXSTACK = -1
MAXLOCALS = -1
// access flags 0x19
public final static Test()V
@Ljet/runtime/typeinfo/JetMethod;(flags=16, returnType="V")
L0
L1
LINENUMBER 44 L1
GETSTATIC _DefaultPackage$Test$1.instance$ : L_DefaultPackage$Test$1;
CHECKCAST jet/ExtensionFunction0
INVOKESTATIC _DefaultPackage$src$EnumOverride$-2023223013.Something (Ljet/ExtensionFunction0;)V
L2
RETURN
L3
MAXSTACK = -1
MAXLOCALS = -1
}
// ================_DefaultPackage$Test$1.class =================
// class version 50.0 (50)
// access flags 0x11
public final class _DefaultPackage$Test$1 extends jet/ExtensionFunction0 {
// compiled from: EnumOverride.kt
// access flags 0x41
public volatile bridge invoke(Ljava/lang/Object;)Ljava/lang/Object;
ALOAD 0
ALOAD 1
CHECKCAST MyEnum
INVOKEVIRTUAL _DefaultPackage$Test$1.invoke (LMyEnum;)V
GETSTATIC jet/Unit.VALUE : Ljet/Unit;
ARETURN
MAXSTACK = -1
MAXLOCALS = -1
// access flags 0x10
final invoke(LMyEnum;)V
L0
L1
RETURN
L2
LOCALVARIABLE this L_DefaultPackage$Test$1; L0 L2 0
LOCALVARIABLE $receiver LMyEnum; L0 L2 1
MAXSTACK = -1
MAXLOCALS = -1
// access flags 0x1
public <init>()V
ALOAD 0
INVOKESPECIAL jet/ExtensionFunction0.<init> ()V
RETURN
MAXSTACK = -1
MAXLOCALS = -1
// access flags 0x1009
public static <clinit>()V
NEW _DefaultPackage$Test$1
DUP
INVOKESPECIAL _DefaultPackage$Test$1.<init> ()V
PUTSTATIC _DefaultPackage$Test$1.instance$ : L_DefaultPackage$Test$1;
RETURN
MAXSTACK = -1
MAXLOCALS = -1
// access flags 0x19
public final static L_DefaultPackage$Test$1; instance$
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment