Skip to content

Commit 8199c91

Browse files
committed
Refactoring of KSClassDeclaration.getAllFunctions and getAllProperties
1 parent b302b5b commit 8199c91

File tree

4 files changed

+36
-66
lines changed

4 files changed

+36
-66
lines changed

compiler-plugin/src/main/kotlin/com/google/devtools/ksp/symbol/impl/binary/KSClassDeclarationDescriptorImpl.kt

+19-13
Original file line numberDiff line numberDiff line change
@@ -53,19 +53,9 @@ class KSClassDeclarationDescriptorImpl private constructor(val descriptor: Class
5353
descriptor.isCompanionObject
5454
}
5555

56-
override fun getAllFunctions(): List<KSFunctionDeclaration> {
57-
ResolverImpl.instance.incrementalContext.recordLookupForGetAllFunctions(descriptor)
58-
return descriptor.unsubstitutedMemberScope.getDescriptorsFiltered(DescriptorKindFilter.FUNCTIONS).toList()
59-
.filter { (it as FunctionDescriptor).visibility != DescriptorVisibilities.INVISIBLE_FAKE }
60-
.map { KSFunctionDeclarationDescriptorImpl.getCached(it as FunctionDescriptor) }
61-
}
56+
override fun getAllFunctions(): List<KSFunctionDeclaration> = descriptor.getAllFunctions()
6257

63-
override fun getAllProperties(): List<KSPropertyDeclaration> {
64-
ResolverImpl.instance.incrementalContext.recordLookupForGetAllProperties(descriptor)
65-
return descriptor.unsubstitutedMemberScope.getDescriptorsFiltered(DescriptorKindFilter.VARIABLES).toList()
66-
.filter { (it as PropertyDescriptor).visibility != DescriptorVisibilities.INVISIBLE_FAKE }
67-
.map { KSPropertyDeclarationDescriptorImpl.getCached(it as PropertyDescriptor) }
68-
}
58+
override fun getAllProperties(): List<KSPropertyDeclaration> = descriptor.getAllProperties()
6959

7060
override val primaryConstructor: KSFunctionDeclaration? by lazy {
7161
descriptor.unsubstitutedPrimaryConstructor?.let { KSFunctionDeclarationDescriptorImpl.getCached(it) }
@@ -133,4 +123,20 @@ class KSClassDeclarationDescriptorImpl private constructor(val descriptor: Class
133123
override fun <D, R> accept(visitor: KSVisitor<D, R>, data: D): R {
134124
return visitor.visitClassDeclaration(this, data)
135125
}
136-
}
126+
}
127+
128+
internal fun ClassDescriptor.getAllFunctions(explicitConstructor: Boolean = false): List<KSFunctionDeclaration> {
129+
ResolverImpl.instance.incrementalContext.recordLookupForGetAllFunctions(this)
130+
val functionDescriptors = unsubstitutedMemberScope.getDescriptorsFiltered(DescriptorKindFilter.FUNCTIONS).toList()
131+
.filter { (it as FunctionDescriptor).visibility != DescriptorVisibilities.INVISIBLE_FAKE }.toMutableList()
132+
if (explicitConstructor)
133+
functionDescriptors += constructors
134+
return functionDescriptors.map { KSFunctionDeclarationDescriptorImpl.getCached(it as FunctionDescriptor) }
135+
}
136+
137+
internal fun ClassDescriptor.getAllProperties(): List<KSPropertyDeclaration> {
138+
ResolverImpl.instance.incrementalContext.recordLookupForGetAllProperties(this)
139+
return unsubstitutedMemberScope.getDescriptorsFiltered(DescriptorKindFilter.VARIABLES).toList()
140+
.filter { (it as PropertyDescriptor).visibility != DescriptorVisibilities.INVISIBLE_FAKE }
141+
.map { KSPropertyDeclarationDescriptorImpl.getCached(it as PropertyDescriptor) }
142+
}

compiler-plugin/src/main/kotlin/com/google/devtools/ksp/symbol/impl/java/KSClassDeclarationJavaEnumEntryImpl.kt

+7-22
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ package com.google.devtools.ksp.symbol.impl.java
2121
import com.google.devtools.ksp.processing.impl.ResolverImpl
2222
import com.google.devtools.ksp.symbol.*
2323
import com.google.devtools.ksp.symbol.impl.*
24+
import com.google.devtools.ksp.symbol.impl.binary.getAllFunctions
25+
import com.google.devtools.ksp.symbol.impl.binary.getAllProperties
2426
import com.google.devtools.ksp.symbol.impl.kotlin.KSExpectActualNoImpl
2527
import com.google.devtools.ksp.symbol.impl.kotlin.KSNameImpl
2628
import com.google.devtools.ksp.symbol.impl.kotlin.getKSTypeCached
@@ -62,33 +64,16 @@ class KSClassDeclarationJavaEnumEntryImpl private constructor(val psi: PsiEnumCo
6264
ResolverImpl.instance.resolveJavaDeclaration(psi) as ClassDescriptor
6365
}
6466

65-
override fun getAllFunctions(): List<KSFunctionDeclaration> {
66-
return descriptor?.let {
67-
ResolverImpl.instance.incrementalContext.recordLookupForGetAllFunctions(it)
68-
it.unsubstitutedMemberScope.getDescriptorsFiltered(DescriptorKindFilter.FUNCTIONS)
69-
.toList()
70-
.filter { (it as FunctionDescriptor).visibility != DescriptorVisibilities.INVISIBLE_FAKE }
71-
.plus(it.constructors)
72-
.map { (it as FunctionDescriptor).toKSFunctionDeclaration() }
73-
} ?: emptyList()
74-
}
67+
override fun getAllFunctions(): List<KSFunctionDeclaration> =
68+
descriptor?.getAllFunctions(true) ?: emptyList()
7569

76-
override fun getAllProperties(): List<KSPropertyDeclaration> {
77-
return descriptor?.let {
78-
ResolverImpl.instance.incrementalContext.recordLookupForGetAllProperties(it)
79-
it.unsubstitutedMemberScope.getDescriptorsFiltered(DescriptorKindFilter.VARIABLES)
80-
.toList()
81-
.filter { (it as PropertyDescriptor).visibility != DescriptorVisibilities.INVISIBLE_FAKE }
82-
.map{ (it as PropertyDescriptor).toKSPropertyDeclaration() }
83-
} ?: emptyList()
84-
}
70+
override fun getAllProperties(): List<KSPropertyDeclaration> =
71+
descriptor?.getAllProperties() ?: emptyList()
8572

8673
override val declarations: List<KSDeclaration> = emptyList()
8774

8875
override val modifiers: Set<Modifier> by lazy {
89-
val modifiers = mutableSetOf<Modifier>()
90-
modifiers.addAll(psi.toKSModifiers())
91-
modifiers
76+
psi.toKSModifiers()
9277
}
9378

9479
override val parentDeclaration: KSDeclaration? by lazy {

compiler-plugin/src/main/kotlin/com/google/devtools/ksp/symbol/impl/java/KSClassDeclarationJavaImpl.kt

+6-19
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ import org.jetbrains.kotlin.descriptors.Visibilities
2626
import com.google.devtools.ksp.processing.impl.ResolverImpl
2727
import com.google.devtools.ksp.symbol.*
2828
import com.google.devtools.ksp.symbol.impl.*
29+
import com.google.devtools.ksp.symbol.impl.binary.getAllFunctions
30+
import com.google.devtools.ksp.symbol.impl.binary.getAllProperties
2931
import com.google.devtools.ksp.symbol.impl.kotlin.KSExpectActualNoImpl
3032
import com.google.devtools.ksp.symbol.impl.kotlin.KSNameImpl
3133
import com.google.devtools.ksp.symbol.impl.kotlin.getKSTypeCached
@@ -75,26 +77,11 @@ class KSClassDeclarationJavaImpl private constructor(val psi: PsiClass) : KSClas
7577
ResolverImpl.moduleClassResolver.resolveClass(JavaClassImpl(psi))
7678
}
7779

78-
override fun getAllFunctions(): List<KSFunctionDeclaration> {
79-
return descriptor?.let {
80-
ResolverImpl.instance.incrementalContext.recordLookupForGetAllFunctions(it)
81-
it.unsubstitutedMemberScope.getDescriptorsFiltered(DescriptorKindFilter.FUNCTIONS)
82-
.toList()
83-
.filter { (it as FunctionDescriptor).visibility != DescriptorVisibilities.INVISIBLE_FAKE }
84-
.plus(it.constructors)
85-
.map { (it as FunctionDescriptor).toKSFunctionDeclaration() }
86-
} ?: emptyList()
87-
}
80+
override fun getAllFunctions(): List<KSFunctionDeclaration> =
81+
descriptor?.getAllFunctions(true) ?: emptyList()
8882

89-
override fun getAllProperties(): List<KSPropertyDeclaration> {
90-
return descriptor?.let {
91-
ResolverImpl.instance.incrementalContext.recordLookupForGetAllProperties(it)
92-
it.unsubstitutedMemberScope.getDescriptorsFiltered(DescriptorKindFilter.VARIABLES)
93-
.toList()
94-
.filter { (it as PropertyDescriptor).visibility != DescriptorVisibilities.INVISIBLE_FAKE }
95-
.map{ (it as PropertyDescriptor).toKSPropertyDeclaration() }
96-
} ?: emptyList()
97-
}
83+
override fun getAllProperties(): List<KSPropertyDeclaration> =
84+
descriptor?.getAllProperties() ?: emptyList()
9885

9986
override val declarations: List<KSDeclaration> by lazy {
10087
(psi.fields.map {

compiler-plugin/src/main/kotlin/com/google/devtools/ksp/symbol/impl/kotlin/KSClassDeclarationImpl.kt

+4-12
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ import org.jetbrains.kotlin.descriptors.Visibilities
2424
import com.google.devtools.ksp.processing.impl.ResolverImpl
2525
import com.google.devtools.ksp.symbol.*
2626
import com.google.devtools.ksp.symbol.impl.*
27+
import com.google.devtools.ksp.symbol.impl.binary.getAllFunctions
28+
import com.google.devtools.ksp.symbol.impl.binary.getAllProperties
2729
import com.google.devtools.ksp.symbol.impl.synthetic.KSConstructorSyntheticImpl
2830
import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
2931
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
@@ -49,19 +51,9 @@ class KSClassDeclarationImpl private constructor(val ktClassOrObject: KtClassOrO
4951
(ktClassOrObject is KtObjectDeclaration) && (ktClassOrObject.isCompanion())
5052
}
5153

52-
override fun getAllFunctions(): List<KSFunctionDeclaration> {
53-
ResolverImpl.instance.incrementalContext.recordLookupForGetAllFunctions(descriptor)
54-
return descriptor.unsubstitutedMemberScope.getDescriptorsFiltered(DescriptorKindFilter.FUNCTIONS).toList()
55-
.filter { (it as FunctionDescriptor).visibility != DescriptorVisibilities.INVISIBLE_FAKE }
56-
.map { (it as FunctionDescriptor).toKSFunctionDeclaration() }
57-
}
54+
override fun getAllFunctions(): List<KSFunctionDeclaration> = descriptor.getAllFunctions()
5855

59-
override fun getAllProperties(): List<KSPropertyDeclaration> {
60-
ResolverImpl.instance.incrementalContext.recordLookupForGetAllProperties(descriptor)
61-
return descriptor.unsubstitutedMemberScope.getDescriptorsFiltered(DescriptorKindFilter.VARIABLES).toList()
62-
.filter { (it as PropertyDescriptor).visibility != DescriptorVisibilities.INVISIBLE_FAKE }
63-
.map { (it as PropertyDescriptor).toKSPropertyDeclaration() }
64-
}
56+
override fun getAllProperties(): List<KSPropertyDeclaration> = descriptor.getAllProperties()
6557

6658
override val declarations: List<KSDeclaration> by lazy {
6759
val propertiesFromConstructor = primaryConstructor?.parameters

0 commit comments

Comments
 (0)