diff options
Diffstat (limited to 'compiler-plugin/src/main/kotlin/com/google/devtools/ksp/symbol/impl/binary/KSTypeAliasDescriptorImpl.kt')
-rw-r--r-- | compiler-plugin/src/main/kotlin/com/google/devtools/ksp/symbol/impl/binary/KSTypeAliasDescriptorImpl.kt | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/compiler-plugin/src/main/kotlin/com/google/devtools/ksp/symbol/impl/binary/KSTypeAliasDescriptorImpl.kt b/compiler-plugin/src/main/kotlin/com/google/devtools/ksp/symbol/impl/binary/KSTypeAliasDescriptorImpl.kt new file mode 100644 index 00000000..29dc0613 --- /dev/null +++ b/compiler-plugin/src/main/kotlin/com/google/devtools/ksp/symbol/impl/binary/KSTypeAliasDescriptorImpl.kt @@ -0,0 +1,38 @@ +package com.google.devtools.ksp.symbol.impl.binary + +import com.google.devtools.ksp.KSObjectCache +import com.google.devtools.ksp.processing.impl.KSNameImpl +import com.google.devtools.ksp.symbol.* +import com.google.devtools.ksp.toKSModifiers +import org.jetbrains.kotlin.descriptors.TypeAliasDescriptor + +class KSTypeAliasDescriptorImpl(descriptor: TypeAliasDescriptor) : + KSTypeAlias, + KSDeclarationDescriptorImpl(descriptor), + KSExpectActual by KSExpectActualDescriptorImpl(descriptor) { + companion object : KSObjectCache<TypeAliasDescriptor, KSTypeAliasDescriptorImpl>() { + fun getCached(descriptor: TypeAliasDescriptor) = KSTypeAliasDescriptorImpl.cache.getOrPut(descriptor) { + KSTypeAliasDescriptorImpl(descriptor) + } + } + + override val name: KSName by lazy { + KSNameImpl.getCached(descriptor.name.asString()) + } + + override val modifiers: Set<Modifier> by lazy { + descriptor.toKSModifiers() + } + + override val typeParameters: List<KSTypeParameter> by lazy { + descriptor.declaredTypeParameters.map { KSTypeParameterDescriptorImpl.getCached(it) } + } + + override val type: KSTypeReference by lazy { + KSTypeReferenceDescriptorImpl.getCached(descriptor.underlyingType, origin, this) + } + + override fun <D, R> accept(visitor: KSVisitor<D, R>, data: D): R { + return visitor.visitTypeAlias(this, data) + } +} |