From 08038d6de966db0a83397f8c9b2dd86fe6bcc701 Mon Sep 17 00:00:00 2001 From: Mikhael Bogdanov Date: Mon, 13 Aug 2018 11:28:53 +0300 Subject: [PATCH] Convert object literals to classes inside JvmBackendContext --- .../kotlin/backend/jvm/JvmBackendContext.kt | 92 ++++++++++--------- 1 file changed, 51 insertions(+), 41 deletions(-) diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmBackendContext.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmBackendContext.kt index bce6bec8420..48928b0d6be 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmBackendContext.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmBackendContext.kt @@ -41,47 +41,7 @@ class JvmBackendContext( ReflectionTypes(state.module, FqName("kotlin.reflect.jvm.internal")) } - override val ir: Ir = object : Ir(this, irModuleFragment) { - override val symbols: Symbols = object : Symbols(this@JvmBackendContext, symbolTable.lazyWrapper) { - - override val areEqual - get () = symbolTable.referenceSimpleFunction(context.getInternalFunctions("areEqual").single()) - - override val ThrowNullPointerException - get () = symbolTable.referenceSimpleFunction( - context.getInternalFunctions("ThrowNullPointerException").single() - ) - - override val ThrowNoWhenBranchMatchedException - get () = symbolTable.referenceSimpleFunction( - context.getInternalFunctions("ThrowNoWhenBranchMatchedException").single() - ) - - override val ThrowTypeCastException - get () = symbolTable.referenceSimpleFunction( - context.getInternalFunctions("ThrowTypeCastException").single() - ) - - override val ThrowUninitializedPropertyAccessException = - symbolTable.referenceSimpleFunction( - context.getInternalFunctions("ThrowUninitializedPropertyAccessException").single() - ) - - override val stringBuilder - get() = symbolTable.referenceClass( - context.getClass(FqName("java.lang.StringBuilder")) - ) - - override val copyRangeTo: Map - get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates. - override val coroutineImpl: IrClassSymbol - get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates. - override val coroutineSuspendedGetter: IrSimpleFunctionSymbol - get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates. - } - - override fun shouldGenerateHandlerParameterForDefaultBodyFun() = true - } + override val ir = JvmIr(irModuleFragment, symbolTable) private fun find(memberScope: MemberScope, className: String): ClassDescriptor { return find(memberScope, Name.identifier(className)) @@ -119,4 +79,54 @@ class JvmBackendContext( /*TODO*/ print(message) } + + inner class JvmIr( + irModuleFragment: IrModuleFragment, + private val symbolTable: SymbolTable + ) : Ir(this, irModuleFragment) { + override val symbols = JvmSymbols() + + inner class JvmSymbols : Symbols(this@JvmBackendContext, symbolTable.lazyWrapper) { + + override val areEqual + get () = symbolTable.referenceSimpleFunction(context.getInternalFunctions("areEqual").single()) + + override val ThrowNullPointerException + get () = symbolTable.referenceSimpleFunction( + context.getInternalFunctions("ThrowNullPointerException").single() + ) + + override val ThrowNoWhenBranchMatchedException + get () = symbolTable.referenceSimpleFunction( + context.getInternalFunctions("ThrowNoWhenBranchMatchedException").single() + ) + + override val ThrowTypeCastException + get () = symbolTable.referenceSimpleFunction( + context.getInternalFunctions("ThrowTypeCastException").single() + ) + + override val ThrowUninitializedPropertyAccessException = + symbolTable.referenceSimpleFunction( + context.getInternalFunctions("ThrowUninitializedPropertyAccessException").single() + ) + + override val stringBuilder + get() = symbolTable.referenceClass( + context.getClass(FqName("java.lang.StringBuilder")) + ) + + override val copyRangeTo: Map + get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates. + override val coroutineImpl: IrClassSymbol + get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates. + override val coroutineSuspendedGetter: IrSimpleFunctionSymbol + get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates. + + val lambdaClass = calc { symbolTable.referenceClass(context.getInternalClass("Lambda")) } + } + + + override fun shouldGenerateHandlerParameterForDefaultBodyFun() = true + } }