From 5e933b7acdcfa3c51560f667937f665d3d8da8c4 Mon Sep 17 00:00:00 2001 From: Mikhael Bogdanov Date: Wed, 11 May 2016 14:58:53 +0300 Subject: [PATCH] localVariableReferences.kt moved from reflection.jvm to runtime.jvm --- .../kotlin/codegen/JvmRuntimeTypes.java | 5 ++-- .../codegen/PropertyReferenceCodegen.kt | 13 +++++------ .../jvm/internal/localVariableReferences.kt | 23 +++++++++++++------ 3 files changed, 24 insertions(+), 17 deletions(-) rename core/{reflection.jvm/src/kotlin/reflect => runtime.jvm/src/kotlin}/jvm/internal/localVariableReferences.kt (59%) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/JvmRuntimeTypes.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/JvmRuntimeTypes.java index 06daf885925..b5281d3381d 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/JvmRuntimeTypes.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/JvmRuntimeTypes.java @@ -50,12 +50,11 @@ public class JvmRuntimeTypes { LockBasedStorageManager.NO_LOCKS, DefaultBuiltIns.getInstance()); PackageFragmentDescriptor kotlinJvmInternal = new MutablePackageFragmentDescriptor(module, new FqName("kotlin.jvm.internal")); - PackageFragmentDescriptor kotlinReflectJvmInternal = new MutablePackageFragmentDescriptor(module, new FqName("kotlin.reflect.jvm.internal")); this.lambda = createClass(kotlinJvmInternal, "Lambda"); this.functionReference = createClass(kotlinJvmInternal, "FunctionReference"); - this.localVariableReference = createClass(kotlinReflectJvmInternal, "LocalVariableReference"); - this.mutableLocalVariableReference = createClass(kotlinReflectJvmInternal, "MutableLocalVariableReference"); + this.localVariableReference = createClass(kotlinJvmInternal, "LocalVariableReference"); + this.mutableLocalVariableReference = createClass(kotlinJvmInternal, "MutableLocalVariableReference"); this.propertyReferences = new ArrayList(3); this.mutablePropertyReferences = new ArrayList(3); diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/PropertyReferenceCodegen.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/PropertyReferenceCodegen.kt index cf9eb3265fc..c49eabd102a 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/PropertyReferenceCodegen.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/PropertyReferenceCodegen.kt @@ -86,12 +86,6 @@ class PropertyReferenceCodegen( invokespecial(superAsmType.internalName, "", "()V", false) } - if (target !is LocalVariableDescriptor) { - generateMethod("property reference getOwner", ACC_PUBLIC, method("getOwner", K_DECLARATION_CONTAINER_TYPE)) { - ClosureCodegen.generateCallableReferenceDeclarationContainer(this, target, state) - } - } - generateMethod("property reference getName", ACC_PUBLIC, method("getName", JAVA_STRING_TYPE)) { aconst(target.name.asString()) } @@ -100,7 +94,12 @@ class PropertyReferenceCodegen( aconst(getPropertyReferenceSignature(target as VariableDescriptorWithAccessors, state)) } - generateAccessors() + if (target !is LocalVariableDescriptor) { + generateMethod("property reference getOwner", ACC_PUBLIC, method("getOwner", K_DECLARATION_CONTAINER_TYPE)) { + ClosureCodegen.generateCallableReferenceDeclarationContainer(this, target, state) + } + generateAccessors() + } } private fun generateAccessors() { diff --git a/core/reflection.jvm/src/kotlin/reflect/jvm/internal/localVariableReferences.kt b/core/runtime.jvm/src/kotlin/jvm/internal/localVariableReferences.kt similarity index 59% rename from core/reflection.jvm/src/kotlin/reflect/jvm/internal/localVariableReferences.kt rename to core/runtime.jvm/src/kotlin/jvm/internal/localVariableReferences.kt index cfb442c2b56..9dc50a3bc7f 100644 --- a/core/reflection.jvm/src/kotlin/reflect/jvm/internal/localVariableReferences.kt +++ b/core/runtime.jvm/src/kotlin/jvm/internal/localVariableReferences.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2015 JetBrains s.r.o. + * Copyright 2010-2016 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,16 +14,25 @@ * limitations under the License. */ -package kotlin.reflect.jvm.internal +package kotlin.jvm.internal -import kotlin.jvm.internal.MutablePropertyReference0 -import kotlin.jvm.internal.PropertyReference0 import kotlin.reflect.KDeclarationContainer +private fun notSupportedError(): Nothing { + throw UnsupportedOperationException("Not supported for local property reference.") +} + open class LocalVariableReference : PropertyReference0() { - override fun getOwner(): KDeclarationContainer = EmptyContainerForLocal + override fun getOwner(): KDeclarationContainer = notSupportedError() + + override fun get(): Any? = notSupportedError() + } open class MutableLocalVariableReference : MutablePropertyReference0() { - override fun getOwner(): KDeclarationContainer = EmptyContainerForLocal -} + override fun getOwner(): KDeclarationContainer = notSupportedError() + + override fun get(): Any? = notSupportedError() + + override fun set(value: Any?): Unit = notSupportedError() +} \ No newline at end of file