Skip to content

Commit 981fb70

Browse files
lukellmannting-yuan
authored andcommitted
Fix compilation
Abstract implementation classes that inherited from now sealed types have those supertypes removed and replace overridden with open members. Additional casts had to be introduced in a few places. A few when statements had to be made exhaustive (by specifying all cases) because they now operate on subjects with a sealed type.
1 parent 98666a8 commit 981fb70

File tree

13 files changed

+100
-89
lines changed

13 files changed

+100
-89
lines changed

compiler-plugin/src/main/kotlin/com/google/devtools/ksp/Incremental.kt

+2
Original file line numberDiff line numberDiff line change
@@ -703,6 +703,8 @@ class IncrementalContext(
703703
when (declaration) {
704704
is KSPropertyDeclarationJavaImpl -> recordLookupForJavaField(declaration.psi)
705705
is KSFunctionDeclarationJavaImpl -> recordLookupForJavaMethod(declaration.psi)
706+
is KSClassDeclaration, is KSFunctionDeclaration, is KSPropertyDeclaration, is KSTypeAlias,
707+
is KSTypeParameter -> Unit
706708
}
707709
}
708710

compiler-plugin/src/main/kotlin/com/google/devtools/ksp/processing/impl/ResolverImpl.kt

+2
Original file line numberDiff line numberDiff line change
@@ -1192,6 +1192,7 @@ class ResolverImpl(
11921192
if (declaration.isAbstract)
11931193
modifiers.add(Modifier.ABSTRACT)
11941194
}
1195+
is KSTypeAlias, is KSTypeParameter -> Unit
11951196
}
11961197
}
11971198
Origin.KOTLIN_LIB, Origin.JAVA_LIB -> {
@@ -1208,6 +1209,7 @@ class ResolverImpl(
12081209
if (declaration.jvmAccessFlag and Opcodes.ACC_SYNCHRONIZED != 0)
12091210
modifiers.add(Modifier.JAVA_SYNCHRONIZED)
12101211
}
1212+
is KSClassDeclaration, is KSTypeAlias, is KSTypeParameter -> Unit
12111213
}
12121214
}
12131215
else -> Unit

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

+13-12
Original file line numberDiff line numberDiff line change
@@ -30,21 +30,22 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.parents
3030
import org.jetbrains.kotlin.resolve.descriptorUtil.parentsWithSelf
3131
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
3232

33-
abstract class KSDeclarationDescriptorImpl(private val descriptor: DeclarationDescriptor) : KSDeclaration {
33+
abstract class KSDeclarationDescriptorImpl(private val descriptor: DeclarationDescriptor) /*: KSDeclaration*/ {
3434

35-
override val origin by lazy {
35+
open /*override*/ val origin by lazy {
3636
descriptor.origin
3737
}
3838

39-
override val containingFile: KSFile? = null
39+
open /*override*/ val containingFile: KSFile? = null
4040

41-
override val location: Location = NonExistLocation
41+
open /*override*/ val location: Location = NonExistLocation
4242

43-
override val annotations: Sequence<KSAnnotation> by lazy {
44-
descriptor.annotations.asSequence().map { KSAnnotationDescriptorImpl.getCached(it, this) }.memoized()
43+
open /*override*/ val annotations: Sequence<KSAnnotation> by lazy {
44+
descriptor.annotations.asSequence().map { KSAnnotationDescriptorImpl.getCached(it, this as KSDeclaration) }
45+
.memoized()
4546
}
4647

47-
override val parentDeclaration: KSDeclaration? by lazy {
48+
open /*override*/ val parentDeclaration: KSDeclaration? by lazy {
4849
val containingDescriptor = descriptor.parents.first()
4950
when (containingDescriptor) {
5051
is ClassDescriptor -> KSClassDeclarationDescriptorImpl.getCached(containingDescriptor)
@@ -53,27 +54,27 @@ abstract class KSDeclarationDescriptorImpl(private val descriptor: DeclarationDe
5354
} as KSDeclaration?
5455
}
5556

56-
override val parent: KSNode? by lazy {
57+
open /*override*/ val parent: KSNode? by lazy {
5758
parentDeclaration
5859
}
5960

60-
override val packageName: KSName by lazy {
61+
open /*override*/ val packageName: KSName by lazy {
6162
KSNameImpl.getCached(descriptor.findPackage().fqName.asString())
6263
}
6364

64-
override val qualifiedName: KSName by lazy {
65+
open /*override*/ val qualifiedName: KSName by lazy {
6566
KSNameImpl.getCached(descriptor.fqNameSafe.asString())
6667
}
6768

68-
override val simpleName: KSName by lazy {
69+
open /*override*/ val simpleName: KSName by lazy {
6970
KSNameImpl.getCached(descriptor.name.asString())
7071
}
7172

7273
override fun toString(): String {
7374
return this.simpleName.asString()
7475
}
7576

76-
override val docString = null
77+
open /*override*/ val docString: String? = null
7778
}
7879

7980
val DeclarationDescriptor.origin: Origin

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

+9-8
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ import com.google.devtools.ksp.symbol.impl.toKSPropertyDeclaration
2525
import com.google.devtools.ksp.toKSModifiers
2626
import org.jetbrains.kotlin.descriptors.PropertyAccessorDescriptor
2727

28-
abstract class KSPropertyAccessorDescriptorImpl(val descriptor: PropertyAccessorDescriptor) : KSPropertyAccessor {
29-
override val origin: Origin by lazy {
28+
abstract class KSPropertyAccessorDescriptorImpl(val descriptor: PropertyAccessorDescriptor) /*: KSPropertyAccessor*/ {
29+
open /*override*/ val origin: Origin by lazy {
3030
when (receiver.origin) {
3131
// if receiver is kotlin source, that means we are a synthetic where developer
3232
// didn't declare an explicit accessor so we used the descriptor instead
@@ -35,26 +35,27 @@ abstract class KSPropertyAccessorDescriptorImpl(val descriptor: PropertyAccessor
3535
}
3636
}
3737

38-
override val receiver: KSPropertyDeclaration by lazy {
38+
open /*override*/ val receiver: KSPropertyDeclaration by lazy {
3939
descriptor.correspondingProperty.toKSPropertyDeclaration()
4040
}
4141

42-
override val parent: KSNode? by lazy {
42+
open /*override*/ val parent: KSNode? by lazy {
4343
receiver
4444
}
4545

46-
override val location: Location
46+
open /*override*/ val location: Location
4747
get() {
4848
// if receiver is kotlin source, that means `this` is synthetic hence we want the property's location
4949
// Otherwise, receiver is also from a .class file where the location will be NoLocation
5050
return receiver.location
5151
}
5252

53-
override val annotations: Sequence<KSAnnotation> by lazy {
54-
descriptor.annotations.asSequence().map { KSAnnotationDescriptorImpl.getCached(it, this) }.memoized()
53+
open /*override*/ val annotations: Sequence<KSAnnotation> by lazy {
54+
descriptor.annotations.asSequence().map { KSAnnotationDescriptorImpl.getCached(it, this as KSPropertyAccessor) }
55+
.memoized()
5556
}
5657

57-
override val modifiers: Set<Modifier> by lazy {
58+
open /*override*/ val modifiers: Set<Modifier> by lazy {
5859
val modifiers = mutableSetOf<Modifier>()
5960
modifiers.addAll(descriptor.toKSModifiers())
6061
modifiers.addAll(descriptor.toFunctionKSModifiers())

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

+7-7
Original file line numberDiff line numberDiff line change
@@ -25,24 +25,24 @@ import com.google.devtools.ksp.symbol.impl.findParentDeclaration
2525
import com.google.devtools.ksp.symbol.impl.getDocString
2626
import com.intellij.psi.PsiElement
2727

28-
abstract class KSDeclarationJavaImpl(private val psi: PsiElement) : KSDeclaration {
29-
override val packageName: KSName by lazy {
30-
this.containingFile!!.packageName
28+
abstract class KSDeclarationJavaImpl(private val psi: PsiElement) /*: KSDeclaration*/ {
29+
open /*override*/ val packageName: KSName by lazy {
30+
(this as KSDeclaration).containingFile!!.packageName
3131
}
3232

3333
override fun toString(): String {
34-
return this.simpleName.asString()
34+
return (this as KSDeclaration).simpleName.asString()
3535
}
3636

37-
override val docString by lazy {
37+
open /*override*/ val docString by lazy {
3838
psi.getDocString()
3939
}
4040

41-
override val parentDeclaration: KSDeclaration? by lazy {
41+
open /*override*/ val parentDeclaration: KSDeclaration? by lazy {
4242
psi.findParentDeclaration()
4343
}
4444

45-
override val parent: KSNode? by lazy {
45+
open /*override*/ val parent: KSNode? by lazy {
4646
psi.findParentAnnotated()
4747
}
4848
}

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

+13-13
Original file line numberDiff line numberDiff line change
@@ -24,26 +24,26 @@ import com.google.devtools.ksp.symbol.*
2424
import com.google.devtools.ksp.symbol.impl.*
2525
import org.jetbrains.kotlin.psi.*
2626

27-
abstract class KSDeclarationImpl(val ktDeclaration: KtDeclaration) : KSDeclaration {
28-
override val origin: Origin = Origin.KOTLIN
27+
abstract class KSDeclarationImpl(val ktDeclaration: KtDeclaration) /*: KSDeclaration*/ {
28+
open /*override*/ val origin: Origin = Origin.KOTLIN
2929

30-
override val location: Location by lazy {
30+
open /*override*/ val location: Location by lazy {
3131
ktDeclaration.toLocation()
3232
}
3333

34-
override val simpleName: KSName by lazy {
34+
open /*override*/ val simpleName: KSName by lazy {
3535
KSNameImpl.getCached(ktDeclaration.name!!)
3636
}
3737

38-
override val qualifiedName: KSName? by lazy {
38+
open /*override*/ val qualifiedName: KSName? by lazy {
3939
(ktDeclaration as? KtNamedDeclaration)?.fqName?.let { KSNameImpl.getCached(it.asString()) }
4040
}
4141

42-
override val annotations: Sequence<KSAnnotation> by lazy {
42+
open /*override*/ val annotations: Sequence<KSAnnotation> by lazy {
4343
ktDeclaration.annotationEntries.asSequence().map { KSAnnotationImpl.getCached(it) }.memoized()
4444
}
4545

46-
override val modifiers: Set<Modifier> by lazy {
46+
open /*override*/ val modifiers: Set<Modifier> by lazy {
4747
// we do not check for JVM_STATIC here intentionally as it actually means static in parent class,
4848
// not in this class.
4949
// see: https://github.com/google/ksp/issues/378
@@ -56,25 +56,25 @@ abstract class KSDeclarationImpl(val ktDeclaration: KtDeclaration) : KSDeclarati
5656
}
5757
}
5858

59-
override val containingFile: KSFile? by lazy {
59+
open /*override*/ val containingFile: KSFile? by lazy {
6060
KSFileImpl.getCached(ktDeclaration.containingKtFile)
6161
}
6262

63-
override val packageName: KSName by lazy {
63+
open /*override*/ val packageName: KSName by lazy {
6464
this.containingFile!!.packageName
6565
}
6666

67-
override val typeParameters: List<KSTypeParameter> by lazy {
67+
open /*override*/ val typeParameters: List<KSTypeParameter> by lazy {
6868
(ktDeclaration as? KtTypeParameterListOwner)?.let {
6969
it.typeParameters.map { KSTypeParameterImpl.getCached(it) }
7070
} ?: emptyList()
7171
}
7272

73-
override val parentDeclaration: KSDeclaration? by lazy {
73+
open /*override*/ val parentDeclaration: KSDeclaration? by lazy {
7474
ktDeclaration.findParentDeclaration()
7575
}
7676

77-
override val parent: KSNode? by lazy {
77+
open /*override*/ val parent: KSNode? by lazy {
7878
ktDeclaration.findParentAnnotated()
7979
}
8080

@@ -86,7 +86,7 @@ abstract class KSDeclarationImpl(val ktDeclaration: KtDeclaration) : KSDeclarati
8686
ktDeclaration.annotationEntries.map { KSAnnotationImpl.getCached(it) }
8787
}
8888

89-
override val docString by lazy {
89+
open /*override*/ val docString by lazy {
9090
ktDeclaration.getDocString()
9191
}
9292
}

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

+11-11
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import com.google.devtools.ksp.symbol.impl.toLocation
2626
import org.jetbrains.kotlin.psi.KtProperty
2727
import org.jetbrains.kotlin.psi.KtPropertyAccessor
2828

29-
abstract class KSPropertyAccessorImpl(val ktPropertyAccessor: KtPropertyAccessor) : KSPropertyAccessor {
29+
abstract class KSPropertyAccessorImpl(val ktPropertyAccessor: KtPropertyAccessor) /*: KSPropertyAccessor*/ {
3030
companion object {
3131
fun getCached(ktPropertyAccessor: KtPropertyAccessor): KSPropertyAccessor {
3232
return if (ktPropertyAccessor.isGetter) {
@@ -36,27 +36,27 @@ abstract class KSPropertyAccessorImpl(val ktPropertyAccessor: KtPropertyAccessor
3636
}
3737
}
3838
}
39-
override val receiver: KSPropertyDeclaration by lazy {
39+
open /*override*/ val receiver: KSPropertyDeclaration by lazy {
4040
KSPropertyDeclarationImpl.getCached(ktPropertyAccessor.property as KtProperty)
4141
}
42-
override val annotations: Sequence<KSAnnotation> by lazy {
42+
open /*override*/ val annotations: Sequence<KSAnnotation> by lazy {
4343
ktPropertyAccessor.filterUseSiteTargetAnnotations().map { KSAnnotationImpl.getCached(it) }
44-
.plus(this.findAnnotationFromUseSiteTarget())
44+
.plus((this as KSPropertyAccessor).findAnnotationFromUseSiteTarget())
4545
}
4646

47-
override val parent: KSNode? by lazy {
47+
open /*override*/ val parent: KSNode? by lazy {
4848
receiver
4949
}
5050

51-
override val location: Location by lazy {
51+
open /*override*/ val location: Location by lazy {
5252
ktPropertyAccessor.toLocation()
5353
}
5454

55-
override val modifiers: Set<Modifier> by lazy {
55+
open /*override*/ val modifiers: Set<Modifier> by lazy {
5656
ktPropertyAccessor.toKSModifiers()
5757
}
5858

59-
override val declarations: Sequence<KSDeclaration> by lazy {
59+
open /*override*/ val declarations: Sequence<KSDeclaration> by lazy {
6060
if (!ktPropertyAccessor.hasBlockBody()) {
6161
emptySequence()
6262
} else {
@@ -65,10 +65,10 @@ abstract class KSPropertyAccessorImpl(val ktPropertyAccessor: KtPropertyAccessor
6565
}
6666
}
6767

68-
override val origin: Origin = Origin.KOTLIN
68+
open /*override*/ val origin: Origin = Origin.KOTLIN
6969

70-
override fun <D, R> accept(visitor: KSVisitor<D, R>, data: D): R {
71-
return visitor.visitPropertyAccessor(this, data)
70+
open /*override*/ fun <D, R> accept(visitor: KSVisitor<D, R>, data: D): R {
71+
return visitor.visitPropertyAccessor(this as KSPropertyAccessor, data)
7272
}
7373

7474
internal val originalAnnotations: List<KSAnnotation> by lazy {

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

+5-3
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,7 @@ import com.google.devtools.ksp.processing.impl.ResolverImpl
2525
import com.google.devtools.ksp.symbol.*
2626

2727
class KSConstructorSyntheticImpl private constructor(val ksClassDeclaration: KSClassDeclaration) :
28-
KSFunctionDeclaration,
29-
KSDeclaration
30-
by ksClassDeclaration {
28+
KSFunctionDeclaration {
3129
companion object : KSObjectCache<KSClassDeclaration, KSConstructorSyntheticImpl>() {
3230
fun getCached(ksClassDeclaration: KSClassDeclaration) =
3331
KSConstructorSyntheticImpl.cache.getOrPut(ksClassDeclaration) {
@@ -43,6 +41,10 @@ class KSConstructorSyntheticImpl private constructor(val ksClassDeclaration: KSC
4341

4442
override val functionKind: FunctionKind = FunctionKind.MEMBER
4543

44+
override val docString: String? get() = ksClassDeclaration.docString
45+
46+
override val packageName: KSName get() = ksClassDeclaration.packageName
47+
4648
override val qualifiedName: KSName? by lazy {
4749
KSNameImpl.getCached(ksClassDeclaration.qualifiedName?.asString()?.plus(".<init>") ?: "")
4850
}

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

+9-9
Original file line numberDiff line numberDiff line change
@@ -20,22 +20,22 @@ package com.google.devtools.ksp.symbol.impl.synthetic
2020
import com.google.devtools.ksp.processing.impl.findAnnotationFromUseSiteTarget
2121
import com.google.devtools.ksp.symbol.*
2222

23-
abstract class KSPropertyAccessorSyntheticImpl(ksPropertyDeclaration: KSPropertyDeclaration) : KSPropertyAccessor {
24-
override val annotations: Sequence<KSAnnotation> by lazy {
25-
this.findAnnotationFromUseSiteTarget()
23+
abstract class KSPropertyAccessorSyntheticImpl(ksPropertyDeclaration: KSPropertyDeclaration) /*: KSPropertyAccessor*/ {
24+
open /*override*/ val annotations: Sequence<KSAnnotation> by lazy {
25+
(this as KSPropertyAccessor).findAnnotationFromUseSiteTarget()
2626
}
2727

28-
override val location: Location by lazy {
28+
open /*override*/ val location: Location by lazy {
2929
ksPropertyDeclaration.location
3030
}
3131

32-
override val modifiers: Set<Modifier> = emptySet()
32+
open /*override*/ val modifiers: Set<Modifier> = emptySet()
3333

34-
override val origin: Origin = Origin.SYNTHETIC
34+
open /*override*/ val origin: Origin = Origin.SYNTHETIC
3535

36-
override val receiver: KSPropertyDeclaration = ksPropertyDeclaration
36+
open /*override*/ val receiver: KSPropertyDeclaration = ksPropertyDeclaration
3737

38-
override fun <D, R> accept(visitor: KSVisitor<D, R>, data: D): R {
39-
return visitor.visitPropertyAccessor(this, data)
38+
open /*override*/ fun <D, R> accept(visitor: KSVisitor<D, R>, data: D): R {
39+
return visitor.visitPropertyAccessor(this as KSPropertyAccessor, data)
4040
}
4141
}

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

+3-2
Original file line numberDiff line numberDiff line change
@@ -319,7 +319,7 @@ internal class DeclarationOrdering(
319319
}
320320

321321
private fun getOrder(decl: KSDeclarationDescriptorImpl): Int {
322-
return declOrdering.getOrPut(decl) {
322+
return declOrdering.getOrPut(decl as KSDeclaration) {
323323
when (decl) {
324324
is KSPropertyDeclarationDescriptorImpl -> {
325325
fieldOrdering[decl.simpleName.asString()]?.let {
@@ -467,7 +467,8 @@ internal val KSDeclarationContainer.declarationsInSourceOrder: Sequence<KSDeclar
467467
DeclarationOrdering(it)
468468
} ?: return declarations
469469

470-
return (declarations as? Sequence<KSDeclarationDescriptorImpl>)?.sortedWith(declarationOrdering.comparator)
470+
return (declarations as? Sequence<KSDeclarationDescriptorImpl>)
471+
?.sortedWith(declarationOrdering.comparator) as Sequence<KSDeclaration>?
471472
?: declarations
472473
}
473474

kotlin-analysis-api/src/main/kotlin/com/google/devtools/ksp/impl/ResolverAAImpl.kt

+2
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,7 @@ class ResolverAAImpl(
169169
if (declaration.isAbstract)
170170
modifiers.add(Modifier.ABSTRACT)
171171
}
172+
is KSTypeAlias, is KSTypeParameter -> Unit
172173
}
173174
}
174175
Origin.KOTLIN_LIB, Origin.JAVA_LIB -> {
@@ -189,6 +190,7 @@ class ResolverAAImpl(
189190
if (declaration.jvmAccessFlag and Opcodes.ACC_SYNCHRONIZED != 0)
190191
modifiers.add(Modifier.JAVA_SYNCHRONIZED)
191192
}
193+
is KSClassDeclaration, is KSTypeAlias, is KSTypeParameter -> Unit
192194
}
193195
}
194196
else -> Unit

0 commit comments

Comments
 (0)