Skip to content

Commit

Permalink
Test hasBackingField
Browse files Browse the repository at this point in the history
  • Loading branch information
kuanyingchou authored and ting-yuan committed Jul 3, 2024
1 parent bde5e8a commit ad8a047
Show file tree
Hide file tree
Showing 5 changed files with 121 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,18 @@ class KSPAATest : AbstractKSPAATest() {
runTest("../test-utils/testData/api/builtInTypes.kt")
}

@TestMetadata("A.kt")
@Test
fun testA() {
runTest("../test-utils/testData/api/A.kt")
}

@TestMetadata("B.kt")
@Test
fun testB() {
runTest("../test-utils/testData/api/B.kt")
}

@Disabled
@TestMetadata("checkOverride.kt")
@Test
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.google.devtools.ksp.processor

import com.google.devtools.ksp.KspExperimental
import com.google.devtools.ksp.getClassDeclarationByName
import com.google.devtools.ksp.getDeclaredProperties
import com.google.devtools.ksp.processing.Resolver
import com.google.devtools.ksp.symbol.KSAnnotated

open class AProcessor : AbstractTestProcessor() {
val results = mutableListOf<String>()
override fun toResult(): List<String> {
return results
}

@OptIn(KspExperimental::class)
override fun process(resolver: Resolver): List<KSAnnotated> {
resolver.getClassDeclarationByName("BaseClass")!!.let { cls ->
println(cls.getDeclaredProperties().map { "${it.simpleName.asString()}(${it.hasBackingField})" }.toList())
}
return emptyList()
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.google.devtools.ksp.processor

import com.google.devtools.ksp.KspExperimental
import com.google.devtools.ksp.getClassDeclarationByName
import com.google.devtools.ksp.getDeclaredProperties
import com.google.devtools.ksp.processing.Resolver
import com.google.devtools.ksp.symbol.KSAnnotated

open class BProcessor : AbstractTestProcessor() {
val results = mutableListOf<String>()
override fun toResult(): List<String> {
return results
}

@OptIn(KspExperimental::class)
override fun process(resolver: Resolver): List<KSAnnotated> {
resolver.getClassDeclarationByName("BaseClass")!!.let { cls ->
println(cls.getDeclaredProperties().map { "${it.simpleName.asString()}(${it.hasBackingField})" }.toList())
// `hasBackingField` is true when running the test individually but is false when running the whole KSPAATest.
}
return emptyList()
}
}
32 changes: 32 additions & 0 deletions test-utils/testData/api/A.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
/*
* Copyright 2020 Google LLC
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

// WITH_RUNTIME
// TEST PROCESSOR: AProcessor
// EXPECTED:
// END
// MODULE: lib
// FILE: Test.kt
open class BaseClass<T>(val genericProp : T) {
fun baseMethod(input: T) {}
}
class SubClass(x : Int) : BaseClass<Int>(x) {
val subClassProp : String = "abc"
}
// MODULE: main(lib)
// FILE: Main.kt
class Main
32 changes: 32 additions & 0 deletions test-utils/testData/api/B.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
/*
* Copyright 2020 Google LLC
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

// WITH_RUNTIME
// TEST PROCESSOR: BProcessor
// EXPECTED:
// END
// MODULE: lib
// FILE: Test.kt
open class BaseClass(
open val value : List<Int>
)
class SubClass(
override val value : MutableList<Int>
) : BaseClass(value)
// MODULE: main(lib)
// FILE: Main.kt
class Main

0 comments on commit ad8a047

Please sign in to comment.