Add descriptors.runtime to the compiler...

move it into appropriate package and ensure that it gets relocated
properly in kotlin-reflect.jar
This change is needed to use the functionality that provides descriptors
from classloaders for scripts compilation.
This commit is contained in:
Ilya Chernikov
2019-09-10 16:10:17 +02:00
parent 8dce22c335
commit 689a5cbdf5
39 changed files with 94 additions and 92 deletions
+1
View File
@@ -234,6 +234,7 @@ extra["compilerModules"] = arrayOf(
":core:metadata.jvm",
":core:descriptors",
":core:descriptors.jvm",
":core:descriptors.runtime",
":core:deserialization",
":core:util.runtime",
":core:type-system",
@@ -1,31 +0,0 @@
/*
* Copyright 2010-2017 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.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package kotlin.reflect.jvm.internal.structure
import org.jetbrains.kotlin.load.java.structure.JavaField
import java.lang.reflect.Field
class ReflectJavaField(override val member: Field) : ReflectJavaMember(), JavaField {
override val isEnumEntry: Boolean
get() = member.isEnumConstant
override val type: ReflectJavaType
get() = ReflectJavaType.create(member.genericType)
override val initializerValue: Any? get() = null
override val hasConstantNotNullInitializer get() = false
}
@@ -3,7 +3,7 @@
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package kotlin.reflect.jvm.internal.components
package org.jetbrains.kotlin.descriptors.runtime.components
import org.jetbrains.kotlin.descriptors.impl.EmptyPackageFragmentDescriptor
import org.jetbrains.kotlin.load.kotlin.DeserializedDescriptorResolver
@@ -14,7 +14,7 @@
* limitations under the License.
*/
package kotlin.reflect.jvm.internal.components
package org.jetbrains.kotlin.descriptors.runtime.components
import org.jetbrains.kotlin.descriptors.SourceElement
import org.jetbrains.kotlin.descriptors.SourceFile
@@ -14,14 +14,14 @@
* limitations under the License.
*/
package kotlin.reflect.jvm.internal.components
package org.jetbrains.kotlin.descriptors.runtime.components
import org.jetbrains.kotlin.load.java.JavaClassFinder
import org.jetbrains.kotlin.load.java.structure.JavaClass
import org.jetbrains.kotlin.load.java.structure.JavaPackage
import org.jetbrains.kotlin.name.FqName
import kotlin.reflect.jvm.internal.structure.ReflectJavaClass
import kotlin.reflect.jvm.internal.structure.ReflectJavaPackage
import org.jetbrains.kotlin.descriptors.runtime.structure.ReflectJavaClass
import org.jetbrains.kotlin.descriptors.runtime.structure.ReflectJavaPackage
class ReflectJavaClassFinder(private val classLoader: ClassLoader) : JavaClassFinder {
override fun findClass(request: JavaClassFinder.Request): JavaClass? {
@@ -14,7 +14,7 @@
* limitations under the License.
*/
package kotlin.reflect.jvm.internal.components
package org.jetbrains.kotlin.descriptors.runtime.components
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.builtins.jvm.JavaToKotlinClassMap
@@ -28,9 +28,9 @@ import org.jetbrains.kotlin.resolve.jvm.JvmPrimitiveType
import java.lang.reflect.Constructor
import java.lang.reflect.Field
import java.lang.reflect.Method
import kotlin.reflect.jvm.internal.structure.classId
import kotlin.reflect.jvm.internal.structure.desc
import kotlin.reflect.jvm.internal.structure.isEnumClassOrSpecializedEnumEntryClass
import org.jetbrains.kotlin.descriptors.runtime.structure.classId
import org.jetbrains.kotlin.descriptors.runtime.structure.desc
import org.jetbrains.kotlin.descriptors.runtime.structure.isEnumClassOrSpecializedEnumEntryClass
@Suppress("PLATFORM_CLASS_MAPPED_TO_KOTLIN")
private val TYPES_ELIGIBLE_FOR_SIMPLE_VISIT = setOf<Class<*>>(
@@ -14,7 +14,7 @@
* limitations under the License.
*/
package kotlin.reflect.jvm.internal.components
package org.jetbrains.kotlin.descriptors.runtime.components
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.load.java.structure.JavaClass
@@ -14,7 +14,7 @@
* limitations under the License.
*/
package kotlin.reflect.jvm.internal.components
package org.jetbrains.kotlin.descriptors.runtime.components
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
import org.jetbrains.kotlin.descriptors.ClassDescriptor
@@ -14,7 +14,7 @@
* limitations under the License.
*/
package kotlin.reflect.jvm.internal.components
package org.jetbrains.kotlin.descriptors.runtime.components
import org.jetbrains.kotlin.builtins.ReflectionTypes
import org.jetbrains.kotlin.builtins.jvm.JvmBuiltIns
@@ -14,13 +14,13 @@
* limitations under the License.
*/
package kotlin.reflect.jvm.internal.components
package org.jetbrains.kotlin.descriptors.runtime.components
import org.jetbrains.kotlin.descriptors.SourceFile
import org.jetbrains.kotlin.load.java.sources.JavaSourceElement
import org.jetbrains.kotlin.load.java.sources.JavaSourceElementFactory
import org.jetbrains.kotlin.load.java.structure.JavaElement
import kotlin.reflect.jvm.internal.structure.ReflectJavaElement
import org.jetbrains.kotlin.descriptors.runtime.structure.ReflectJavaElement
object RuntimeSourceElementFactory : JavaSourceElementFactory {
class RuntimeSourceElement(override val javaElement: ReflectJavaElement) : JavaSourceElement {
@@ -28,5 +28,6 @@ object RuntimeSourceElementFactory : JavaSourceElementFactory {
override fun getContainingFile(): SourceFile = SourceFile.NO_SOURCE_FILE
}
override fun source(javaElement: JavaElement): JavaSourceElement = RuntimeSourceElement(javaElement as ReflectJavaElement)
override fun source(javaElement: JavaElement): JavaSourceElement =
RuntimeSourceElement(javaElement as ReflectJavaElement)
}
@@ -14,7 +14,7 @@
* limitations under the License.
*/
package kotlin.reflect.jvm.internal.structure
package org.jetbrains.kotlin.descriptors.runtime.structure
import org.jetbrains.kotlin.load.java.structure.JavaAnnotation
import org.jetbrains.kotlin.load.java.structure.JavaAnnotationArgument
@@ -14,7 +14,7 @@
* limitations under the License.
*/
package kotlin.reflect.jvm.internal.structure
package org.jetbrains.kotlin.descriptors.runtime.structure
import org.jetbrains.kotlin.load.java.structure.*
import org.jetbrains.kotlin.name.ClassId
@@ -14,7 +14,7 @@
* limitations under the License.
*/
package kotlin.reflect.jvm.internal.structure
package org.jetbrains.kotlin.descriptors.runtime.structure
import org.jetbrains.kotlin.load.java.structure.JavaAnnotationOwner
import org.jetbrains.kotlin.name.FqName
@@ -14,7 +14,7 @@
* limitations under the License.
*/
package kotlin.reflect.jvm.internal.structure
package org.jetbrains.kotlin.descriptors.runtime.structure
import org.jetbrains.kotlin.load.java.structure.JavaArrayType
import java.lang.reflect.GenericArrayType
@@ -14,7 +14,7 @@
* limitations under the License.
*/
package kotlin.reflect.jvm.internal.structure
package org.jetbrains.kotlin.descriptors.runtime.structure
import org.jetbrains.kotlin.load.java.structure.JavaClass
import org.jetbrains.kotlin.load.java.structure.JavaClassifierType
@@ -14,7 +14,7 @@
* limitations under the License.
*/
package kotlin.reflect.jvm.internal.structure
package org.jetbrains.kotlin.descriptors.runtime.structure
import org.jetbrains.kotlin.load.java.structure.JavaAnnotation
import org.jetbrains.kotlin.load.java.structure.JavaClassifier
@@ -14,7 +14,7 @@
* limitations under the License.
*/
package kotlin.reflect.jvm.internal.structure
package org.jetbrains.kotlin.descriptors.runtime.structure
import org.jetbrains.kotlin.load.java.structure.JavaConstructor
import org.jetbrains.kotlin.load.java.structure.JavaValueParameter
@@ -14,7 +14,7 @@
* limitations under the License.
*/
package kotlin.reflect.jvm.internal.structure
package org.jetbrains.kotlin.descriptors.runtime.structure
import org.jetbrains.kotlin.load.java.structure.JavaElement
@@ -0,0 +1,31 @@
/*
* Copyright 2010-2017 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.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jetbrains.kotlin.descriptors.runtime.structure
import org.jetbrains.kotlin.load.java.structure.JavaField
import java.lang.reflect.Field
class ReflectJavaField(override val member: Field) : ReflectJavaMember(), JavaField {
override val isEnumEntry: Boolean
get() = member.isEnumConstant
override val type: ReflectJavaType
get() = ReflectJavaType.create(member.genericType)
override val initializerValue: Any? get() = null
override val hasConstantNotNullInitializer get() = false
}
@@ -14,7 +14,7 @@
* limitations under the License.
*/
package kotlin.reflect.jvm.internal.structure
package org.jetbrains.kotlin.descriptors.runtime.structure
import org.jetbrains.kotlin.load.java.structure.JavaMember
import org.jetbrains.kotlin.load.java.structure.JavaValueParameter
@@ -14,7 +14,7 @@
* limitations under the License.
*/
package kotlin.reflect.jvm.internal.structure
package org.jetbrains.kotlin.descriptors.runtime.structure
import org.jetbrains.kotlin.load.java.structure.JavaAnnotationArgument
import org.jetbrains.kotlin.load.java.structure.JavaMethod
@@ -14,7 +14,7 @@
* limitations under the License.
*/
package kotlin.reflect.jvm.internal.structure
package org.jetbrains.kotlin.descriptors.runtime.structure
import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.descriptors.Visibility
@@ -14,7 +14,7 @@
* limitations under the License.
*/
package kotlin.reflect.jvm.internal.structure
package org.jetbrains.kotlin.descriptors.runtime.structure
import org.jetbrains.kotlin.load.java.structure.JavaAnnotation
import org.jetbrains.kotlin.load.java.structure.JavaClass
@@ -14,7 +14,7 @@
* limitations under the License.
*/
package kotlin.reflect.jvm.internal.structure
package org.jetbrains.kotlin.descriptors.runtime.structure
import org.jetbrains.kotlin.builtins.PrimitiveType
import org.jetbrains.kotlin.load.java.structure.JavaPrimitiveType
@@ -14,7 +14,7 @@
* limitations under the License.
*/
package kotlin.reflect.jvm.internal.structure
package org.jetbrains.kotlin.descriptors.runtime.structure
import org.jetbrains.kotlin.load.java.structure.JavaType
import java.lang.reflect.GenericArrayType
@@ -14,7 +14,7 @@
* limitations under the License.
*/
package kotlin.reflect.jvm.internal.structure
package org.jetbrains.kotlin.descriptors.runtime.structure
import org.jetbrains.kotlin.load.java.structure.JavaTypeParameter
import org.jetbrains.kotlin.name.Name
@@ -14,7 +14,7 @@
* limitations under the License.
*/
package kotlin.reflect.jvm.internal.structure
package org.jetbrains.kotlin.descriptors.runtime.structure
import org.jetbrains.kotlin.load.java.structure.JavaValueParameter
import org.jetbrains.kotlin.name.FqName
@@ -14,7 +14,7 @@
* limitations under the License.
*/
package kotlin.reflect.jvm.internal.structure
package org.jetbrains.kotlin.descriptors.runtime.structure
import org.jetbrains.kotlin.load.java.structure.JavaWildcardType
import java.lang.reflect.WildcardType
@@ -14,7 +14,7 @@
* limitations under the License.
*/
package kotlin.reflect.jvm.internal.structure
package org.jetbrains.kotlin.descriptors.runtime.structure
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.FqName
@@ -38,9 +38,9 @@ import java.io.File
import java.net.URLClassLoader
import java.util.*
import java.util.regex.Pattern
import kotlin.reflect.jvm.internal.components.ReflectKotlinClass
import kotlin.reflect.jvm.internal.components.RuntimeModuleData
import kotlin.reflect.jvm.internal.structure.classId
import org.jetbrains.kotlin.descriptors.runtime.components.ReflectKotlinClass
import org.jetbrains.kotlin.descriptors.runtime.components.RuntimeModuleData
import org.jetbrains.kotlin.descriptors.runtime.structure.classId
abstract class AbstractJvmRuntimeDescriptorLoaderTest : TestCaseWithTmpdir() {
companion object {
@@ -28,7 +28,7 @@ import kotlin.reflect.jvm.internal.KPackageImpl
import kotlin.reflect.jvm.internal.KTypeImpl
import kotlin.reflect.jvm.internal.asKCallableImpl
import kotlin.reflect.jvm.internal.asKPropertyImpl
import kotlin.reflect.jvm.internal.components.ReflectKotlinClass
import org.jetbrains.kotlin.descriptors.runtime.components.ReflectKotlinClass
// Kotlin reflection -> Java reflection
@@ -36,9 +36,9 @@ import kotlin.jvm.internal.TypeIntrinsics
import kotlin.reflect.*
import kotlin.reflect.jvm.internal.KDeclarationContainerImpl.MemberBelonginess.DECLARED
import kotlin.reflect.jvm.internal.KDeclarationContainerImpl.MemberBelonginess.INHERITED
import kotlin.reflect.jvm.internal.components.ReflectKotlinClass
import kotlin.reflect.jvm.internal.structure.functionClassArity
import kotlin.reflect.jvm.internal.structure.wrapperByPrimitive
import org.jetbrains.kotlin.descriptors.runtime.components.ReflectKotlinClass
import org.jetbrains.kotlin.descriptors.runtime.structure.functionClassArity
import org.jetbrains.kotlin.descriptors.runtime.structure.wrapperByPrimitive
internal class KClassImpl<T : Any>(override val jClass: Class<T>) : KDeclarationContainerImpl(), KClass<T>, KClassifierImpl {
inner class Data : KDeclarationContainerImpl.Data() {
@@ -25,11 +25,11 @@ import org.jetbrains.kotlin.resolve.scopes.MemberScope
import java.lang.reflect.Constructor
import java.lang.reflect.Method
import kotlin.jvm.internal.ClassBasedDeclarationContainer
import kotlin.reflect.jvm.internal.components.RuntimeModuleData
import kotlin.reflect.jvm.internal.components.tryLoadClass
import kotlin.reflect.jvm.internal.structure.createArrayType
import kotlin.reflect.jvm.internal.structure.safeClassLoader
import kotlin.reflect.jvm.internal.structure.wrapperByPrimitive
import org.jetbrains.kotlin.descriptors.runtime.components.RuntimeModuleData
import org.jetbrains.kotlin.descriptors.runtime.components.tryLoadClass
import org.jetbrains.kotlin.descriptors.runtime.structure.createArrayType
import org.jetbrains.kotlin.descriptors.runtime.structure.safeClassLoader
import org.jetbrains.kotlin.descriptors.runtime.structure.wrapperByPrimitive
internal abstract class KDeclarationContainerImpl : ClassBasedDeclarationContainer {
abstract inner class Data {
@@ -32,8 +32,8 @@ import org.jetbrains.kotlin.resolve.scopes.MemberScope
import org.jetbrains.kotlin.serialization.deserialization.MemberDeserializer
import kotlin.reflect.KCallable
import kotlin.reflect.jvm.internal.KDeclarationContainerImpl.MemberBelonginess.DECLARED
import kotlin.reflect.jvm.internal.components.ReflectKotlinClass
import kotlin.reflect.jvm.internal.structure.classId
import org.jetbrains.kotlin.descriptors.runtime.components.ReflectKotlinClass
import org.jetbrains.kotlin.descriptors.runtime.structure.classId
internal class KPackageImpl(
override val jClass: Class<*>,
@@ -30,9 +30,9 @@ import kotlin.LazyThreadSafetyMode.PUBLICATION
import kotlin.reflect.KClassifier
import kotlin.reflect.KType
import kotlin.reflect.KTypeProjection
import kotlin.reflect.jvm.internal.structure.createArrayType
import kotlin.reflect.jvm.internal.structure.parameterizedTypeArguments
import kotlin.reflect.jvm.internal.structure.primitiveByWrapper
import org.jetbrains.kotlin.descriptors.runtime.structure.createArrayType
import org.jetbrains.kotlin.descriptors.runtime.structure.parameterizedTypeArguments
import org.jetbrains.kotlin.descriptors.runtime.structure.primitiveByWrapper
import kotlin.reflect.jvm.jvmErasure
internal class KTypeImpl(
@@ -21,6 +21,7 @@ import org.jetbrains.kotlin.builtins.PrimitiveType
import org.jetbrains.kotlin.builtins.jvm.CloneableClassScope
import org.jetbrains.kotlin.builtins.jvm.JavaToKotlinClassMap
import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.descriptors.runtime.structure.*
import org.jetbrains.kotlin.load.java.JvmAbi
import org.jetbrains.kotlin.load.java.descriptors.JavaClassConstructorDescriptor
import org.jetbrains.kotlin.load.java.descriptors.JavaMethodDescriptor
@@ -50,7 +51,6 @@ import org.jetbrains.kotlin.serialization.deserialization.descriptors.Deserializ
import java.lang.reflect.Constructor
import java.lang.reflect.Field
import java.lang.reflect.Method
import kotlin.reflect.jvm.internal.structure.*
internal sealed class JvmFunctionSignature {
abstract fun asString(): String
@@ -10,7 +10,7 @@ import java.lang.reflect.Type
import java.util.*
import kotlin.reflect.KClass
import kotlin.reflect.jvm.internal.KotlinReflectionInternalError
import kotlin.reflect.jvm.internal.structure.wrapperByPrimitive
import org.jetbrains.kotlin.descriptors.runtime.structure.wrapperByPrimitive
import java.lang.reflect.Method as ReflectMethod
internal class AnnotationConstructorCaller(
@@ -19,8 +19,8 @@ package kotlin.reflect.jvm.internal
import java.lang.ref.WeakReference
import java.util.concurrent.ConcurrentHashMap
import java.util.concurrent.ConcurrentMap
import kotlin.reflect.jvm.internal.components.RuntimeModuleData
import kotlin.reflect.jvm.internal.structure.safeClassLoader
import org.jetbrains.kotlin.descriptors.runtime.components.RuntimeModuleData
import org.jetbrains.kotlin.descriptors.runtime.structure.safeClassLoader
// TODO: collect nulls periodically
private val moduleByClassLoader: ConcurrentMap<WeakClassLoaderBox, WeakReference<RuntimeModuleData>> = ConcurrentHashMap()
@@ -39,13 +39,13 @@ import kotlin.jvm.internal.PropertyReference
import kotlin.reflect.KVisibility
import kotlin.reflect.full.IllegalCallableAccessException
import kotlin.reflect.jvm.internal.calls.createAnnotationInstance
import kotlin.reflect.jvm.internal.components.ReflectAnnotationSource
import kotlin.reflect.jvm.internal.components.ReflectKotlinClass
import kotlin.reflect.jvm.internal.components.RuntimeSourceElementFactory
import kotlin.reflect.jvm.internal.components.tryLoadClass
import kotlin.reflect.jvm.internal.structure.ReflectJavaAnnotation
import kotlin.reflect.jvm.internal.structure.ReflectJavaClass
import kotlin.reflect.jvm.internal.structure.safeClassLoader
import org.jetbrains.kotlin.descriptors.runtime.components.ReflectAnnotationSource
import org.jetbrains.kotlin.descriptors.runtime.components.ReflectKotlinClass
import org.jetbrains.kotlin.descriptors.runtime.components.RuntimeSourceElementFactory
import org.jetbrains.kotlin.descriptors.runtime.components.tryLoadClass
import org.jetbrains.kotlin.descriptors.runtime.structure.ReflectJavaAnnotation
import org.jetbrains.kotlin.descriptors.runtime.structure.ReflectJavaClass
import org.jetbrains.kotlin.descriptors.runtime.structure.safeClassLoader
internal val JVM_STATIC = FqName("kotlin.jvm.JvmStatic")