mirror of
https://github.com/github/codeql.git
synced 2025-12-22 19:56:32 +01:00
Extract final modifier on local variables
This commit is contained in:
@@ -973,9 +973,12 @@ open class KotlinFileExtractor(
|
|||||||
tw.writeCallableEnclosingExpr(exprId, callable)
|
tw.writeCallableEnclosingExpr(exprId, callable)
|
||||||
tw.writeStatementEnclosingExpr(exprId, enclosingStmt)
|
tw.writeStatementEnclosingExpr(exprId, enclosingStmt)
|
||||||
val i = v.initializer
|
val i = v.initializer
|
||||||
if(i != null) {
|
if (i != null) {
|
||||||
extractExpressionExpr(i, callable, exprId, 0, enclosingStmt)
|
extractExpressionExpr(i, callable, exprId, 0, enclosingStmt)
|
||||||
}
|
}
|
||||||
|
if (!v.isVar) {
|
||||||
|
addModifiers(varId, "final")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,32 +1,36 @@
|
|||||||
varAcc
|
varAcc
|
||||||
| variables.kt:3:5:3:21 | prop |
|
| variables.kt:3:5:3:21 | prop |
|
||||||
| variables.kt:3:5:3:21 | this.prop |
|
| variables.kt:3:5:3:21 | this.prop |
|
||||||
| variables.kt:10:1:10:21 | VariablesKt.topLevel |
|
| variables.kt:7:17:7:22 | local1 |
|
||||||
| variables.kt:10:1:10:21 | VariablesKt.topLevel |
|
| variables.kt:9:17:9:22 | local2 |
|
||||||
| variables.kt:16:11:16:18 | o |
|
| variables.kt:10:22:10:26 | param |
|
||||||
| variables.kt:16:11:16:18 | o |
|
| variables.kt:11:17:11:22 | local3 |
|
||||||
| variables.kt:16:11:16:18 | this.o |
|
| variables.kt:15:1:15:21 | VariablesKt.topLevel |
|
||||||
| variables.kt:24:9:24:9 | this |
|
| variables.kt:15:1:15:21 | VariablesKt.topLevel |
|
||||||
| variables.kt:25:9:25:9 | this |
|
| variables.kt:21:11:21:18 | o |
|
||||||
| variables.kt:27:9:27:12 | this |
|
| variables.kt:21:11:21:18 | o |
|
||||||
| variables.kt:28:9:28:12 | this |
|
| variables.kt:21:11:21:18 | this.o |
|
||||||
|
| variables.kt:29:9:29:9 | this |
|
||||||
|
| variables.kt:30:9:30:9 | this |
|
||||||
|
| variables.kt:32:9:32:12 | this |
|
||||||
|
| variables.kt:33:9:33:12 | this |
|
||||||
extensionReceiverAcc
|
extensionReceiverAcc
|
||||||
| variables.kt:24:9:24:9 | this |
|
| variables.kt:29:9:29:9 | this |
|
||||||
| variables.kt:25:9:25:9 | this |
|
| variables.kt:30:9:30:9 | this |
|
||||||
| variables.kt:27:9:27:12 | this |
|
| variables.kt:32:9:32:12 | this |
|
||||||
| variables.kt:28:9:28:12 | this |
|
| variables.kt:33:9:33:12 | this |
|
||||||
instAcc
|
instAcc
|
||||||
| variables.kt:3:5:3:21 | this |
|
| variables.kt:3:5:3:21 | this |
|
||||||
| variables.kt:16:11:16:18 | this |
|
| variables.kt:21:11:21:18 | this |
|
||||||
| variables.kt:21:9:21:9 | this |
|
| variables.kt:26:9:26:9 | this |
|
||||||
| variables.kt:21:11:21:15 | this |
|
| variables.kt:26:11:26:15 | this |
|
||||||
| variables.kt:26:9:26:12 | C2.this |
|
| variables.kt:31:9:31:12 | C2.this |
|
||||||
| variables.kt:31:9:31:15 | C2.this |
|
| variables.kt:36:9:36:15 | C2.this |
|
||||||
| variables.kt:32:9:32:15 | C2.this |
|
| variables.kt:37:9:37:15 | C2.this |
|
||||||
| variables.kt:41:13:41:16 | this |
|
| variables.kt:46:13:46:16 | this |
|
||||||
| variables.kt:42:13:42:19 | C3.this |
|
| variables.kt:47:13:47:19 | C3.this |
|
||||||
instAccQualifier
|
instAccQualifier
|
||||||
| variables.kt:26:9:26:12 | C2.this | variables.kt:26:9:26:12 | C2 |
|
| variables.kt:31:9:31:12 | C2.this | variables.kt:31:9:31:12 | C2 |
|
||||||
| variables.kt:31:9:31:15 | C2.this | variables.kt:31:9:31:15 | C2 |
|
| variables.kt:36:9:36:15 | C2.this | variables.kt:36:9:36:15 | C2 |
|
||||||
| variables.kt:32:9:32:15 | C2.this | variables.kt:32:9:32:15 | C2 |
|
| variables.kt:37:9:37:15 | C2.this | variables.kt:37:9:37:15 | C2 |
|
||||||
| variables.kt:42:13:42:19 | C3.this | variables.kt:42:13:42:19 | C3 |
|
| variables.kt:47:13:47:19 | C3.this | variables.kt:47:13:47:19 | C3 |
|
||||||
|
|||||||
@@ -1,7 +1,16 @@
|
|||||||
|
isFinal
|
||||||
|
| variables.kt:6:9:6:26 | int local1 | final |
|
||||||
|
| variables.kt:8:9:8:26 | int local2 | non-final |
|
||||||
|
| variables.kt:10:9:10:26 | int local3 | final |
|
||||||
|
compileTimeConstant
|
||||||
|
| variables.kt:7:17:7:22 | local1 |
|
||||||
|
#select
|
||||||
| variables.kt:3:5:3:21 | prop | int | variables.kt:3:21:3:21 | 1 |
|
| variables.kt:3:5:3:21 | prop | int | variables.kt:3:21:3:21 | 1 |
|
||||||
| variables.kt:5:20:5:29 | param | int | file://:0:0:0:0 | <none> |
|
| variables.kt:5:20:5:29 | param | int | file://:0:0:0:0 | <none> |
|
||||||
| variables.kt:6:9:6:25 | int local | int | variables.kt:6:21:6:25 | ... + ... |
|
| variables.kt:6:9:6:26 | int local1 | int | variables.kt:6:22:6:26 | ... + ... |
|
||||||
| variables.kt:10:1:10:21 | topLevel | int | variables.kt:10:21:10:21 | 1 |
|
| variables.kt:8:9:8:26 | int local2 | int | variables.kt:8:22:8:26 | ... + ... |
|
||||||
| variables.kt:16:11:16:18 | o | C1 | file://:0:0:0:0 | <none> |
|
| variables.kt:10:9:10:26 | int local3 | int | variables.kt:10:22:10:26 | param |
|
||||||
| variables.kt:16:11:16:18 | o | C1 | variables.kt:16:11:16:18 | o |
|
| variables.kt:15:1:15:21 | topLevel | int | variables.kt:15:21:15:21 | 1 |
|
||||||
| variables.kt:23:9:23:10 | <this> | C1 | file://:0:0:0:0 | <none> |
|
| variables.kt:21:11:21:18 | o | C1 | file://:0:0:0:0 | <none> |
|
||||||
|
| variables.kt:21:11:21:18 | o | C1 | variables.kt:21:11:21:18 | o |
|
||||||
|
| variables.kt:28:9:28:10 | <this> | C1 | file://:0:0:0:0 | <none> |
|
||||||
|
|||||||
@@ -3,7 +3,12 @@ class Foo {
|
|||||||
val prop: Int = 1
|
val prop: Int = 1
|
||||||
|
|
||||||
fun myFunction(param: Int) {
|
fun myFunction(param: Int) {
|
||||||
val local = 2 + 3
|
val local1 = 2 + 3
|
||||||
|
println(local1)
|
||||||
|
var local2 = 2 + 3
|
||||||
|
println(local2)
|
||||||
|
val local3 = param
|
||||||
|
println(local3)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -35,3 +35,11 @@ MaybeExpr initializer(Variable v) {
|
|||||||
from Variable v
|
from Variable v
|
||||||
where v.fromSource()
|
where v.fromSource()
|
||||||
select v, v.getType().toString(), initializer(v)
|
select v, v.getType().toString(), initializer(v)
|
||||||
|
|
||||||
|
query predicate isFinal(LocalVariableDecl v, string isFinal) {
|
||||||
|
if v.hasModifier("final") then isFinal = "final" else isFinal = "non-final"
|
||||||
|
}
|
||||||
|
|
||||||
|
query predicate compileTimeConstant(CompileTimeConstantExpr e) {
|
||||||
|
exists(Variable v | v.getAnAccess() = e)
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user