Kotlin: Add a test for recursive interfaces

This commit is contained in:
Ian Lynagh
2025-10-30 15:36:32 +00:00
parent 9182da1d58
commit 06218d8acd
8 changed files with 53 additions and 0 deletions

View File

@@ -0,0 +1,4 @@
package somepkg;
public interface IfaceA<T> extends IfaceB<T> {}

View File

@@ -0,0 +1,4 @@
package somepkg;
public interface IfaceB<T> extends IfaceC<IfaceA<IfaceB<T>>> {}

View File

@@ -0,0 +1,4 @@
package somepkg;
public interface IfaceC<T> {}

View File

@@ -0,0 +1,6 @@
package somepkg;
public interface IfaceZ {
public <T> IfaceA<String> someFun();
}

View File

@@ -0,0 +1,5 @@
package mypkg
import somepkg.IfaceZ
class SomeClass(private val myVal: IfaceZ) { }

View File

@@ -0,0 +1,6 @@
import commands
def test(codeql, java_full):
codeql.database.create(
command=["kotlinc somepkg/IfaceA.java somepkg/IfaceB.java somepkg/IfaceC.java somepkg/IfaceZ.java test.kt"]
)

View File

@@ -0,0 +1,19 @@
| file:///!unknown-binary-location/somepkg/IfaceA.class:0:0:0:0 | IfaceA |
| file:///!unknown-binary-location/somepkg/IfaceA.class:0:0:0:0 | IfaceA<> |
| file:///!unknown-binary-location/somepkg/IfaceA.class:0:0:0:0 | IfaceA<IfaceB<>> |
| file:///!unknown-binary-location/somepkg/IfaceA.class:0:0:0:0 | IfaceA<IfaceB<String>> |
| file:///!unknown-binary-location/somepkg/IfaceA.class:0:0:0:0 | IfaceA<IfaceB<T>> |
| file:///!unknown-binary-location/somepkg/IfaceA.class:0:0:0:0 | IfaceA<IfaceB> |
| file:///!unknown-binary-location/somepkg/IfaceA.class:0:0:0:0 | IfaceA<String> |
| file:///!unknown-binary-location/somepkg/IfaceB.class:0:0:0:0 | IfaceB |
| file:///!unknown-binary-location/somepkg/IfaceB.class:0:0:0:0 | IfaceB<> |
| file:///!unknown-binary-location/somepkg/IfaceB.class:0:0:0:0 | IfaceB<IfaceB> |
| file:///!unknown-binary-location/somepkg/IfaceB.class:0:0:0:0 | IfaceB<String> |
| file:///!unknown-binary-location/somepkg/IfaceB.class:0:0:0:0 | IfaceB<T> |
| file:///!unknown-binary-location/somepkg/IfaceC.class:0:0:0:0 | IfaceC |
| file:///!unknown-binary-location/somepkg/IfaceC.class:0:0:0:0 | IfaceC<> |
| file:///!unknown-binary-location/somepkg/IfaceC.class:0:0:0:0 | IfaceC<IfaceA<IfaceB<>>> |
| file:///!unknown-binary-location/somepkg/IfaceC.class:0:0:0:0 | IfaceC<IfaceA<IfaceB<String>>> |
| file:///!unknown-binary-location/somepkg/IfaceC.class:0:0:0:0 | IfaceC<IfaceA<IfaceB<T>>> |
| file:///!unknown-binary-location/somepkg/IfaceC.class:0:0:0:0 | IfaceC<IfaceA<IfaceB>> |
| file:///!unknown-binary-location/somepkg/IfaceZ.class:0:0:0:0 | IfaceZ |

View File

@@ -0,0 +1,5 @@
import java
from Type t
where t.getName().matches("Iface%")
select t