Skip to content

Commit

Permalink
Test asMemberOf
Browse files Browse the repository at this point in the history
  • Loading branch information
kuanyingchou authored and ting-yuan committed Oct 5, 2024
1 parent 10657b6 commit 0054649
Show file tree
Hide file tree
Showing 3 changed files with 71 additions and 0 deletions.
28 changes: 28 additions & 0 deletions kotlin-analysis-api/testData/asMemberOf.kt
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,21 @@
// (kotlin.Int!!) -> kotlin.Unit!!
// Baz!!<kotlin.Long!!, kotlin.Number!!>
// END
// MODULE: lib
// FILE: Test.java
package lib;
import java.util.List;
class Test {
List<String> f() {
throw new RuntimeException("stub");
}
}
// FILE: TestKt.kt
package lib
class TestKt {
fun f(): MutableList<String> = TODO()
}
// MODULE: main(lib)
// FILE: Input.kt
open class Base<BaseTypeArg1, BaseTypeArg2> {
val intType: Int = 0
Expand Down Expand Up @@ -196,3 +211,16 @@ class JavaImpl implements KotlinInterface {
public void setY(int value) {
}
}
// FILE: main/Test.java
package main;
import java.util.List;
class Test {
List<String> f() {
throw new RuntimeException("stub");
}
}
// FILE: TestKt.kt
package main
class TestKt {
fun f(): MutableList<String> = TODO()
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,20 @@ class AsMemberOfProcessor : AbstractTestProcessor() {
}

override fun process(resolver: Resolver): List<KSAnnotated> {

listOf("main.Test", "lib.Test", "main.TestKt", "lib.TestKt").forEach { clsName ->
resolver.getClassDeclarationByName(clsName)!!.let { cls ->
val listType = cls.getAllFunctions().single {it.simpleName.asString() == "f"}.returnType!!.resolve()
val listDecl = listType.declaration as KSClassDeclaration
val iterator = listDecl.getAllFunctions().single { it.simpleName.asString() == "iterator" }
println("$clsName: ${iterator.asMemberOf(listType).returnType}")
val listIterator = resolver.getClassDeclarationByName("kotlin.collections.List")!!.getDeclaredFunctions().single { it.simpleName.asString() == "iterator" }
println("$clsName: ${listIterator.asMemberOf(listType).returnType}")
val mutableListIterator = resolver.getClassDeclarationByName("kotlin.collections.MutableCollection")!!.getDeclaredFunctions().single { it.simpleName.asString() == "iterator" }
println("$clsName: ${mutableListIterator.asMemberOf(listType).returnType}")
}
}

val base = resolver.getClassDeclarationByName("Base")!!
val child1 = resolver.getClassDeclarationByName("Child1")!!
addToResults(resolver, base, child1.asStarProjectedType())
Expand Down
29 changes: 29 additions & 0 deletions test-utils/testData/api/asMemberOf.kt
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,21 @@
// (kotlin.Int!!) -> kotlin.Unit!!
// Baz!!<kotlin.Long!!, kotlin.Number!!>
// END
// MODULE: lib
// FILE: Test.java
package lib;
import java.util.List;
class Test {
List<String> f() {
throw new RuntimeException("stub");
}
}
// FILE: TestKt.kt
package lib
class TestKt {
fun f(): MutableList<String> = TODO()
}
// MODULE: main(lib)
// FILE: Input.kt
open class Base<BaseTypeArg1, BaseTypeArg2> {
val intType: Int = 0
Expand Down Expand Up @@ -197,3 +212,17 @@ class JavaImpl implements KotlinInterface {
public void setY(int value) {
}
}

// FILE: main/Test.java
package main;
import java.util.List;
class Test {
List<String> f() {
throw new RuntimeException("stub");
}
}
// FILE: TestKt.kt
package main
class TestKt {
fun f(): MutableList<String> = TODO()
}

0 comments on commit 0054649

Please sign in to comment.