Make AnnotationsImpl internal, introduce Annotations.create
This commit is contained in:
@@ -29,7 +29,7 @@ import org.jetbrains.kotlin.descriptors.DeclarationDescriptor;
|
||||
import org.jetbrains.kotlin.descriptors.annotations.Annotated;
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotatedImpl;
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor;
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationsImpl;
|
||||
import org.jetbrains.kotlin.descriptors.annotations.Annotations;
|
||||
import org.jetbrains.kotlin.load.kotlin.header.KotlinClassHeader;
|
||||
import org.jetbrains.kotlin.metadata.ProtoBuf;
|
||||
import org.jetbrains.kotlin.name.FqName;
|
||||
@@ -84,7 +84,7 @@ public class PackagePartCodegen extends MemberCodegen<KtFile> {
|
||||
fileAnnotationDescriptors.add(annotationDescriptor);
|
||||
}
|
||||
}
|
||||
Annotated annotatedFile = new AnnotatedImpl(new AnnotationsImpl(fileAnnotationDescriptors));
|
||||
Annotated annotatedFile = new AnnotatedImpl(Annotations.Companion.create(fileAnnotationDescriptors));
|
||||
AnnotationCodegen.forClass(v.getVisitor(), this, state.getTypeMapper()).genAnnotations(annotatedFile, null);
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -114,7 +114,7 @@ class AnnotationSplitter(
|
||||
}
|
||||
}
|
||||
|
||||
map to AnnotationsImpl(other)
|
||||
map to Annotations.create(other)
|
||||
}
|
||||
|
||||
fun getOtherAnnotations(): Annotations = LazySplitAnnotations(storageManager, null)
|
||||
@@ -129,7 +129,7 @@ class AnnotationSplitter(
|
||||
val (targeted, other) = this@AnnotationSplitter.splitAnnotations()
|
||||
|
||||
if (target != null) {
|
||||
targeted[target]?.let(::AnnotationsImpl) ?: Annotations.EMPTY
|
||||
targeted[target]?.let((Annotations)::create) ?: Annotations.EMPTY
|
||||
} else {
|
||||
other
|
||||
}
|
||||
|
||||
@@ -17,7 +17,10 @@
|
||||
package org.jetbrains.kotlin.resolve
|
||||
|
||||
import com.intellij.psi.PsiElement
|
||||
import org.jetbrains.kotlin.builtins.*
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||
import org.jetbrains.kotlin.builtins.getReceiverTypeFromFunctionType
|
||||
import org.jetbrains.kotlin.builtins.getValueParameterTypesFromFunctionType
|
||||
import org.jetbrains.kotlin.builtins.isBuiltinFunctionalType
|
||||
import org.jetbrains.kotlin.config.AnalysisFlag
|
||||
import org.jetbrains.kotlin.config.LanguageFeature
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||
@@ -28,7 +31,6 @@ import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationSplitter
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
|
||||
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationsImpl
|
||||
import org.jetbrains.kotlin.descriptors.impl.ClassConstructorDescriptorImpl
|
||||
import org.jetbrains.kotlin.descriptors.impl.FunctionExpressionDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.impl.SimpleFunctionDescriptorImpl
|
||||
@@ -48,7 +50,6 @@ import org.jetbrains.kotlin.resolve.ModifiersChecker.resolveMemberModalityFromMo
|
||||
import org.jetbrains.kotlin.resolve.ModifiersChecker.resolveVisibilityFromModifiers
|
||||
import org.jetbrains.kotlin.resolve.bindingContextUtil.recordScope
|
||||
import org.jetbrains.kotlin.resolve.calls.DslMarkerUtils
|
||||
import org.jetbrains.kotlin.resolve.calls.checkers.DslScopeViolationCallChecker
|
||||
import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowInfo
|
||||
import org.jetbrains.kotlin.resolve.calls.util.createValueParametersForInvokeInFunctionType
|
||||
import org.jetbrains.kotlin.resolve.lazy.ForceResolveUtil
|
||||
@@ -308,7 +309,7 @@ class FunctionDescriptorResolver(
|
||||
private fun KotlinType.removeParameterNameAnnotation(): KotlinType {
|
||||
if (this is TypeUtils.SpecialType) return this
|
||||
val parameterNameAnnotation = annotations.findAnnotation(KotlinBuiltIns.FQ_NAMES.parameterName) ?: return this
|
||||
return replaceAnnotations(AnnotationsImpl(annotations.filter { it != parameterNameAnnotation }))
|
||||
return replaceAnnotations(Annotations.create(annotations.filter { it != parameterNameAnnotation }))
|
||||
}
|
||||
|
||||
private fun KotlinType.functionTypeExpected() = !TypeUtils.noExpectedType(this) && isBuiltinFunctionalType
|
||||
|
||||
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.builtins.jvm
|
||||
import org.jetbrains.kotlin.builtins.BuiltInsInitializer
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationsImpl
|
||||
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
||||
import org.jetbrains.kotlin.descriptors.annotations.createDeprecatedAnnotation
|
||||
import org.jetbrains.kotlin.descriptors.deserialization.AdditionalClassPartsProvider
|
||||
import org.jetbrains.kotlin.descriptors.deserialization.PLATFORM_DEPENDENT_ANNOTATION_FQ_NAME
|
||||
@@ -64,9 +64,10 @@ open class JvmBuiltInsSettings(
|
||||
|
||||
// Most this properties are lazy because they depends on KotlinBuiltIns initialization that depends on JvmBuiltInsSettings object
|
||||
private val notConsideredDeprecation by storageManager.createLazyValue {
|
||||
moduleDescriptor.builtIns.createDeprecatedAnnotation(
|
||||
val annotation = moduleDescriptor.builtIns.createDeprecatedAnnotation(
|
||||
"This member is not fully supported by Kotlin compiler, so it may be absent or have different signature in next major version"
|
||||
).let { AnnotationsImpl(listOf(it)) }
|
||||
)
|
||||
Annotations.create(listOf(annotation))
|
||||
}
|
||||
|
||||
private fun StorageManager.createMockJavaIoSerializableType(): KotlinType {
|
||||
|
||||
@@ -10,7 +10,6 @@ import org.jetbrains.kotlin.builtins.functions.FunctionClassDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationsImpl
|
||||
import org.jetbrains.kotlin.descriptors.annotations.BuiltInAnnotationDescriptor
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.name.FqNameUnsafe
|
||||
@@ -165,7 +164,7 @@ fun getFunctionTypeArgumentProjections(
|
||||
KotlinBuiltIns.FQ_NAMES.parameterName,
|
||||
mapOf(Name.identifier("name") to StringValue(name.asString()))
|
||||
)
|
||||
type.replaceAnnotations(AnnotationsImpl(type.annotations + parameterNameAnnotation))
|
||||
type.replaceAnnotations(Annotations.create(type.annotations + parameterNameAnnotation))
|
||||
}
|
||||
else {
|
||||
type
|
||||
@@ -199,8 +198,9 @@ fun createFunctionType(
|
||||
annotations
|
||||
}
|
||||
else {
|
||||
AnnotationsImpl(annotations +
|
||||
BuiltInAnnotationDescriptor(builtIns, KotlinBuiltIns.FQ_NAMES.extensionFunctionType, emptyMap()))
|
||||
Annotations.create(
|
||||
annotations + BuiltInAnnotationDescriptor(builtIns, KotlinBuiltIns.FQ_NAMES.extensionFunctionType, emptyMap())
|
||||
)
|
||||
}
|
||||
|
||||
return KotlinTypeFactory.simpleNotNullType(typeAnnotations, classDescriptor, arguments)
|
||||
|
||||
@@ -41,6 +41,9 @@ interface Annotations : Iterable<AnnotationDescriptor> {
|
||||
|
||||
override fun toString() = "EMPTY"
|
||||
}
|
||||
|
||||
fun create(annotations: List<AnnotationDescriptor>): Annotations =
|
||||
if (annotations.isEmpty()) EMPTY else AnnotationsImpl(annotations)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+4
-1
@@ -16,7 +16,10 @@
|
||||
|
||||
package org.jetbrains.kotlin.descriptors.annotations
|
||||
|
||||
class AnnotationsImpl(private val annotations: List<AnnotationDescriptor>) : Annotations {
|
||||
/**
|
||||
* Use [Annotations.create] to create an instance of this class if necessary.
|
||||
*/
|
||||
internal class AnnotationsImpl(private val annotations: List<AnnotationDescriptor>) : Annotations {
|
||||
override fun isEmpty(): Boolean = annotations.isEmpty()
|
||||
|
||||
override fun iterator(): Iterator<AnnotationDescriptor> = annotations.iterator()
|
||||
|
||||
+3
-2
@@ -8,7 +8,6 @@ package org.jetbrains.kotlin.serialization.deserialization
|
||||
import org.jetbrains.kotlin.builtins.isSuspendFunctionType
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationsImpl
|
||||
import org.jetbrains.kotlin.descriptors.impl.FieldDescriptorImpl
|
||||
import org.jetbrains.kotlin.descriptors.impl.PropertyGetterDescriptorImpl
|
||||
import org.jetbrains.kotlin.descriptors.impl.PropertySetterDescriptorImpl
|
||||
@@ -291,7 +290,9 @@ class MemberDeserializer(private val c: DeserializationContext) {
|
||||
}
|
||||
|
||||
fun loadTypeAlias(proto: ProtoBuf.TypeAlias): TypeAliasDescriptor {
|
||||
val annotations = AnnotationsImpl(proto.annotationList.map { annotationDeserializer.deserializeAnnotation(it, c.nameResolver) })
|
||||
val annotations = Annotations.create(
|
||||
proto.annotationList.map { annotationDeserializer.deserializeAnnotation(it, c.nameResolver) }
|
||||
)
|
||||
|
||||
val visibility = ProtoEnumFlags.visibility(Flags.VISIBILITY.get(proto.flags))
|
||||
val typeAlias = DeserializedTypeAliasDescriptor(
|
||||
|
||||
Reference in New Issue
Block a user