mirror of
https://github.com/github/codeql.git
synced 2026-04-30 11:15:13 +02:00
Add test for repeatable annotations
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
public @interface JavaDefinedContainer {
|
||||
|
||||
public JavaDefinedRepeatable[] value();
|
||||
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
@java.lang.annotation.Repeatable(JavaDefinedContainer.class)
|
||||
public @interface JavaDefinedRepeatable { }
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
@LibRepeatable
|
||||
@LibRepeatable
|
||||
@ExplicitContainerRepeatable
|
||||
@ExplicitContainerRepeatable
|
||||
@JavaDefinedRepeatable
|
||||
@JavaDefinedRepeatable
|
||||
public class JavaUser { }
|
||||
@@ -0,0 +1,7 @@
|
||||
@Repeatable
|
||||
public annotation class LibRepeatable { }
|
||||
|
||||
annotation class KtDefinedContainer(val value: Array<ExplicitContainerRepeatable>) { }
|
||||
|
||||
@java.lang.annotation.Repeatable(KtDefinedContainer::class)
|
||||
annotation class ExplicitContainerRepeatable() { }
|
||||
@@ -0,0 +1,15 @@
|
||||
| JavaUser.java:7:14:7:21 | JavaUser | out2/JavaUser.class:0:0:0:0 | Container | value | out2/JavaUser.class:0:0:0:0 | {...} |
|
||||
| JavaUser.java:7:14:7:21 | JavaUser | out2/JavaUser.class:0:0:0:0 | JavaDefinedContainer | value | out2/JavaUser.class:0:0:0:0 | {...} |
|
||||
| JavaUser.java:7:14:7:21 | JavaUser | out2/JavaUser.class:0:0:0:0 | KtDefinedContainer | value | out2/JavaUser.class:0:0:0:0 | {...} |
|
||||
| out/ExplicitContainerRepeatable.class:0:0:0:0 | ExplicitContainerRepeatable | out/ExplicitContainerRepeatable.class:0:0:0:0 | Repeatable | value | out/ExplicitContainerRepeatable.class:0:0:0:0 | KtDefinedContainer.class |
|
||||
| out/ExplicitContainerRepeatable.class:0:0:0:0 | ExplicitContainerRepeatable | out/ExplicitContainerRepeatable.class:0:0:0:0 | Retention | value | out/ExplicitContainerRepeatable.class:0:0:0:0 | RetentionPolicy.RUNTIME |
|
||||
| out/JavaDefinedRepeatable.class:0:0:0:0 | JavaDefinedRepeatable | out/JavaDefinedRepeatable.class:0:0:0:0 | Repeatable | value | out/JavaDefinedRepeatable.class:0:0:0:0 | JavaDefinedContainer.class |
|
||||
| out/KtDefinedContainer.class:0:0:0:0 | KtDefinedContainer | out/KtDefinedContainer.class:0:0:0:0 | Retention | value | out/KtDefinedContainer.class:0:0:0:0 | RetentionPolicy.RUNTIME |
|
||||
| out/LibRepeatable.class:0:0:0:0 | LibRepeatable | out/LibRepeatable.class:0:0:0:0 | Repeatable | value | out/LibRepeatable.class:0:0:0:0 | Container.class |
|
||||
| out/LibRepeatable.class:0:0:0:0 | LibRepeatable | out/LibRepeatable.class:0:0:0:0 | Retention | value | out/LibRepeatable.class:0:0:0:0 | RetentionPolicy.RUNTIME |
|
||||
| test.kt:1:1:2:43 | LocalRepeatable | test.kt:0:0:0:0 | Repeatable | value | test.kt:0:0:0:0 | Container.class |
|
||||
| test.kt:1:1:2:43 | LocalRepeatable | test.kt:0:0:0:0 | Retention | value | test.kt:0:0:0:0 | RetentionPolicy.RUNTIME |
|
||||
| test.kt:4:1:12:21 | User | test.kt:0:0:0:0 | Container | value | test.kt:0:0:0:0 | {...} |
|
||||
| test.kt:4:1:12:21 | User | test.kt:0:0:0:0 | Container | value | test.kt:0:0:0:0 | {...} |
|
||||
| test.kt:4:1:12:21 | User | test.kt:0:0:0:0 | JavaDefinedContainer | value | test.kt:0:0:0:0 | {...} |
|
||||
| test.kt:4:1:12:21 | User | test.kt:0:0:0:0 | KtDefinedContainer | value | test.kt:0:0:0:0 | {...} |
|
||||
@@ -0,0 +1,12 @@
|
||||
@Repeatable
|
||||
public annotation class LocalRepeatable { }
|
||||
|
||||
@LocalRepeatable
|
||||
@LocalRepeatable
|
||||
@LibRepeatable
|
||||
@LibRepeatable
|
||||
@ExplicitContainerRepeatable
|
||||
@ExplicitContainerRepeatable
|
||||
@JavaDefinedRepeatable
|
||||
@JavaDefinedRepeatable
|
||||
public class User { }
|
||||
@@ -0,0 +1,7 @@
|
||||
from create_database_utils import *
|
||||
|
||||
os.mkdir('out')
|
||||
os.mkdir('out2')
|
||||
runSuccessfully([get_cmd("kotlinc"), "lib.kt", "-d", "out"])
|
||||
runSuccessfully([get_cmd("javac"), "JavaDefinedContainer.java", "JavaDefinedRepeatable.java", "-d", "out"])
|
||||
run_codeql_database_create(["javac JavaUser.java -cp out -d out2", "kotlinc test.kt -cp out -d out2"], lang="java")
|
||||
@@ -0,0 +1,11 @@
|
||||
import java
|
||||
|
||||
from ClassOrInterface annotated, Annotation a, string valName, Expr val
|
||||
where
|
||||
a.getValue(valName) = val and
|
||||
annotated = a.getAnnotatedElement() and
|
||||
annotated.getName() in [
|
||||
"JavaDefinedRepeatable", "JavaDefinedContainer", "KtDefinedContainer", "LibRepeatable",
|
||||
"ExplicitContainerRepeatable", "LocalRepeatable", "User", "JavaUser"
|
||||
]
|
||||
select a.getAnnotatedElement(), a, valName, val
|
||||
Reference in New Issue
Block a user