mirror of
https://github.com/github/codeql.git
synced 2026-04-21 06:55:31 +02:00
Merge pull request #13718 from igfoo/igfoo/file_classes
Kotlin: Improve file class support
This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
fun a() {
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fun b() {
|
||||
a()
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
class C {
|
||||
fun c() {}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
| AKt.class:0:0:0:0 | AKt | true |
|
||||
| B.kt:0:0:0:0 | BKt | true |
|
||||
| C.kt:1:1:3:1 | C | false |
|
||||
@@ -0,0 +1,5 @@
|
||||
import java
|
||||
|
||||
from Class c
|
||||
where exists(c.getLocation().getFile().getRelativePath())
|
||||
select c, any(boolean b | if c.isFileClass() then b = true else b = false)
|
||||
@@ -0,0 +1,4 @@
|
||||
from create_database_utils import *
|
||||
|
||||
runSuccessfully([get_cmd("kotlinc"), 'A.kt'])
|
||||
run_codeql_database_create(['kotlinc -cp . B.kt C.kt'], lang="java")
|
||||
4
java/ql/lib/change-notes/2023-07-11-file-classes.md
Normal file
4
java/ql/lib/change-notes/2023-07-11-file-classes.md
Normal file
@@ -0,0 +1,4 @@
|
||||
---
|
||||
category: feature
|
||||
---
|
||||
* A `Class.isFileClass()` predicate, to identify Kotlin file classes, has been added.
|
||||
@@ -709,6 +709,12 @@ class Class extends ClassOrInterface {
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Holds if this class is a Kotlin "file class", e.g. the class FooKt
|
||||
* for top-level entities in Foo.kt.
|
||||
*/
|
||||
predicate isFileClass() { file_class(this) }
|
||||
|
||||
override string getAPrimaryQlClass() { result = "Class" }
|
||||
}
|
||||
|
||||
|
||||
2
java/ql/test/library-tests/file_classes/A.kt
Normal file
2
java/ql/test/library-tests/file_classes/A.kt
Normal file
@@ -0,0 +1,2 @@
|
||||
fun a() {
|
||||
}
|
||||
3
java/ql/test/library-tests/file_classes/B.kt
Normal file
3
java/ql/test/library-tests/file_classes/B.kt
Normal file
@@ -0,0 +1,3 @@
|
||||
fun b() {
|
||||
a()
|
||||
}
|
||||
3
java/ql/test/library-tests/file_classes/C.kt
Normal file
3
java/ql/test/library-tests/file_classes/C.kt
Normal file
@@ -0,0 +1,3 @@
|
||||
class C {
|
||||
fun c() {}
|
||||
}
|
||||
3
java/ql/test/library-tests/file_classes/classes.expected
Normal file
3
java/ql/test/library-tests/file_classes/classes.expected
Normal file
@@ -0,0 +1,3 @@
|
||||
| A.kt:0:0:0:0 | AKt | true |
|
||||
| B.kt:0:0:0:0 | BKt | true |
|
||||
| C.kt:1:1:3:1 | C | false |
|
||||
5
java/ql/test/library-tests/file_classes/classes.ql
Normal file
5
java/ql/test/library-tests/file_classes/classes.ql
Normal file
@@ -0,0 +1,5 @@
|
||||
import java
|
||||
|
||||
from Class c
|
||||
where c.fromSource()
|
||||
select c, any(boolean b | if c.isFileClass() then b = true else b = false)
|
||||
Reference in New Issue
Block a user