diff --git a/compiler/psi/cls-psi-stub-builder/src/org/jetbrains/kotlin/psi/stubs/builder/ClsStubBuilderContext.kt b/compiler/psi/cls-psi-stub-builder/src/org/jetbrains/kotlin/psi/stubs/builder/ClsStubBuilderContext.kt index 949967b24df..af61011422d 100644 --- a/compiler/psi/cls-psi-stub-builder/src/org/jetbrains/kotlin/psi/stubs/builder/ClsStubBuilderContext.kt +++ b/compiler/psi/cls-psi-stub-builder/src/org/jetbrains/kotlin/psi/stubs/builder/ClsStubBuilderContext.kt @@ -10,16 +10,13 @@ import org.jetbrains.kotlin.metadata.deserialization.TypeTable import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name -import org.jetbrains.kotlin.serialization.deserialization.AnnotationAndConstantLoader -import org.jetbrains.kotlin.serialization.deserialization.ClassDataFinder -import org.jetbrains.kotlin.serialization.deserialization.ProtoContainer -import org.jetbrains.kotlin.serialization.deserialization.getName +import org.jetbrains.kotlin.serialization.deserialization.* data class ClassIdWithTarget(val classId: ClassId, val target: AnnotationUseSiteTarget?) class ClsStubBuilderComponents( val classDataFinder: ClassDataFinder, - val annotationLoader: AnnotationAndConstantLoader, + val annotationLoader: AnnotationLoader, val virtualFileForDebug: VirtualFile ) { fun createContext( diff --git a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/AnnotatedCallableKind.java b/core/deserialization.common/src/org/jetbrains/kotlin/serialization/deserialization/AnnotatedCallableKind.java similarity index 100% rename from core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/AnnotatedCallableKind.java rename to core/deserialization.common/src/org/jetbrains/kotlin/serialization/deserialization/AnnotatedCallableKind.java diff --git a/core/deserialization.common/src/org/jetbrains/kotlin/serialization/deserialization/AnnotationLoader.kt b/core/deserialization.common/src/org/jetbrains/kotlin/serialization/deserialization/AnnotationLoader.kt new file mode 100644 index 00000000000..377f3657733 --- /dev/null +++ b/core/deserialization.common/src/org/jetbrains/kotlin/serialization/deserialization/AnnotationLoader.kt @@ -0,0 +1,63 @@ +/* + * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.serialization.deserialization + +import org.jetbrains.kotlin.metadata.ProtoBuf +import org.jetbrains.kotlin.metadata.deserialization.NameResolver +import org.jetbrains.kotlin.protobuf.MessageLite + +// The MessageLite instance everywhere should be Constructor, Function or Property +// TODO: simplify this interface +interface AnnotationLoader { + fun loadClassAnnotations( + container: ProtoContainer.Class + ): List + + fun loadCallableAnnotations( + container: ProtoContainer, + proto: MessageLite, + kind: AnnotatedCallableKind + ): List + + fun loadPropertyBackingFieldAnnotations( + container: ProtoContainer, + proto: ProtoBuf.Property + ): List + + fun loadPropertyDelegateFieldAnnotations( + container: ProtoContainer, + proto: ProtoBuf.Property + ): List + + fun loadEnumEntryAnnotations( + container: ProtoContainer, + proto: ProtoBuf.EnumEntry + ): List + + fun loadValueParameterAnnotations( + container: ProtoContainer, + callableProto: MessageLite, + kind: AnnotatedCallableKind, + parameterIndex: Int, + proto: ProtoBuf.ValueParameter + ): List + + fun loadExtensionReceiverParameterAnnotations( + container: ProtoContainer, + proto: MessageLite, + kind: AnnotatedCallableKind + ): List + + fun loadTypeAnnotations( + proto: ProtoBuf.Type, + nameResolver: NameResolver + ): List + + fun loadTypeParameterAnnotations( + proto: ProtoBuf.TypeParameter, + nameResolver: NameResolver + ): List +} \ No newline at end of file diff --git a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/ProtoContainer.kt b/core/deserialization.common/src/org/jetbrains/kotlin/serialization/deserialization/ProtoContainer.kt similarity index 72% rename from core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/ProtoContainer.kt rename to core/deserialization.common/src/org/jetbrains/kotlin/serialization/deserialization/ProtoContainer.kt index a5bf2504ee9..74e9d4d956d 100644 --- a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/ProtoContainer.kt +++ b/core/deserialization.common/src/org/jetbrains/kotlin/serialization/deserialization/ProtoContainer.kt @@ -1,17 +1,6 @@ /* - * Copyright 2010-2015 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. + * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ package org.jetbrains.kotlin.serialization.deserialization @@ -56,4 +45,4 @@ sealed class ProtoContainer( abstract fun debugFqName(): FqName override fun toString() = "${this::class.java.simpleName}: ${debugFqName()}" -} +} \ No newline at end of file diff --git a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/AnnotationAndConstantLoader.kt b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/AnnotationAndConstantLoader.kt index b86a40f74a5..df24476b894 100644 --- a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/AnnotationAndConstantLoader.kt +++ b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/AnnotationAndConstantLoader.kt @@ -17,62 +17,9 @@ package org.jetbrains.kotlin.serialization.deserialization import org.jetbrains.kotlin.metadata.ProtoBuf -import org.jetbrains.kotlin.metadata.deserialization.NameResolver -import org.jetbrains.kotlin.protobuf.MessageLite import org.jetbrains.kotlin.types.KotlinType -// The MessageLite instance everywhere should be Constructor, Function or Property -// TODO: simplify this interface -interface AnnotationAndConstantLoader { - fun loadClassAnnotations( - container: ProtoContainer.Class - ): List - - fun loadCallableAnnotations( - container: ProtoContainer, - proto: MessageLite, - kind: AnnotatedCallableKind - ): List - - fun loadPropertyBackingFieldAnnotations( - container: ProtoContainer, - proto: ProtoBuf.Property - ): List - - fun loadPropertyDelegateFieldAnnotations( - container: ProtoContainer, - proto: ProtoBuf.Property - ): List - - fun loadEnumEntryAnnotations( - container: ProtoContainer, - proto: ProtoBuf.EnumEntry - ): List - - fun loadValueParameterAnnotations( - container: ProtoContainer, - callableProto: MessageLite, - kind: AnnotatedCallableKind, - parameterIndex: Int, - proto: ProtoBuf.ValueParameter - ): List - - fun loadExtensionReceiverParameterAnnotations( - container: ProtoContainer, - proto: MessageLite, - kind: AnnotatedCallableKind - ): List - - fun loadTypeAnnotations( - proto: ProtoBuf.Type, - nameResolver: NameResolver - ): List - - fun loadTypeParameterAnnotations( - proto: ProtoBuf.TypeParameter, - nameResolver: NameResolver - ): List - +interface AnnotationAndConstantLoader : AnnotationLoader { fun loadPropertyConstant( container: ProtoContainer, proto: ProtoBuf.Property,