aboutsummaryrefslogtreecommitdiff
path: root/compiler-plugin/src/main/kotlin/com/google/devtools/ksp/symbol/impl/binary/KSTypeAliasDescriptorImpl.kt
diff options
context:
space:
mode:
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.kt38
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)
+ }
+}