Skip to content

Commit 296b8cb

Browse files
authored
Merge pull request github#9719 from github/redsun82/swift-enum-is-case
Swift: add EnumIsCase test
2 parents 12fa696 + 5c6ac2a commit 296b8cb

File tree

6 files changed

+63
-4
lines changed

6 files changed

+63
-4
lines changed
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
| 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 |
2+
| 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 |
3+
| 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 |
4+
| 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 |
5+
| 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 |
6+
| enum_is_case.swift:19:1:19:18 | ... is some | getSubExpr: | enum_is_case.swift:19:1:19:18 | OptionalEvaluationExpr | getTypeRepr: | enum_is_case.swift:19:23:19:23 | SimpleIdentTypeRepr | getElement: | file://:0:0:0:0 | some |
7+
| enum_is_case.swift:21:1:21:5 | ... is some | getSubExpr: | enum_is_case.swift:21:1:21:5 | [...] | getTypeRepr: | enum_is_case.swift:21:10:21:12 | [...] | getElement: | file://:0:0:0:0 | some |
8+
| enum_is_case.swift:22:1:22:10 | ... is some | getSubExpr: | enum_is_case.swift:22:1:22:10 | [...] | getTypeRepr: | enum_is_case.swift:22:15:22:25 | [... : ...] | getElement: | file://:0:0:0:0 | some |
9+
| enum_is_case.swift:23:1:23:10 | ... is some | getSubExpr: | enum_is_case.swift:23:1:23:10 | [...] | getTypeRepr: | enum_is_case.swift:23:15:23:25 | [... : ...] | getElement: | file://:0:0:0:0 | some |
10+
| enum_is_case.swift:24:1:24:8 | ... is some | getSubExpr: | enum_is_case.swift:24:1:24:8 | call to ... | getTypeRepr: | enum_is_case.swift:24:13:24:18 | ...<...> | getElement: | file://:0:0:0:0 | some |
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
// generated by codegen/codegen.py
2+
import codeql.swift.elements
3+
import TestUtils
4+
5+
from EnumIsCaseExpr x, Expr getSubExpr, TypeRepr getTypeRepr, EnumElementDecl getElement
6+
where
7+
toBeTested(x) and
8+
not x.isUnknown() and
9+
getSubExpr = x.getSubExpr() and
10+
getTypeRepr = x.getTypeRepr() and
11+
getElement = x.getElement()
12+
select x, "getSubExpr:", getSubExpr, "getTypeRepr:", getTypeRepr, "getElement:", getElement
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
| enum_is_case.swift:4:1:4:17 | ... is some | Bool |
2+
| enum_is_case.swift:5:1:5:32 | ... is some | Bool |
3+
| enum_is_case.swift:6:1:6:1 | ... is some | Bool |
4+
| enum_is_case.swift:7:1:7:1 | ... is some | Bool |
5+
| enum_is_case.swift:9:1:9:19 | ... is some | Bool |
6+
| enum_is_case.swift:19:1:19:18 | ... is some | Bool |
7+
| enum_is_case.swift:21:1:21:5 | ... is some | Bool |
8+
| enum_is_case.swift:22:1:22:10 | ... is some | Bool |
9+
| enum_is_case.swift:23:1:23:10 | ... is some | Bool |
10+
| enum_is_case.swift:24:1:24:8 | ... is some | Bool |
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
// generated by codegen/codegen.py
2+
import codeql.swift.elements
3+
import TestUtils
4+
5+
from EnumIsCaseExpr x
6+
where toBeTested(x) and not x.isUnknown()
7+
select x, x.getType()

swift/ql/test/extractor-tests/generated/expr/EnumIsCaseExpr/MISSING_SOURCE.txt

Lines changed: 0 additions & 4 deletions
This file was deleted.
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
// EnumIsCaseExpr despite its generic nature is actually only generated when an `is` expression passes through an
2+
// intrinsic Optional check, or an array, dictionary or set downcast
3+
4+
Optional.some(42) is Int
5+
Optional.some(Optional.some(42)) is Int
6+
42 is Int?
7+
42 is Int??
8+
9+
[Optional.some(42)] is [Int]
10+
[42] is [Int?]
11+
12+
class X : Hashable {
13+
static func == (lhs: X, rhs: X) -> Bool { return true }
14+
func hash(into hasher: inout Hasher) {}
15+
}
16+
17+
class Y: X {}
18+
19+
Optional.some(Y()) is X
20+
21+
[X()] is [Y]
22+
["x": X()] is [String: Y]
23+
["x": X()] is [String: Y]
24+
Set<X>() is Set<Y>

0 commit comments

Comments
 (0)