Skip to content

Commit

Permalink
fix modifier calculation for synthetic members
Browse files Browse the repository at this point in the history
(cherry picked from commit dcdecd7)
  • Loading branch information
neetopia authored and KSP Auto Pick committed Mar 5, 2024
1 parent e8e4967 commit e74274e
Show file tree
Hide file tree
Showing 5 changed files with 17 additions and 2 deletions.
2 changes: 1 addition & 1 deletion api/src/main/kotlin/com/google/devtools/ksp/utils.kt
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,7 @@ fun KSPropertyDeclaration.isAbstract(): Boolean {
(setter?.modifiers?.contains(Modifier.ABSTRACT) ?: true)
}

fun KSDeclaration.isOpen() = !this.isLocal() &&
fun KSDeclaration.isOpen() = !this.isLocal() && !this.modifiers.contains(Modifier.FINAL) &&
(
(this as? KSClassDeclaration)?.classKind == ClassKind.INTERFACE ||
this.modifiers.contains(Modifier.OVERRIDE) ||
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ abstract class AbstractKSDeclarationImpl(val ktDeclarationSymbol: KtDeclarationS
}

override val modifiers: Set<Modifier> by lazy {
if (origin == Origin.JAVA_LIB || origin == Origin.KOTLIN_LIB) {
if (origin == Origin.JAVA_LIB || origin == Origin.KOTLIN_LIB || origin == Origin.SYNTHETIC) {
when (ktDeclarationSymbol) {
is KtPropertySymbol -> ktDeclarationSymbol.toModifiers()
is KtClassOrObjectSymbol -> ktDeclarationSymbol.toModifiers()
Expand Down
6 changes: 6 additions & 0 deletions kotlin-analysis-api/testData/visibilities.kt
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
// KtEnumWithVal: <init>: PRIVATE
// KtEnumWithVal: values: PUBLIC
// KtEnumWithVal: valueOf: PUBLIC
// JavaAnnotation: value: PUBLIC
// END

// MODULE: lib
Expand Down Expand Up @@ -112,6 +113,11 @@ class C {
}
}

// FILE: JavaAnnotation.java
public @interface JavaAnnotation {
String value();
}

// FILE: Enum.java
public enum Enum {
Y,U,V;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ class VisibilityProcessor : AbstractTestProcessor() {
val javaEnum = resolver.getClassDeclarationByName("Enum")!!
val kotlinEnum = resolver.getClassDeclarationByName("KtEnum")!!
val kotlinEnumWithVal = resolver.getClassDeclarationByName("KtEnumWithVal")!!
val javaAnnotation = resolver.getClassDeclarationByName("JavaAnnotation")!!
javaClass.declarations.filterIsInstance<KSPropertyDeclaration>().map {
"${it.simpleName.asString()}: ${it.getVisibility()},visible in A, B, D: " +
"${it.isVisibleFrom(symbolA)}, ${it.isVisibleFrom(symbolB)}, ${it.isVisibleFrom(symbolD)}"
Expand Down Expand Up @@ -78,6 +79,9 @@ class VisibilityProcessor : AbstractTestProcessor() {
kotlinEnumWithVal.declarations.filterIsInstance<KSFunctionDeclaration>().map {
"${kotlinEnumWithVal.simpleName.asString()}: ${it.simpleName.asString()}: ${it.getVisibility() }"
}.forEach { results.add(it) }
javaAnnotation.declarations.filterIsInstance<KSPropertyDeclaration>().map {
"${javaAnnotation.simpleName.asString()}: ${it.simpleName.asString()}: ${it.getVisibility() }"
}.forEach { results.add(it) }
return emptyList()
}
}
5 changes: 5 additions & 0 deletions test-utils/testData/api/visibilities.kt
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,11 @@ class C {
}
}


// FILE: JavaAnnotation.java
public @interface JavaAnnotation {
String value();
}
// FILE: Enum.java
public enum Enum {
Y,U,V;
Expand Down

0 comments on commit e74274e

Please sign in to comment.