mirror of
https://github.com/github/codeql.git
synced 2026-04-30 03:05:15 +02:00
hasChildElement: include method -> local class edges
This commit is contained in:
@@ -79,7 +79,10 @@ class Element extends @element, Top {
|
||||
private predicate hasChildElement(Element parent, Element e) {
|
||||
cupackage(e, parent)
|
||||
or
|
||||
enclInReftype(e, parent)
|
||||
enclInReftype(e, parent) and
|
||||
not e instanceof LocalClassOrInterface
|
||||
or
|
||||
e.(LocalClassOrInterface).getLocalTypeDeclStmt().getEnclosingCallable() = parent
|
||||
or
|
||||
not enclInReftype(e, _) and
|
||||
e.(Class).getCompilationUnit() = parent
|
||||
|
||||
@@ -13,6 +13,8 @@
|
||||
| D | D |
|
||||
| Diamond1 | Diamond1 |
|
||||
| Diamond2 | Diamond2 |
|
||||
| DoublyLocalClass | DoublyLocalClass |
|
||||
| DoublyLocalClass | doublyLocalClassMethod |
|
||||
| I1 | m1 |
|
||||
| I1other | m1 |
|
||||
| I2 | f |
|
||||
@@ -26,6 +28,7 @@
|
||||
| ITop | f2 |
|
||||
| ITop | f3 |
|
||||
| LocalClass | LocalClass |
|
||||
| LocalClass | localClassMethod |
|
||||
| LocalClass | n |
|
||||
| MemberClass | MemberClass |
|
||||
| Object | Object |
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
| structure/A.java:7:2:7:4 | int | --none-- |
|
||||
| structure/A.java:9:2:9:5 | void | m |
|
||||
| structure/A.java:10:22:10:24 | int | --none-- |
|
||||
| structure/A.java:10:29:10:32 | void | localClassMethod |
|
||||
| structure/A.java:10:80:10:83 | void | doublyLocalClassMethod |
|
||||
| structure/A.java:11:3:11:5 | m(...) | m |
|
||||
| structure/A.java:15:17:15:17 | A | --none-- |
|
||||
| structure/A.java:16:2:16:4 | int | --none-- |
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
| structure/A.java:7:2:7:4 | int | --none-- |
|
||||
| structure/A.java:9:2:9:5 | void | --none-- |
|
||||
| structure/A.java:10:22:10:24 | int | --none-- |
|
||||
| structure/A.java:10:29:10:32 | void | --none-- |
|
||||
| structure/A.java:10:80:10:83 | void | --none-- |
|
||||
| structure/A.java:11:3:11:5 | m(...) | stmt on line 11 |
|
||||
| structure/A.java:15:17:15:17 | A | --none-- |
|
||||
| structure/A.java:16:2:16:4 | int | --none-- |
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
| structure/A.java:0:0:0:0 | A | structure/A.java:3:11:3:11 | I |
|
||||
| structure/A.java:0:0:0:0 | A | structure/A.java:5:14:5:14 | A |
|
||||
| structure/A.java:0:0:0:0 | A | structure/A.java:15:7:15:7 | B |
|
||||
| structure/A.java:0:0:0:0 | A | structure/A.java:20:7:20:7 | C |
|
||||
| structure/A.java:0:0:0:0 | A | structure/A.java:24:7:24:7 | D |
|
||||
| structure/A.java:5:14:5:14 | A | structure/A.java:5:14:5:14 | A |
|
||||
| structure/A.java:5:14:5:14 | A | structure/A.java:6:6:6:6 | x |
|
||||
| structure/A.java:5:14:5:14 | A | structure/A.java:7:6:7:6 | y |
|
||||
| structure/A.java:5:14:5:14 | A | structure/A.java:8:8:8:18 | MemberClass |
|
||||
| structure/A.java:5:14:5:14 | A | structure/A.java:9:7:9:7 | m |
|
||||
| structure/A.java:8:8:8:18 | MemberClass | structure/A.java:8:8:8:18 | MemberClass |
|
||||
| structure/A.java:9:7:9:7 | m | structure/A.java:10:9:10:18 | LocalClass |
|
||||
| structure/A.java:10:9:10:18 | LocalClass | structure/A.java:10:9:10:18 | LocalClass |
|
||||
| structure/A.java:10:9:10:18 | LocalClass | structure/A.java:10:26:10:26 | n |
|
||||
| structure/A.java:10:9:10:18 | LocalClass | structure/A.java:10:34:10:49 | localClassMethod |
|
||||
| structure/A.java:10:34:10:49 | localClassMethod | structure/A.java:10:61:10:76 | DoublyLocalClass |
|
||||
| structure/A.java:10:61:10:76 | DoublyLocalClass | structure/A.java:10:61:10:76 | DoublyLocalClass |
|
||||
| structure/A.java:10:61:10:76 | DoublyLocalClass | structure/A.java:10:85:10:106 | doublyLocalClassMethod |
|
||||
| structure/A.java:15:7:15:7 | B | structure/A.java:15:7:15:7 | B |
|
||||
| structure/A.java:15:7:15:7 | B | structure/A.java:16:6:16:6 | z |
|
||||
| structure/A.java:15:7:15:7 | B | structure/A.java:17:12:17:26 | MemberInterface |
|
||||
| structure/A.java:20:7:20:7 | C | structure/A.java:20:7:20:7 | C |
|
||||
| structure/A.java:20:7:20:7 | C | structure/A.java:21:6:21:6 | w |
|
||||
| structure/A.java:24:7:24:7 | D | structure/A.java:24:7:24:7 | <obinit> |
|
||||
| structure/A.java:24:7:24:7 | D | structure/A.java:24:7:24:7 | D |
|
||||
| structure/A.java:24:7:24:7 | D | structure/A.java:25:8:25:8 | new C(...) { ... } |
|
||||
| structure/A.java:25:8:25:8 | new C(...) { ... } | structure/A.java:25:8:25:8 | |
|
||||
7
java/ql/test/library-tests/structure/HasChildElement.ql
Normal file
7
java/ql/test/library-tests/structure/HasChildElement.ql
Normal file
@@ -0,0 +1,7 @@
|
||||
import java
|
||||
|
||||
from Element e1, Element e2
|
||||
where
|
||||
e1.hasChildElement(e2) and
|
||||
e1.getFile().toString() = "A"
|
||||
select e1, e2
|
||||
@@ -1,4 +1,6 @@
|
||||
| structure/A.java:5:14:5:14 | A | structure/A.java:9:7:9:7 | m | structure/A.java:5:14:5:14 | A |
|
||||
| structure/A.java:10:9:10:18 | LocalClass | structure/A.java:10:34:10:49 | localClassMethod | structure/A.java:10:9:10:18 | LocalClass |
|
||||
| structure/A.java:10:61:10:76 | DoublyLocalClass | structure/A.java:10:85:10:106 | doublyLocalClassMethod | structure/A.java:10:61:10:76 | DoublyLocalClass |
|
||||
| structure/A.java:15:7:15:7 | B | structure/A.java:9:7:9:7 | m | structure/A.java:5:14:5:14 | A |
|
||||
| structure/A.java:24:7:24:7 | D | structure/A.java:9:7:9:7 | m | structure/A.java:5:14:5:14 | A |
|
||||
| structure/A.java:24:7:24:7 | D | structure/A.java:24:7:24:7 | <obinit> | structure/A.java:24:7:24:7 | D |
|
||||
|
||||
@@ -14,6 +14,14 @@
|
||||
| structure/A.java:5:14:5:14 | A | structure/A.java:10:9:10:18 | LocalClass |
|
||||
| structure/A.java:5:14:5:14 | A | structure/A.java:10:26:10:26 | n |
|
||||
| structure/A.java:5:14:5:14 | A | structure/A.java:10:26:10:26 | n |
|
||||
| structure/A.java:5:14:5:14 | A | structure/A.java:10:34:10:49 | localClassMethod |
|
||||
| structure/A.java:5:14:5:14 | A | structure/A.java:10:34:10:49 | localClassMethod |
|
||||
| structure/A.java:5:14:5:14 | A | structure/A.java:10:61:10:76 | DoublyLocalClass |
|
||||
| structure/A.java:5:14:5:14 | A | structure/A.java:10:61:10:76 | DoublyLocalClass |
|
||||
| structure/A.java:5:14:5:14 | A | structure/A.java:10:61:10:76 | DoublyLocalClass |
|
||||
| structure/A.java:5:14:5:14 | A | structure/A.java:10:61:10:76 | DoublyLocalClass |
|
||||
| structure/A.java:5:14:5:14 | A | structure/A.java:10:85:10:106 | doublyLocalClassMethod |
|
||||
| structure/A.java:5:14:5:14 | A | structure/A.java:10:85:10:106 | doublyLocalClassMethod |
|
||||
| structure/A.java:6:6:6:6 | x | structure/A.java:7:6:7:6 | y |
|
||||
| structure/A.java:8:8:8:18 | MemberClass | structure/A.java:6:6:6:6 | x |
|
||||
| structure/A.java:8:8:8:18 | MemberClass | structure/A.java:6:6:6:6 | x |
|
||||
@@ -23,6 +31,10 @@
|
||||
| structure/A.java:8:8:8:18 | MemberClass | structure/A.java:9:7:9:7 | m |
|
||||
| structure/A.java:8:8:8:18 | MemberClass | structure/A.java:10:26:10:26 | n |
|
||||
| structure/A.java:8:8:8:18 | MemberClass | structure/A.java:10:26:10:26 | n |
|
||||
| structure/A.java:8:8:8:18 | MemberClass | structure/A.java:10:34:10:49 | localClassMethod |
|
||||
| structure/A.java:8:8:8:18 | MemberClass | structure/A.java:10:34:10:49 | localClassMethod |
|
||||
| structure/A.java:8:8:8:18 | MemberClass | structure/A.java:10:85:10:106 | doublyLocalClassMethod |
|
||||
| structure/A.java:8:8:8:18 | MemberClass | structure/A.java:10:85:10:106 | doublyLocalClassMethod |
|
||||
| structure/A.java:9:7:9:7 | m | structure/A.java:6:6:6:6 | x |
|
||||
| structure/A.java:9:7:9:7 | m | structure/A.java:7:6:7:6 | y |
|
||||
| structure/A.java:9:7:9:7 | m | structure/A.java:10:26:10:26 | n |
|
||||
@@ -38,8 +50,41 @@
|
||||
| structure/A.java:10:9:10:18 | LocalClass | structure/A.java:9:7:9:7 | m |
|
||||
| structure/A.java:10:9:10:18 | LocalClass | structure/A.java:10:26:10:26 | n |
|
||||
| structure/A.java:10:9:10:18 | LocalClass | structure/A.java:10:26:10:26 | n |
|
||||
| structure/A.java:10:9:10:18 | LocalClass | structure/A.java:10:34:10:49 | localClassMethod |
|
||||
| structure/A.java:10:9:10:18 | LocalClass | structure/A.java:10:34:10:49 | localClassMethod |
|
||||
| structure/A.java:10:9:10:18 | LocalClass | structure/A.java:10:85:10:106 | doublyLocalClassMethod |
|
||||
| structure/A.java:10:9:10:18 | LocalClass | structure/A.java:10:85:10:106 | doublyLocalClassMethod |
|
||||
| structure/A.java:10:26:10:26 | n | structure/A.java:6:6:6:6 | x |
|
||||
| structure/A.java:10:26:10:26 | n | structure/A.java:7:6:7:6 | y |
|
||||
| structure/A.java:10:34:10:49 | localClassMethod | structure/A.java:6:6:6:6 | x |
|
||||
| structure/A.java:10:34:10:49 | localClassMethod | structure/A.java:7:6:7:6 | y |
|
||||
| structure/A.java:10:34:10:49 | localClassMethod | structure/A.java:9:7:9:7 | m |
|
||||
| structure/A.java:10:34:10:49 | localClassMethod | structure/A.java:10:26:10:26 | n |
|
||||
| structure/A.java:10:61:10:76 | DoublyLocalClass | structure/A.java:6:6:6:6 | x |
|
||||
| structure/A.java:10:61:10:76 | DoublyLocalClass | structure/A.java:6:6:6:6 | x |
|
||||
| structure/A.java:10:61:10:76 | DoublyLocalClass | structure/A.java:7:6:7:6 | y |
|
||||
| structure/A.java:10:61:10:76 | DoublyLocalClass | structure/A.java:7:6:7:6 | y |
|
||||
| structure/A.java:10:61:10:76 | DoublyLocalClass | structure/A.java:8:8:8:18 | MemberClass |
|
||||
| structure/A.java:10:61:10:76 | DoublyLocalClass | structure/A.java:8:8:8:18 | MemberClass |
|
||||
| structure/A.java:10:61:10:76 | DoublyLocalClass | structure/A.java:8:8:8:18 | MemberClass |
|
||||
| structure/A.java:10:61:10:76 | DoublyLocalClass | structure/A.java:8:8:8:18 | MemberClass |
|
||||
| structure/A.java:10:61:10:76 | DoublyLocalClass | structure/A.java:9:7:9:7 | m |
|
||||
| structure/A.java:10:61:10:76 | DoublyLocalClass | structure/A.java:9:7:9:7 | m |
|
||||
| structure/A.java:10:61:10:76 | DoublyLocalClass | structure/A.java:10:9:10:18 | LocalClass |
|
||||
| structure/A.java:10:61:10:76 | DoublyLocalClass | structure/A.java:10:9:10:18 | LocalClass |
|
||||
| structure/A.java:10:61:10:76 | DoublyLocalClass | structure/A.java:10:9:10:18 | LocalClass |
|
||||
| structure/A.java:10:61:10:76 | DoublyLocalClass | structure/A.java:10:9:10:18 | LocalClass |
|
||||
| structure/A.java:10:61:10:76 | DoublyLocalClass | structure/A.java:10:26:10:26 | n |
|
||||
| structure/A.java:10:61:10:76 | DoublyLocalClass | structure/A.java:10:26:10:26 | n |
|
||||
| structure/A.java:10:61:10:76 | DoublyLocalClass | structure/A.java:10:34:10:49 | localClassMethod |
|
||||
| structure/A.java:10:61:10:76 | DoublyLocalClass | structure/A.java:10:34:10:49 | localClassMethod |
|
||||
| structure/A.java:10:61:10:76 | DoublyLocalClass | structure/A.java:10:85:10:106 | doublyLocalClassMethod |
|
||||
| structure/A.java:10:61:10:76 | DoublyLocalClass | structure/A.java:10:85:10:106 | doublyLocalClassMethod |
|
||||
| structure/A.java:10:85:10:106 | doublyLocalClassMethod | structure/A.java:6:6:6:6 | x |
|
||||
| structure/A.java:10:85:10:106 | doublyLocalClassMethod | structure/A.java:7:6:7:6 | y |
|
||||
| structure/A.java:10:85:10:106 | doublyLocalClassMethod | structure/A.java:9:7:9:7 | m |
|
||||
| structure/A.java:10:85:10:106 | doublyLocalClassMethod | structure/A.java:10:26:10:26 | n |
|
||||
| structure/A.java:10:85:10:106 | doublyLocalClassMethod | structure/A.java:10:34:10:49 | localClassMethod |
|
||||
| structure/A.java:15:7:15:7 | B | structure/A.java:16:6:16:6 | z |
|
||||
| structure/A.java:15:7:15:7 | B | structure/A.java:16:6:16:6 | z |
|
||||
| structure/A.java:15:7:15:7 | B | structure/A.java:17:12:17:26 | MemberInterface |
|
||||
|
||||
@@ -14,6 +14,17 @@
|
||||
| structure/A.java:10:9:10:18 | LocalClass | structure/A.java:10:9:10:18 | LocalClass |
|
||||
| structure/A.java:10:26:10:26 | n | structure/A.java:5:14:5:14 | A |
|
||||
| structure/A.java:10:26:10:26 | n | structure/A.java:10:9:10:18 | LocalClass |
|
||||
| structure/A.java:10:34:10:49 | localClassMethod | structure/A.java:5:14:5:14 | A |
|
||||
| structure/A.java:10:34:10:49 | localClassMethod | structure/A.java:10:9:10:18 | LocalClass |
|
||||
| structure/A.java:10:61:10:76 | DoublyLocalClass | structure/A.java:5:14:5:14 | A |
|
||||
| structure/A.java:10:61:10:76 | DoublyLocalClass | structure/A.java:5:14:5:14 | A |
|
||||
| structure/A.java:10:61:10:76 | DoublyLocalClass | structure/A.java:10:9:10:18 | LocalClass |
|
||||
| structure/A.java:10:61:10:76 | DoublyLocalClass | structure/A.java:10:9:10:18 | LocalClass |
|
||||
| structure/A.java:10:61:10:76 | DoublyLocalClass | structure/A.java:10:61:10:76 | DoublyLocalClass |
|
||||
| structure/A.java:10:61:10:76 | DoublyLocalClass | structure/A.java:10:61:10:76 | DoublyLocalClass |
|
||||
| structure/A.java:10:85:10:106 | doublyLocalClassMethod | structure/A.java:5:14:5:14 | A |
|
||||
| structure/A.java:10:85:10:106 | doublyLocalClassMethod | structure/A.java:10:9:10:18 | LocalClass |
|
||||
| structure/A.java:10:85:10:106 | doublyLocalClassMethod | structure/A.java:10:61:10:76 | DoublyLocalClass |
|
||||
| structure/A.java:15:7:15:7 | B | structure/A.java:15:7:15:7 | B |
|
||||
| structure/A.java:15:7:15:7 | B | structure/A.java:15:7:15:7 | B |
|
||||
| structure/A.java:16:6:16:6 | z | structure/A.java:15:7:15:7 | B |
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
| structure/A.java:8:8:8:18 | MemberClass | structure/A.java:5:14:5:14 | A |
|
||||
| structure/A.java:10:9:10:18 | LocalClass | structure/A.java:5:14:5:14 | A |
|
||||
| structure/A.java:10:61:10:76 | DoublyLocalClass | structure/A.java:10:9:10:18 | LocalClass |
|
||||
| structure/A.java:17:12:17:26 | MemberInterface | structure/A.java:15:7:15:7 | B |
|
||||
| structure/A.java:25:8:25:8 | new C(...) { ... } | structure/A.java:24:7:24:7 | D |
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
| structure/A.java:5:14:5:14 | A |
|
||||
| structure/A.java:8:8:8:18 | MemberClass |
|
||||
| structure/A.java:10:9:10:18 | LocalClass |
|
||||
| structure/A.java:10:61:10:76 | DoublyLocalClass |
|
||||
| structure/A.java:15:7:15:7 | B |
|
||||
| structure/A.java:17:12:17:26 | MemberInterface |
|
||||
| structure/A.java:20:7:20:7 | C |
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
| structure/A.java:5:14:5:14 | A | file://:0:0:0:0 | structure |
|
||||
| structure/A.java:8:8:8:18 | MemberClass | file://:0:0:0:0 | structure |
|
||||
| structure/A.java:10:9:10:18 | LocalClass | file://:0:0:0:0 | structure |
|
||||
| structure/A.java:10:61:10:76 | DoublyLocalClass | file://:0:0:0:0 | structure |
|
||||
| structure/A.java:15:7:15:7 | B | file://:0:0:0:0 | structure |
|
||||
| structure/A.java:17:12:17:26 | MemberInterface | file://:0:0:0:0 | structure |
|
||||
| structure/A.java:20:7:20:7 | C | file://:0:0:0:0 | structure |
|
||||
|
||||
@@ -7,7 +7,7 @@ public class A {
|
||||
int y;
|
||||
class MemberClass { }
|
||||
void m() {
|
||||
class LocalClass { int n; }
|
||||
class LocalClass { int n; void localClassMethod() { class DoublyLocalClass { void doublyLocalClassMethod() { } } } }
|
||||
m();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user