mirror of
https://github.com/github/codeql.git
synced 2025-12-23 04:06:37 +01:00
Merge pull request #10549 from tamasvajk/kotlin-fix-local-class-extraction
Kotlin: Fix non-nested local class extraction
This commit is contained in:
@@ -574,8 +574,8 @@ open class KotlinFileExtractor(
|
|||||||
|
|
||||||
break
|
break
|
||||||
} else if (parent is IrFile) {
|
} else if (parent is IrFile) {
|
||||||
if (innerClass != null) {
|
if (innerClass != null && !innerClass.isLocal) {
|
||||||
// We don't have to extract file class containers for classes
|
// We don't have to extract file class containers for classes except for local classes
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
if (this.filePath != parent.path) {
|
if (this.filePath != parent.path) {
|
||||||
|
|||||||
@@ -7,6 +7,30 @@ classes.kt:
|
|||||||
# 32| 0: [Parameter] s
|
# 32| 0: [Parameter] s
|
||||||
# 32| 0: [TypeAccess] String
|
# 32| 0: [TypeAccess] String
|
||||||
# 32| 5: [BlockStmt] { ... }
|
# 32| 5: [BlockStmt] { ... }
|
||||||
|
# 158| 2: [Method] fn1
|
||||||
|
# 158| 3: [TypeAccess] Unit
|
||||||
|
# 158| 5: [BlockStmt] { ... }
|
||||||
|
# 159| 0: [LocalTypeDeclStmt] class ...
|
||||||
|
# 159| 0: [LocalClass] X
|
||||||
|
# 159| 1: [Constructor] X
|
||||||
|
# 159| 5: [BlockStmt] { ... }
|
||||||
|
# 159| 0: [SuperConstructorInvocationStmt] super(...)
|
||||||
|
# 159| 1: [BlockStmt] { ... }
|
||||||
|
# 162| 3: [Method] fn2
|
||||||
|
# 162| 3: [TypeAccess] Object
|
||||||
|
# 162| 5: [BlockStmt] { ... }
|
||||||
|
# 162| 0: [ReturnStmt] return ...
|
||||||
|
# 162| 0: [StmtExpr] <Stmt>
|
||||||
|
# 162| 0: [BlockStmt] { ... }
|
||||||
|
# 162| 0: [LocalTypeDeclStmt] class ...
|
||||||
|
# 162| 0: [AnonymousClass,LocalClass] new Object(...) { ... }
|
||||||
|
# 162| 1: [Constructor]
|
||||||
|
# 162| 5: [BlockStmt] { ... }
|
||||||
|
# 162| 0: [SuperConstructorInvocationStmt] super(...)
|
||||||
|
# 162| 1: [BlockStmt] { ... }
|
||||||
|
# 162| 1: [ExprStmt] <Expr>;
|
||||||
|
# 162| 0: [ClassInstanceExpr] new (...)
|
||||||
|
# 162| -3: [TypeAccess] Object
|
||||||
# 2| 2: [Class] ClassOne
|
# 2| 2: [Class] ClassOne
|
||||||
# 2| 1: [Constructor] ClassOne
|
# 2| 1: [Constructor] ClassOne
|
||||||
# 2| 5: [BlockStmt] { ... }
|
# 2| 5: [BlockStmt] { ... }
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
| classes.kt:85:16:85:25 | new Object(...) { ... } | classes.kt:85:16:85:25 | new (...) | | classes.kt:85:16:85:25 | Object | classes.kt:85:16:85:25 | class ... |
|
| classes.kt:85:16:85:25 | new Object(...) { ... } | classes.kt:85:16:85:25 | new (...) | | classes.kt:85:16:85:25 | Object | classes.kt:85:16:85:25 | class ... |
|
||||||
| classes.kt:89:16:89:44 | new Interface3<Integer>(...) { ... } | classes.kt:89:16:89:44 | new (...) | | classes.kt:89:16:89:44 | Interface3<Integer> | classes.kt:89:16:89:44 | class ... |
|
| classes.kt:89:16:89:44 | new Interface3<Integer>(...) { ... } | classes.kt:89:16:89:44 | new (...) | | classes.kt:89:16:89:44 | Interface3<Integer> | classes.kt:89:16:89:44 | class ... |
|
||||||
| classes.kt:127:16:134:9 | new Object(...) { ... } | classes.kt:127:16:134:9 | new (...) | | classes.kt:127:16:134:9 | Object | classes.kt:127:16:134:9 | class ... |
|
| classes.kt:127:16:134:9 | new Object(...) { ... } | classes.kt:127:16:134:9 | new (...) | | classes.kt:127:16:134:9 | Object | classes.kt:127:16:134:9 | class ... |
|
||||||
|
| classes.kt:162:13:162:22 | new Object(...) { ... } | classes.kt:162:13:162:22 | new (...) | | classes.kt:162:13:162:22 | Object | classes.kt:162:13:162:22 | class ... |
|
||||||
| generic_anonymous.kt:3:19:5:3 | new Object(...) { ... } | generic_anonymous.kt:3:19:5:3 | new (...) | | generic_anonymous.kt:3:19:5:3 | Object | generic_anonymous.kt:3:19:5:3 | class ... |
|
| generic_anonymous.kt:3:19:5:3 | new Object(...) { ... } | generic_anonymous.kt:3:19:5:3 | new (...) | | generic_anonymous.kt:3:19:5:3 | Object | generic_anonymous.kt:3:19:5:3 | class ... |
|
||||||
| generic_anonymous.kt:26:13:26:37 | new Object(...) { ... } | generic_anonymous.kt:26:13:26:37 | new (...) | | generic_anonymous.kt:26:13:26:37 | Object | generic_anonymous.kt:26:13:26:37 | class ... |
|
| generic_anonymous.kt:26:13:26:37 | new Object(...) { ... } | generic_anonymous.kt:26:13:26:37 | new (...) | | generic_anonymous.kt:26:13:26:37 | Object | generic_anonymous.kt:26:13:26:37 | class ... |
|
||||||
| generic_anonymous.kt:27:13:27:37 | new Object(...) { ... } | generic_anonymous.kt:27:13:27:37 | new (...) | | generic_anonymous.kt:27:13:27:37 | Object | generic_anonymous.kt:27:13:27:37 | class ... |
|
| generic_anonymous.kt:27:13:27:37 | new Object(...) { ... } | generic_anonymous.kt:27:13:27:37 | new (...) | | generic_anonymous.kt:27:13:27:37 | Object | generic_anonymous.kt:27:13:27:37 | class ... |
|
||||||
|
|||||||
@@ -39,6 +39,8 @@
|
|||||||
| classes.kt:141:13:145:13 | Cl1 | Cl0$Cl1 | final, private |
|
| classes.kt:141:13:145:13 | Cl1 | Cl0$Cl1 | final, private |
|
||||||
| classes.kt:150:1:156:1 | Cl00 | Cl00 | final, public |
|
| classes.kt:150:1:156:1 | Cl00 | Cl00 | final, public |
|
||||||
| classes.kt:151:5:155:5 | Cl01 | Cl00$Cl01 | final, public |
|
| classes.kt:151:5:155:5 | Cl01 | Cl00$Cl01 | final, public |
|
||||||
|
| classes.kt:159:5:159:14 | X | ClassesKt$X | final, private |
|
||||||
|
| classes.kt:162:13:162:22 | new Object(...) { ... } | <anonymous class> | final, private |
|
||||||
| generic_anonymous.kt:0:0:0:0 | Generic_anonymousKt | Generic_anonymousKt | final, public |
|
| generic_anonymous.kt:0:0:0:0 | Generic_anonymousKt | Generic_anonymousKt | final, public |
|
||||||
| generic_anonymous.kt:1:1:9:1 | Generic | Generic | final, private |
|
| generic_anonymous.kt:1:1:9:1 | Generic | Generic | final, private |
|
||||||
| generic_anonymous.kt:3:19:5:3 | new Object(...) { ... } | <anonymous class> | final, private |
|
| generic_anonymous.kt:3:19:5:3 | new Object(...) { ... } | <anonymous class> | final, private |
|
||||||
|
|||||||
@@ -154,3 +154,9 @@ class Cl00<U0> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun fn1() {
|
||||||
|
class X {}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun fn2() = object { }
|
||||||
|
|||||||
@@ -39,6 +39,8 @@ superCall
|
|||||||
| classes.kt:141:13:145:13 | super(...) |
|
| classes.kt:141:13:145:13 | super(...) |
|
||||||
| classes.kt:150:1:156:1 | super(...) |
|
| classes.kt:150:1:156:1 | super(...) |
|
||||||
| classes.kt:151:5:155:5 | super(...) |
|
| classes.kt:151:5:155:5 | super(...) |
|
||||||
|
| classes.kt:159:5:159:14 | super(...) |
|
||||||
|
| classes.kt:162:13:162:22 | super(...) |
|
||||||
| generic_anonymous.kt:1:1:9:1 | super(...) |
|
| generic_anonymous.kt:1:1:9:1 | super(...) |
|
||||||
| generic_anonymous.kt:3:19:5:3 | super(...) |
|
| generic_anonymous.kt:3:19:5:3 | super(...) |
|
||||||
| generic_anonymous.kt:15:1:33:1 | super(...) |
|
| generic_anonymous.kt:15:1:33:1 | super(...) |
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
| classes.kt:129:17:131:17 | class ... | classes.kt:129:17:131:17 | Local3 | classes.kt:128:13:133:13 | fn | classes.kt:127:16:134:9 | new Object(...) { ... } |
|
| classes.kt:129:17:131:17 | class ... | classes.kt:129:17:131:17 | Local3 | classes.kt:128:13:133:13 | fn | classes.kt:127:16:134:9 | new Object(...) { ... } |
|
||||||
| classes.kt:140:9:146:9 | class ... | classes.kt:140:9:146:9 | | classes.kt:139:5:147:5 | func1 | classes.kt:138:1:148:1 | Cl0 |
|
| classes.kt:140:9:146:9 | class ... | classes.kt:140:9:146:9 | | classes.kt:139:5:147:5 | func1 | classes.kt:138:1:148:1 | Cl0 |
|
||||||
| classes.kt:141:13:145:13 | class ... | classes.kt:141:13:145:13 | Cl1 | classes.kt:140:9:146:9 | func2 | classes.kt:138:1:148:1 | Cl0 |
|
| classes.kt:141:13:145:13 | class ... | classes.kt:141:13:145:13 | Cl1 | classes.kt:140:9:146:9 | func2 | classes.kt:138:1:148:1 | Cl0 |
|
||||||
|
| classes.kt:159:5:159:14 | class ... | classes.kt:159:5:159:14 | X | classes.kt:158:1:160:1 | fn1 | classes.kt:0:0:0:0 | ClassesKt |
|
||||||
| generic_anonymous.kt:25:9:31:9 | class ... | generic_anonymous.kt:25:9:31:9 | | generic_anonymous.kt:24:5:32:5 | func1 | generic_anonymous.kt:15:1:33:1 | Outer |
|
| generic_anonymous.kt:25:9:31:9 | class ... | generic_anonymous.kt:25:9:31:9 | | generic_anonymous.kt:24:5:32:5 | func1 | generic_anonymous.kt:15:1:33:1 | Outer |
|
||||||
| localClassField.kt:3:9:3:19 | class ... | localClassField.kt:3:9:3:19 | L | localClassField.kt:1:1:11:1 | A | localClassField.kt:1:1:11:1 | A |
|
| localClassField.kt:3:9:3:19 | class ... | localClassField.kt:3:9:3:19 | L | localClassField.kt:1:1:11:1 | A | localClassField.kt:1:1:11:1 | A |
|
||||||
| localClassField.kt:8:9:8:19 | class ... | localClassField.kt:8:9:8:19 | L | localClassField.kt:1:1:11:1 | A | localClassField.kt:1:1:11:1 | A |
|
| localClassField.kt:8:9:8:19 | class ... | localClassField.kt:8:9:8:19 | L | localClassField.kt:1:1:11:1 | A | localClassField.kt:1:1:11:1 | A |
|
||||||
|
|||||||
@@ -44,6 +44,8 @@
|
|||||||
| classes.kt:141:13:145:13 | Cl1 | file://<external>/Object.class:0:0:0:0 | Object |
|
| classes.kt:141:13:145:13 | Cl1 | file://<external>/Object.class:0:0:0:0 | Object |
|
||||||
| classes.kt:150:1:156:1 | Cl00 | file://<external>/Object.class:0:0:0:0 | Object |
|
| classes.kt:150:1:156:1 | Cl00 | file://<external>/Object.class:0:0:0:0 | Object |
|
||||||
| classes.kt:151:5:155:5 | Cl01 | file://<external>/Object.class:0:0:0:0 | Object |
|
| classes.kt:151:5:155:5 | Cl01 | file://<external>/Object.class:0:0:0:0 | Object |
|
||||||
|
| classes.kt:159:5:159:14 | X | file://<external>/Object.class:0:0:0:0 | Object |
|
||||||
|
| classes.kt:162:13:162:22 | new Object(...) { ... } | file://<external>/Object.class:0:0:0:0 | Object |
|
||||||
| file://<external>/C1$<no name provided>$Local3.class:0:0:0:0 | Local3<Integer> | file://<external>/Object.class:0:0:0:0 | Object |
|
| file://<external>/C1$<no name provided>$Local3.class:0:0:0:0 | Local3<Integer> | file://<external>/Object.class:0:0:0:0 | Object |
|
||||||
| file://<external>/C1$Local1.class:0:0:0:0 | Local1<Integer> | file://<external>/Object.class:0:0:0:0 | Object |
|
| file://<external>/C1$Local1.class:0:0:0:0 | Local1<Integer> | file://<external>/Object.class:0:0:0:0 | Object |
|
||||||
| file://<external>/C1$Local2.class:0:0:0:0 | Local2<Integer> | file://<external>/Object.class:0:0:0:0 | Object |
|
| file://<external>/C1$Local2.class:0:0:0:0 | Local2<Integer> | file://<external>/Object.class:0:0:0:0 | Object |
|
||||||
|
|||||||
Reference in New Issue
Block a user