Kotlin: Add test case for overloaded array get

This commit is contained in:
Tamas Vajk
2022-09-01 11:09:41 +02:00
parent 74cd532adc
commit afeea64078
5 changed files with 77 additions and 0 deletions

View File

@@ -0,0 +1,56 @@
test.kt:
# 0| [CompilationUnit] test
# 0| 1: [Class] TestKt
# 1| 1: [Method] fn
# 1| 3: [TypeAccess] Unit
#-----| 4: (Parameters)
# 1| 0: [Parameter] arr
# 1| 0: [TypeAccess] byte[]
# 1| 1: [Parameter] mt
# 1| 0: [TypeAccess] C
# 1| 5: [BlockStmt] { ... }
# 2| 0: [ExprStmt] <Expr>;
# 2| 0: [ImplicitCoercionToUnitExpr] <implicit coercion to unit>
# 2| 0: [TypeAccess] Unit
# 2| 1: [ArrayAccess] ...[...]
# 2| 0: [VarAccess] arr
# 2| 1: [IntegerLiteral] 1
# 3| 1: [ExprStmt] <Expr>;
# 3| 0: [ImplicitCoercionToUnitExpr] <implicit coercion to unit>
# 3| 0: [TypeAccess] Unit
# 3| 1: [ArrayAccess] ...[...]
# 3| 1: [IntegerLiteral] 1
# 4| 2: [ExprStmt] <Expr>;
# 4| 0: [ImplicitCoercionToUnitExpr] <implicit coercion to unit>
# 4| 0: [TypeAccess] Unit
# 4| 1: [MethodAccess] get(...)
# 4| -1: [VarAccess] mt
# 4| 0: [IntegerLiteral] 1
# 4| 1: [IntegerLiteral] 2
# 7| 2: [ExtensionMethod] get
# 7| 3: [TypeAccess] String
#-----| 4: (Parameters)
# 7| 0: [Parameter] <this>
# 7| 0: [TypeAccess] byte[]
# 7| 1: [Parameter] i
# 7| 0: [TypeAccess] int
# 7| 2: [Parameter] j
# 7| 0: [TypeAccess] int
# 7| 5: [BlockStmt] { ... }
# 7| 0: [ReturnStmt] return ...
# 7| 0: [StringLiteral]
# 10| 2: [Class] C
# 10| 1: [Constructor] C
# 10| 5: [BlockStmt] { ... }
# 10| 0: [SuperConstructorInvocationStmt] super(...)
# 10| 1: [BlockStmt] { ... }
# 11| 2: [Method] get
# 11| 3: [TypeAccess] String
#-----| 4: (Parameters)
# 11| 0: [Parameter] i
# 11| 0: [TypeAccess] int
# 11| 1: [Parameter] j
# 11| 0: [TypeAccess] int
# 11| 5: [BlockStmt] { ... }
# 11| 0: [ReturnStmt] return ...
# 11| 0: [StringLiteral]

View File

@@ -0,0 +1 @@
semmle/code/java/PrintAst.ql

View File

@@ -0,0 +1,2 @@
| test.kt:3:5:3:13 | Dispatch receiver not found |
| test.kt:3:5:3:13 | Extra arguments found |

View File

@@ -0,0 +1,12 @@
fun fn(arr: ByteArray, mt: C) {
arr[1]
arr[1, 2]
mt[1, 2]
}
public operator fun ByteArray.get(i: Int, j: Int) = ""
public class C {
public operator fun get(i: Int, j: Int) = ""
}

View File

@@ -0,0 +1,6 @@
import java
import java
import semmle.code.java.Diagnostics
from Diagnostic d
select d