Swift: add EnumIsCase test

This commit is contained in:
Paolo Tranquilli
2022-06-27 16:24:51 +02:00
parent dfe276aa18
commit 7f694f3b90
6 changed files with 45 additions and 4 deletions

View File

@@ -0,0 +1,6 @@
| enum_is_case.swift:4:1:4:17 | ... is some | getSubExpr: | enum_is_case.swift:4:1:4:17 | OptionalEvaluationExpr | getTypeRepr: | enum_is_case.swift:4:22:4:22 | SimpleIdentTypeRepr | getElement: | file://:0:0:0:0 | some |
| enum_is_case.swift:5:1:5:32 | ... is some | getSubExpr: | enum_is_case.swift:5:1:5:32 | OptionalEvaluationExpr | getTypeRepr: | enum_is_case.swift:5:37:5:37 | SimpleIdentTypeRepr | getElement: | file://:0:0:0:0 | some |
| enum_is_case.swift:6:1:6:1 | ... is some | getSubExpr: | enum_is_case.swift:6:1:6:1 | 42 | getTypeRepr: | enum_is_case.swift:6:7:6:10 | ...? | getElement: | file://:0:0:0:0 | some |
| enum_is_case.swift:7:1:7:1 | ... is some | getSubExpr: | enum_is_case.swift:7:1:7:1 | 42 | getTypeRepr: | enum_is_case.swift:7:7:7:11 | ...? | getElement: | file://:0:0:0:0 | some |
| enum_is_case.swift:9:1:9:19 | ... is some | getSubExpr: | enum_is_case.swift:9:1:9:19 | [...] | getTypeRepr: | enum_is_case.swift:9:24:9:28 | [...] | getElement: | file://:0:0:0:0 | some |
| enum_is_case.swift:14:1:14:18 | ... is some | getSubExpr: | enum_is_case.swift:14:1:14:18 | OptionalEvaluationExpr | getTypeRepr: | enum_is_case.swift:14:23:14:23 | SimpleIdentTypeRepr | getElement: | file://:0:0:0:0 | some |

View File

@@ -0,0 +1,12 @@
// generated by codegen/codegen.py
import codeql.swift.elements
import TestUtils
from EnumIsCaseExpr x, Expr getSubExpr, TypeRepr getTypeRepr, EnumElementDecl getElement
where
toBeTested(x) and
not x.isUnknown() and
getSubExpr = x.getSubExpr() and
getTypeRepr = x.getTypeRepr() and
getElement = x.getElement()
select x, "getSubExpr:", getSubExpr, "getTypeRepr:", getTypeRepr, "getElement:", getElement

View File

@@ -0,0 +1,6 @@
| enum_is_case.swift:4:1:4:17 | ... is some | Bool |
| enum_is_case.swift:5:1:5:32 | ... is some | Bool |
| enum_is_case.swift:6:1:6:1 | ... is some | Bool |
| enum_is_case.swift:7:1:7:1 | ... is some | Bool |
| enum_is_case.swift:9:1:9:19 | ... is some | Bool |
| enum_is_case.swift:14:1:14:18 | ... is some | Bool |

View File

@@ -0,0 +1,7 @@
// generated by codegen/codegen.py
import codeql.swift.elements
import TestUtils
from EnumIsCaseExpr x
where toBeTested(x) and not x.isUnknown()
select x, x.getType()

View File

@@ -1,4 +0,0 @@
// generated by codegen/codegen.py
After a swift source file is added in this directory and codegen/codegen.py is run again, test queries
will appear and this file will be deleted

View File

@@ -0,0 +1,14 @@
// EnumIsCaseExpr despite its generic nature is actually only generated when an `is` expression passes through an
// intrinsic Optional check
Optional.some(42) is Int
Optional.some(Optional.some(42)) is Int
42 is Int?
42 is Int??
[Optional.some(42)] is [Int]
[42] is [Int?]
class X {}
class Y: X {}
Optional.some(Y()) is X