mirror of
https://github.com/github/codeql.git
synced 2026-05-01 11:45:14 +02:00
Merge pull request #10909 from smowton/smowton/fix/kotlin-varargs-dataflow
Kotlin: Fix varargs dataflow, and varargs default handling
This commit is contained in:
@@ -7,6 +7,394 @@ test.kt:
|
||||
# 1| 0: [Parameter] a
|
||||
# 1| 0: [TypeAccess] Object
|
||||
# 1| 5: [BlockStmt] { ... }
|
||||
# 184| 2: [Method] varargsTest
|
||||
# 184| 3: [TypeAccess] Unit
|
||||
#-----| 4: (Parameters)
|
||||
# 184| 0: [Parameter] x
|
||||
# 184| 0: [TypeAccess] String
|
||||
# 184| 1: [Parameter] y
|
||||
# 184| 0: [TypeAccess] String[]
|
||||
# 184| 0: [WildcardTypeAccess] ? ...
|
||||
# 184| 0: [TypeAccess] String
|
||||
# 184| 2: [Parameter] z
|
||||
# 184| 0: [TypeAccess] String
|
||||
# 184| 5: [BlockStmt] { ... }
|
||||
# 185| 0: [ExprStmt] <Expr>;
|
||||
# 185| 0: [MethodAccess] sink(...)
|
||||
# 185| -1: [TypeAccess] TestKt
|
||||
# 185| 0: [VarAccess] x
|
||||
# 186| 1: [ExprStmt] <Expr>;
|
||||
# 186| 0: [MethodAccess] sink(...)
|
||||
# 186| -1: [TypeAccess] TestKt
|
||||
# 186| 0: [ArrayAccess] ...[...]
|
||||
# 186| 0: [VarAccess] y
|
||||
# 186| 1: [IntegerLiteral] 0
|
||||
# 187| 2: [ExprStmt] <Expr>;
|
||||
# 187| 0: [MethodAccess] sink(...)
|
||||
# 187| -1: [TypeAccess] TestKt
|
||||
# 187| 0: [VarAccess] z
|
||||
# 184| 3: [Method] varargsTest$default
|
||||
# 184| 3: [TypeAccess] Unit
|
||||
#-----| 4: (Parameters)
|
||||
# 184| 0: [Parameter] p0
|
||||
# 184| 0: [TypeAccess] String
|
||||
# 184| 1: [Parameter] p1
|
||||
# 184| 0: [TypeAccess] String[]
|
||||
# 184| 2: [Parameter] p2
|
||||
# 184| 0: [TypeAccess] String
|
||||
# 184| 3: [Parameter] p3
|
||||
# 184| 0: [TypeAccess] int
|
||||
# 184| 4: [Parameter] p4
|
||||
# 184| 0: [TypeAccess] Object
|
||||
# 184| 5: [BlockStmt] { ... }
|
||||
# 184| 0: [IfStmt] if (...)
|
||||
# 184| 0: [EQExpr] ... == ...
|
||||
# 184| 0: [AndBitwiseExpr] ... & ...
|
||||
# 184| 0: [IntegerLiteral] 1
|
||||
# 184| 1: [VarAccess] p3
|
||||
# 184| 1: [IntegerLiteral] 0
|
||||
# 184| 1: [ExprStmt] <Expr>;
|
||||
# 184| 0: [AssignExpr] ...=...
|
||||
# 184| 0: [VarAccess] p0
|
||||
# 184| 1: [StringLiteral] before-vararg-default sunk
|
||||
# 184| 1: [IfStmt] if (...)
|
||||
# 184| 0: [EQExpr] ... == ...
|
||||
# 184| 0: [AndBitwiseExpr] ... & ...
|
||||
# 184| 0: [IntegerLiteral] 2
|
||||
# 184| 1: [VarAccess] p3
|
||||
# 184| 1: [IntegerLiteral] 0
|
||||
# 184| 1: [ExprStmt] <Expr>;
|
||||
# 184| 0: [AssignExpr] ...=...
|
||||
# 184| 0: [VarAccess] p1
|
||||
# 184| 1: [ArrayCreationExpr] new String[]
|
||||
# 184| -2: [ArrayInit] {...}
|
||||
# 184| 0: [StringLiteral] first-vararg-default sunk
|
||||
# 184| 1: [StringLiteral] second-vararg-default sunk
|
||||
# 184| -1: [TypeAccess] String
|
||||
# 184| 0: [IntegerLiteral] 2
|
||||
# 184| 2: [IfStmt] if (...)
|
||||
# 184| 0: [EQExpr] ... == ...
|
||||
# 184| 0: [AndBitwiseExpr] ... & ...
|
||||
# 184| 0: [IntegerLiteral] 4
|
||||
# 184| 1: [VarAccess] p3
|
||||
# 184| 1: [IntegerLiteral] 0
|
||||
# 184| 1: [ExprStmt] <Expr>;
|
||||
# 184| 0: [AssignExpr] ...=...
|
||||
# 184| 0: [VarAccess] p2
|
||||
# 184| 1: [StringLiteral] after-vararg-default sunk
|
||||
# 184| 3: [ReturnStmt] return ...
|
||||
# 184| 0: [MethodAccess] varargsTest(...)
|
||||
# 184| -1: [TypeAccess] TestKt
|
||||
# 184| 0: [VarAccess] p0
|
||||
# 184| 1: [VarAccess] p1
|
||||
# 184| 2: [VarAccess] p2
|
||||
# 190| 4: [Method] varargsUser
|
||||
# 190| 3: [TypeAccess] Unit
|
||||
# 190| 5: [BlockStmt] { ... }
|
||||
# 191| 0: [ExprStmt] <Expr>;
|
||||
# 191| 0: [MethodAccess] varargsTest$default(...)
|
||||
# 191| -1: [TypeAccess] TestKt
|
||||
# 1| 0: [NullLiteral] null
|
||||
# 1| 1: [NullLiteral] null
|
||||
# 1| 2: [NullLiteral] null
|
||||
# 1| 3: [IntegerLiteral] 0
|
||||
# 1| 4: [NullLiteral] null
|
||||
# 192| 1: [ExprStmt] <Expr>;
|
||||
# 192| 0: [MethodAccess] varargsTest$default(...)
|
||||
# 192| -1: [TypeAccess] TestKt
|
||||
# 192| 0: [StringLiteral] no-varargs-before, no-z-parameter sunk
|
||||
# 1| 1: [NullLiteral] null
|
||||
# 1| 2: [NullLiteral] null
|
||||
# 1| 3: [IntegerLiteral] 1
|
||||
# 1| 4: [NullLiteral] null
|
||||
# 193| 2: [ExprStmt] <Expr>;
|
||||
# 193| 0: [MethodAccess] varargsTest$default(...)
|
||||
# 193| -1: [TypeAccess] TestKt
|
||||
# 193| 0: [StringLiteral] no-varargs-before sunk
|
||||
# 1| 1: [NullLiteral] null
|
||||
# 193| 2: [StringLiteral] no-varargs-after sunk
|
||||
# 1| 3: [IntegerLiteral] 5
|
||||
# 1| 4: [NullLiteral] null
|
||||
# 194| 3: [ExprStmt] <Expr>;
|
||||
# 194| 0: [MethodAccess] varargsTest(...)
|
||||
# 194| -1: [TypeAccess] TestKt
|
||||
# 194| 0: [StringLiteral] one-vararg-before sunk
|
||||
# 194| 1: [StringLiteral] one-vararg sunk
|
||||
# 194| 2: [StringLiteral] one-vararg-after sunk
|
||||
# 195| 4: [ExprStmt] <Expr>;
|
||||
# 195| 0: [MethodAccess] varargsTest(...)
|
||||
# 195| -1: [TypeAccess] TestKt
|
||||
# 195| 0: [StringLiteral] two-varargs-before sunk
|
||||
# 195| 1: [StringLiteral] two-vararg-first sunk
|
||||
# 195| 2: [StringLiteral] two-vararg-second sunk
|
||||
# 195| 3: [StringLiteral] two-varargs-after sunk
|
||||
# 196| 5: [ExprStmt] <Expr>;
|
||||
# 196| 0: [MethodAccess] varargsTest$default(...)
|
||||
# 196| -1: [TypeAccess] TestKt
|
||||
# 196| 0: [StringLiteral] no-z-parmeter sunk
|
||||
# 196| 1: [ArrayCreationExpr] new String[]
|
||||
# 196| -2: [ArrayInit] {...}
|
||||
# 196| 0: [StringLiteral] no-z-parameter first vararg sunk
|
||||
# 196| 1: [StringLiteral] no-z-parameter second vararg sunk
|
||||
# 196| -1: [TypeAccess] String
|
||||
# 196| 0: [IntegerLiteral] 2
|
||||
# 1| 2: [NullLiteral] null
|
||||
# 1| 3: [IntegerLiteral] 3
|
||||
# 1| 4: [NullLiteral] null
|
||||
# 199| 5: [Method] varargsTestOnlySinkVarargs
|
||||
# 199| 3: [TypeAccess] Unit
|
||||
#-----| 4: (Parameters)
|
||||
# 199| 0: [Parameter] x
|
||||
# 199| 0: [TypeAccess] String
|
||||
# 199| 1: [Parameter] y
|
||||
# 199| 0: [TypeAccess] String[]
|
||||
# 199| 0: [WildcardTypeAccess] ? ...
|
||||
# 199| 0: [TypeAccess] String
|
||||
# 199| 2: [Parameter] z
|
||||
# 199| 0: [TypeAccess] String
|
||||
# 199| 5: [BlockStmt] { ... }
|
||||
# 200| 0: [ExprStmt] <Expr>;
|
||||
# 200| 0: [MethodAccess] sink(...)
|
||||
# 200| -1: [TypeAccess] TestKt
|
||||
# 200| 0: [ArrayAccess] ...[...]
|
||||
# 200| 0: [VarAccess] y
|
||||
# 200| 1: [IntegerLiteral] 0
|
||||
# 199| 6: [Method] varargsTestOnlySinkVarargs$default
|
||||
# 199| 3: [TypeAccess] Unit
|
||||
#-----| 4: (Parameters)
|
||||
# 199| 0: [Parameter] p0
|
||||
# 199| 0: [TypeAccess] String
|
||||
# 199| 1: [Parameter] p1
|
||||
# 199| 0: [TypeAccess] String[]
|
||||
# 199| 2: [Parameter] p2
|
||||
# 199| 0: [TypeAccess] String
|
||||
# 199| 3: [Parameter] p3
|
||||
# 199| 0: [TypeAccess] int
|
||||
# 199| 4: [Parameter] p4
|
||||
# 199| 0: [TypeAccess] Object
|
||||
# 199| 5: [BlockStmt] { ... }
|
||||
# 199| 0: [IfStmt] if (...)
|
||||
# 199| 0: [EQExpr] ... == ...
|
||||
# 199| 0: [AndBitwiseExpr] ... & ...
|
||||
# 199| 0: [IntegerLiteral] 1
|
||||
# 199| 1: [VarAccess] p3
|
||||
# 199| 1: [IntegerLiteral] 0
|
||||
# 199| 1: [ExprStmt] <Expr>;
|
||||
# 199| 0: [AssignExpr] ...=...
|
||||
# 199| 0: [VarAccess] p0
|
||||
# 199| 1: [StringLiteral] before-vararg-default not sunk 2
|
||||
# 199| 1: [IfStmt] if (...)
|
||||
# 199| 0: [EQExpr] ... == ...
|
||||
# 199| 0: [AndBitwiseExpr] ... & ...
|
||||
# 199| 0: [IntegerLiteral] 2
|
||||
# 199| 1: [VarAccess] p3
|
||||
# 199| 1: [IntegerLiteral] 0
|
||||
# 199| 1: [ExprStmt] <Expr>;
|
||||
# 199| 0: [AssignExpr] ...=...
|
||||
# 199| 0: [VarAccess] p1
|
||||
# 199| 1: [ArrayCreationExpr] new String[]
|
||||
# 199| -2: [ArrayInit] {...}
|
||||
# 199| 0: [StringLiteral] first-vararg-default sunk 2
|
||||
# 199| 1: [StringLiteral] second-vararg-default sunk 2
|
||||
# 199| -1: [TypeAccess] String
|
||||
# 199| 0: [IntegerLiteral] 2
|
||||
# 199| 2: [IfStmt] if (...)
|
||||
# 199| 0: [EQExpr] ... == ...
|
||||
# 199| 0: [AndBitwiseExpr] ... & ...
|
||||
# 199| 0: [IntegerLiteral] 4
|
||||
# 199| 1: [VarAccess] p3
|
||||
# 199| 1: [IntegerLiteral] 0
|
||||
# 199| 1: [ExprStmt] <Expr>;
|
||||
# 199| 0: [AssignExpr] ...=...
|
||||
# 199| 0: [VarAccess] p2
|
||||
# 199| 1: [StringLiteral] after-vararg-default not sunk 2
|
||||
# 199| 3: [ReturnStmt] return ...
|
||||
# 199| 0: [MethodAccess] varargsTestOnlySinkVarargs(...)
|
||||
# 199| -1: [TypeAccess] TestKt
|
||||
# 199| 0: [VarAccess] p0
|
||||
# 199| 1: [VarAccess] p1
|
||||
# 199| 2: [VarAccess] p2
|
||||
# 203| 7: [Method] varargsUserOnlySinkVarargs
|
||||
# 203| 3: [TypeAccess] Unit
|
||||
# 203| 5: [BlockStmt] { ... }
|
||||
# 204| 0: [ExprStmt] <Expr>;
|
||||
# 204| 0: [MethodAccess] varargsTestOnlySinkVarargs$default(...)
|
||||
# 204| -1: [TypeAccess] TestKt
|
||||
# 1| 0: [NullLiteral] null
|
||||
# 1| 1: [NullLiteral] null
|
||||
# 1| 2: [NullLiteral] null
|
||||
# 1| 3: [IntegerLiteral] 0
|
||||
# 1| 4: [NullLiteral] null
|
||||
# 205| 1: [ExprStmt] <Expr>;
|
||||
# 205| 0: [MethodAccess] varargsTestOnlySinkVarargs$default(...)
|
||||
# 205| -1: [TypeAccess] TestKt
|
||||
# 205| 0: [StringLiteral] no-varargs-before, no-z-parameter not sunk 2
|
||||
# 1| 1: [NullLiteral] null
|
||||
# 1| 2: [NullLiteral] null
|
||||
# 1| 3: [IntegerLiteral] 1
|
||||
# 1| 4: [NullLiteral] null
|
||||
# 206| 2: [ExprStmt] <Expr>;
|
||||
# 206| 0: [MethodAccess] varargsTestOnlySinkVarargs$default(...)
|
||||
# 206| -1: [TypeAccess] TestKt
|
||||
# 206| 0: [StringLiteral] no-varargs-before not sunk 2
|
||||
# 1| 1: [NullLiteral] null
|
||||
# 206| 2: [StringLiteral] no-varargs-after not sunk 2
|
||||
# 1| 3: [IntegerLiteral] 5
|
||||
# 1| 4: [NullLiteral] null
|
||||
# 207| 3: [ExprStmt] <Expr>;
|
||||
# 207| 0: [MethodAccess] varargsTestOnlySinkVarargs(...)
|
||||
# 207| -1: [TypeAccess] TestKt
|
||||
# 207| 0: [StringLiteral] one-vararg-before not sunk 2
|
||||
# 207| 1: [StringLiteral] one-vararg sunk 2
|
||||
# 207| 2: [StringLiteral] one-vararg-after not sunk 2
|
||||
# 208| 4: [ExprStmt] <Expr>;
|
||||
# 208| 0: [MethodAccess] varargsTestOnlySinkVarargs(...)
|
||||
# 208| -1: [TypeAccess] TestKt
|
||||
# 208| 0: [StringLiteral] two-varargs-before not sunk 2
|
||||
# 208| 1: [StringLiteral] two-vararg-first sunk 2
|
||||
# 208| 2: [StringLiteral] two-vararg-second sunk 2
|
||||
# 208| 3: [StringLiteral] two-varargs-after not sunk 2
|
||||
# 209| 5: [ExprStmt] <Expr>;
|
||||
# 209| 0: [MethodAccess] varargsTestOnlySinkVarargs$default(...)
|
||||
# 209| -1: [TypeAccess] TestKt
|
||||
# 209| 0: [StringLiteral] no-z-parmeter not sunk 2
|
||||
# 209| 1: [ArrayCreationExpr] new String[]
|
||||
# 209| -2: [ArrayInit] {...}
|
||||
# 209| 0: [StringLiteral] no-z-parameter first vararg sunk 2
|
||||
# 209| 1: [StringLiteral] no-z-parameter second vararg sunk 2
|
||||
# 209| -1: [TypeAccess] String
|
||||
# 209| 0: [IntegerLiteral] 2
|
||||
# 1| 2: [NullLiteral] null
|
||||
# 1| 3: [IntegerLiteral] 3
|
||||
# 1| 4: [NullLiteral] null
|
||||
# 212| 8: [Method] varargsTestOnlySinkRegularArgs
|
||||
# 212| 3: [TypeAccess] Unit
|
||||
#-----| 4: (Parameters)
|
||||
# 212| 0: [Parameter] x
|
||||
# 212| 0: [TypeAccess] String
|
||||
# 212| 1: [Parameter] y
|
||||
# 212| 0: [TypeAccess] String[]
|
||||
# 212| 0: [WildcardTypeAccess] ? ...
|
||||
# 212| 0: [TypeAccess] String
|
||||
# 212| 2: [Parameter] z
|
||||
# 212| 0: [TypeAccess] String
|
||||
# 212| 5: [BlockStmt] { ... }
|
||||
# 213| 0: [ExprStmt] <Expr>;
|
||||
# 213| 0: [MethodAccess] sink(...)
|
||||
# 213| -1: [TypeAccess] TestKt
|
||||
# 213| 0: [VarAccess] x
|
||||
# 214| 1: [ExprStmt] <Expr>;
|
||||
# 214| 0: [MethodAccess] sink(...)
|
||||
# 214| -1: [TypeAccess] TestKt
|
||||
# 214| 0: [VarAccess] z
|
||||
# 212| 9: [Method] varargsTestOnlySinkRegularArgs$default
|
||||
# 212| 3: [TypeAccess] Unit
|
||||
#-----| 4: (Parameters)
|
||||
# 212| 0: [Parameter] p0
|
||||
# 212| 0: [TypeAccess] String
|
||||
# 212| 1: [Parameter] p1
|
||||
# 212| 0: [TypeAccess] String[]
|
||||
# 212| 2: [Parameter] p2
|
||||
# 212| 0: [TypeAccess] String
|
||||
# 212| 3: [Parameter] p3
|
||||
# 212| 0: [TypeAccess] int
|
||||
# 212| 4: [Parameter] p4
|
||||
# 212| 0: [TypeAccess] Object
|
||||
# 212| 5: [BlockStmt] { ... }
|
||||
# 212| 0: [IfStmt] if (...)
|
||||
# 212| 0: [EQExpr] ... == ...
|
||||
# 212| 0: [AndBitwiseExpr] ... & ...
|
||||
# 212| 0: [IntegerLiteral] 1
|
||||
# 212| 1: [VarAccess] p3
|
||||
# 212| 1: [IntegerLiteral] 0
|
||||
# 212| 1: [ExprStmt] <Expr>;
|
||||
# 212| 0: [AssignExpr] ...=...
|
||||
# 212| 0: [VarAccess] p0
|
||||
# 212| 1: [StringLiteral] before-vararg-default sunk 3
|
||||
# 212| 1: [IfStmt] if (...)
|
||||
# 212| 0: [EQExpr] ... == ...
|
||||
# 212| 0: [AndBitwiseExpr] ... & ...
|
||||
# 212| 0: [IntegerLiteral] 2
|
||||
# 212| 1: [VarAccess] p3
|
||||
# 212| 1: [IntegerLiteral] 0
|
||||
# 212| 1: [ExprStmt] <Expr>;
|
||||
# 212| 0: [AssignExpr] ...=...
|
||||
# 212| 0: [VarAccess] p1
|
||||
# 212| 1: [ArrayCreationExpr] new String[]
|
||||
# 212| -2: [ArrayInit] {...}
|
||||
# 212| 0: [StringLiteral] first-vararg-default not sunk 3
|
||||
# 212| 1: [StringLiteral] second-vararg-default not sunk 3
|
||||
# 212| -1: [TypeAccess] String
|
||||
# 212| 0: [IntegerLiteral] 2
|
||||
# 212| 2: [IfStmt] if (...)
|
||||
# 212| 0: [EQExpr] ... == ...
|
||||
# 212| 0: [AndBitwiseExpr] ... & ...
|
||||
# 212| 0: [IntegerLiteral] 4
|
||||
# 212| 1: [VarAccess] p3
|
||||
# 212| 1: [IntegerLiteral] 0
|
||||
# 212| 1: [ExprStmt] <Expr>;
|
||||
# 212| 0: [AssignExpr] ...=...
|
||||
# 212| 0: [VarAccess] p2
|
||||
# 212| 1: [StringLiteral] after-vararg-default sunk 3
|
||||
# 212| 3: [ReturnStmt] return ...
|
||||
# 212| 0: [MethodAccess] varargsTestOnlySinkRegularArgs(...)
|
||||
# 212| -1: [TypeAccess] TestKt
|
||||
# 212| 0: [VarAccess] p0
|
||||
# 212| 1: [VarAccess] p1
|
||||
# 212| 2: [VarAccess] p2
|
||||
# 217| 10: [Method] varargsUserOnlySinkRegularArgs
|
||||
# 217| 3: [TypeAccess] Unit
|
||||
# 217| 5: [BlockStmt] { ... }
|
||||
# 218| 0: [ExprStmt] <Expr>;
|
||||
# 218| 0: [MethodAccess] varargsTestOnlySinkRegularArgs$default(...)
|
||||
# 218| -1: [TypeAccess] TestKt
|
||||
# 1| 0: [NullLiteral] null
|
||||
# 1| 1: [NullLiteral] null
|
||||
# 1| 2: [NullLiteral] null
|
||||
# 1| 3: [IntegerLiteral] 0
|
||||
# 1| 4: [NullLiteral] null
|
||||
# 219| 1: [ExprStmt] <Expr>;
|
||||
# 219| 0: [MethodAccess] varargsTestOnlySinkRegularArgs$default(...)
|
||||
# 219| -1: [TypeAccess] TestKt
|
||||
# 219| 0: [StringLiteral] no-varargs-before, no-z-parameter sunk 3
|
||||
# 1| 1: [NullLiteral] null
|
||||
# 1| 2: [NullLiteral] null
|
||||
# 1| 3: [IntegerLiteral] 1
|
||||
# 1| 4: [NullLiteral] null
|
||||
# 220| 2: [ExprStmt] <Expr>;
|
||||
# 220| 0: [MethodAccess] varargsTestOnlySinkRegularArgs$default(...)
|
||||
# 220| -1: [TypeAccess] TestKt
|
||||
# 220| 0: [StringLiteral] no-varargs-before sunk 3
|
||||
# 1| 1: [NullLiteral] null
|
||||
# 220| 2: [StringLiteral] no-varargs-after sunk 3
|
||||
# 1| 3: [IntegerLiteral] 5
|
||||
# 1| 4: [NullLiteral] null
|
||||
# 221| 3: [ExprStmt] <Expr>;
|
||||
# 221| 0: [MethodAccess] varargsTestOnlySinkRegularArgs(...)
|
||||
# 221| -1: [TypeAccess] TestKt
|
||||
# 221| 0: [StringLiteral] one-vararg-before sunk 3
|
||||
# 221| 1: [StringLiteral] one-vararg not sunk 3
|
||||
# 221| 2: [StringLiteral] one-vararg-after sunk 3
|
||||
# 222| 4: [ExprStmt] <Expr>;
|
||||
# 222| 0: [MethodAccess] varargsTestOnlySinkRegularArgs(...)
|
||||
# 222| -1: [TypeAccess] TestKt
|
||||
# 222| 0: [StringLiteral] two-varargs-before sunk 3
|
||||
# 222| 1: [StringLiteral] two-vararg-first not sunk 3
|
||||
# 222| 2: [StringLiteral] two-vararg-second not sunk 3
|
||||
# 222| 3: [StringLiteral] two-varargs-after sunk 3
|
||||
# 223| 5: [ExprStmt] <Expr>;
|
||||
# 223| 0: [MethodAccess] varargsTestOnlySinkRegularArgs$default(...)
|
||||
# 223| -1: [TypeAccess] TestKt
|
||||
# 223| 0: [StringLiteral] no-z-parmeter sunk 3
|
||||
# 223| 1: [ArrayCreationExpr] new String[]
|
||||
# 223| -2: [ArrayInit] {...}
|
||||
# 223| 0: [StringLiteral] no-z-parameter first vararg not sunk 3
|
||||
# 223| 1: [StringLiteral] no-z-parameter second vararg not sunk 3
|
||||
# 223| -1: [TypeAccess] String
|
||||
# 223| 0: [IntegerLiteral] 2
|
||||
# 1| 2: [NullLiteral] null
|
||||
# 1| 3: [IntegerLiteral] 3
|
||||
# 1| 4: [NullLiteral] null
|
||||
# 3| 2: [Class] TestMember
|
||||
# 3| 1: [Constructor] TestMember
|
||||
# 3| 5: [BlockStmt] { ... }
|
||||
|
||||
@@ -13,3 +13,6 @@
|
||||
| test.kt:171:3:171:97 | f | test.kt:171:3:171:97 | f$default |
|
||||
| test.kt:179:3:179:46 | f | test.kt:179:3:179:46 | f$default |
|
||||
| test.kt:180:3:180:34 | f | test.kt:180:3:180:34 | f$default |
|
||||
| test.kt:184:1:188:1 | varargsTest | test.kt:184:1:188:1 | varargsTest$default |
|
||||
| test.kt:199:1:201:1 | varargsTestOnlySinkVarargs | test.kt:199:1:201:1 | varargsTestOnlySinkVarargs$default |
|
||||
| test.kt:212:1:215:1 | varargsTestOnlySinkRegularArgs | test.kt:212:1:215:1 | varargsTestOnlySinkRegularArgs$default |
|
||||
|
||||
@@ -180,3 +180,45 @@ class TestOverloadsWithDefaults {
|
||||
fun f(z: String, w: Int = 0) { }
|
||||
|
||||
}
|
||||
|
||||
fun varargsTest(x: String = "before-vararg-default sunk", vararg y: String = arrayOf("first-vararg-default sunk", "second-vararg-default sunk"), z: String = "after-vararg-default sunk") {
|
||||
sink(x)
|
||||
sink(y[0])
|
||||
sink(z)
|
||||
}
|
||||
|
||||
fun varargsUser() {
|
||||
varargsTest()
|
||||
varargsTest(x = "no-varargs-before, no-z-parameter sunk")
|
||||
varargsTest(x = "no-varargs-before sunk", z = "no-varargs-after sunk")
|
||||
varargsTest(x = "one-vararg-before sunk", "one-vararg sunk", z = "one-vararg-after sunk")
|
||||
varargsTest(x = "two-varargs-before sunk", "two-vararg-first sunk", "two-vararg-second sunk", z = "two-varargs-after sunk")
|
||||
varargsTest("no-z-parmeter sunk", "no-z-parameter first vararg sunk", "no-z-parameter second vararg sunk")
|
||||
}
|
||||
|
||||
fun varargsTestOnlySinkVarargs(x: String = "before-vararg-default not sunk 2", vararg y: String = arrayOf("first-vararg-default sunk 2", "second-vararg-default sunk 2"), z: String = "after-vararg-default not sunk 2") {
|
||||
sink(y[0])
|
||||
}
|
||||
|
||||
fun varargsUserOnlySinkVarargs() {
|
||||
varargsTestOnlySinkVarargs()
|
||||
varargsTestOnlySinkVarargs(x = "no-varargs-before, no-z-parameter not sunk 2")
|
||||
varargsTestOnlySinkVarargs(x = "no-varargs-before not sunk 2", z = "no-varargs-after not sunk 2")
|
||||
varargsTestOnlySinkVarargs(x = "one-vararg-before not sunk 2", "one-vararg sunk 2", z = "one-vararg-after not sunk 2")
|
||||
varargsTestOnlySinkVarargs(x = "two-varargs-before not sunk 2", "two-vararg-first sunk 2", "two-vararg-second sunk 2", z = "two-varargs-after not sunk 2")
|
||||
varargsTestOnlySinkVarargs("no-z-parmeter not sunk 2", "no-z-parameter first vararg sunk 2", "no-z-parameter second vararg sunk 2")
|
||||
}
|
||||
|
||||
fun varargsTestOnlySinkRegularArgs(x: String = "before-vararg-default sunk 3", vararg y: String = arrayOf("first-vararg-default not sunk 3", "second-vararg-default not sunk 3"), z: String = "after-vararg-default sunk 3") {
|
||||
sink(x)
|
||||
sink(z)
|
||||
}
|
||||
|
||||
fun varargsUserOnlySinkRegularArgs() {
|
||||
varargsTestOnlySinkRegularArgs()
|
||||
varargsTestOnlySinkRegularArgs(x = "no-varargs-before, no-z-parameter sunk 3")
|
||||
varargsTestOnlySinkRegularArgs(x = "no-varargs-before sunk 3", z = "no-varargs-after sunk 3")
|
||||
varargsTestOnlySinkRegularArgs(x = "one-vararg-before sunk 3", "one-vararg not sunk 3", z = "one-vararg-after sunk 3")
|
||||
varargsTestOnlySinkRegularArgs(x = "two-varargs-before sunk 3", "two-vararg-first not sunk 3", "two-vararg-second not sunk 3", z = "two-varargs-after sunk 3")
|
||||
varargsTestOnlySinkRegularArgs("no-z-parmeter sunk 3", "no-z-parameter first vararg not sunk 3", "no-z-parameter second vararg not sunk 3")
|
||||
}
|
||||
|
||||
@@ -16,6 +16,9 @@
|
||||
| test.kt:36:40:36:41 | 30 | test.kt:25:10:25:18 | ...[...] |
|
||||
| test.kt:36:44:36:45 | 31 | test.kt:25:10:25:18 | ...[...] |
|
||||
| test.kt:36:48:36:49 | 32 | test.kt:25:10:25:18 | ...[...] |
|
||||
| test.kt:37:33:37:34 | 41 | test.kt:29:10:29:18 | ...[...] |
|
||||
| test.kt:37:37:37:38 | 42 | test.kt:29:10:29:18 | ...[...] |
|
||||
| test.kt:37:41:37:42 | 43 | test.kt:29:10:29:18 | ...[...] |
|
||||
| test.kt:41:26:41:27 | 51 | test.kt:9:10:9:18 | ...[...] |
|
||||
| test.kt:41:30:41:31 | 52 | test.kt:9:10:9:18 | ...[...] |
|
||||
| test.kt:41:34:41:35 | 53 | test.kt:9:10:9:18 | ...[...] |
|
||||
|
||||
Reference in New Issue
Block a user