Skip to content

Commit 0c900e4

Browse files
committed
Swift: Add a test for aliased types.
1 parent d426925 commit 0c900e4

File tree

5 files changed

+107
-0
lines changed

5 files changed

+107
-0
lines changed
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
| nominaltype.swift:35:6:35:6 | a | A | A | |
2+
| nominaltype.swift:36:6:36:6 | a_alias | A_alias | A_alias | |
3+
| nominaltype.swift:37:6:37:6 | a_optional_alias | A_optional_alias | A_optional_alias | |
4+
| nominaltype.swift:38:6:38:6 | b1 | B1 | B1 | getABaseType:A |
5+
| nominaltype.swift:39:6:39:6 | b2 | B2 | B2 | |
6+
| nominaltype.swift:40:6:40:6 | b1_alias | B1_alias | B1_alias | |
7+
| nominaltype.swift:41:6:41:6 | b2_alias | B2_alias | B2_alias | |
8+
| nominaltype.swift:42:6:42:6 | p | P | P | |
9+
| nominaltype.swift:43:6:43:6 | p_alias | P_alias | P_alias | |
10+
| nominaltype.swift:44:6:44:6 | c1 | C1 | C1 | getABaseType:P |
11+
| nominaltype.swift:45:6:45:6 | c2 | C2 | C2 | |
12+
| nominaltype.swift:46:6:46:6 | c1_alias | C1_alias | C1_alias | |
13+
| nominaltype.swift:47:6:47:6 | c2_alias | C2_alias | C2_alias | |
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import swift
2+
3+
string describe(Type t) {
4+
(
5+
result = "getAliasedType:" + t.(TypeAliasType).getAliasedType()
6+
) or (
7+
result = "getABaseType:" + t.(NominalType).getABaseType()
8+
)
9+
}
10+
11+
from VarDecl v, Type t
12+
where
13+
v.getLocation().getFile().getBaseName() != "" and
14+
not v.getName() = "self" and
15+
t = v.getType()
16+
select v, t.toString(), t.getUnderlyingType(), concat(describe(t), ", ")
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
2+
class A {
3+
}
4+
5+
typealias A_alias = A
6+
7+
typealias A_optional_alias = A?
8+
9+
class B1 : A {
10+
}
11+
12+
class B2 : A_alias {
13+
}
14+
15+
typealias B1_alias = B1
16+
17+
typealias B2_alias = B2
18+
19+
protocol P {
20+
}
21+
22+
typealias P_alias = P
23+
24+
class C1 : P {
25+
}
26+
27+
class C2 : P_alias {
28+
}
29+
30+
typealias C1_alias = C1
31+
32+
typealias C2_alias = C2
33+
34+
func test() {
35+
var a : A
36+
var a_alias : A_alias
37+
var a_optional_alias : A_optional_alias
38+
var b1 : B1
39+
var b2 : B2
40+
var b1_alias : B1_alias
41+
var b2_alias : B2_alias
42+
var p : P
43+
var p_alias : P_alias
44+
var c1 : C1
45+
var c2 : C2
46+
var c1_alias : C1_alias
47+
var c2_alias : C2_alias
48+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
| nominaltype.swift:35:6:35:6 | a | A | |
2+
| nominaltype.swift:36:6:36:6 | a_alias | A_alias | |
3+
| nominaltype.swift:37:6:37:6 | a_optional_alias | A_optional_alias | |
4+
| nominaltype.swift:38:6:38:6 | b1 | B1 | getABaseType:A |
5+
| nominaltype.swift:39:6:39:6 | b2 | B2 | getABaseType:A_alias |
6+
| nominaltype.swift:40:6:40:6 | b1_alias | B1_alias | |
7+
| nominaltype.swift:41:6:41:6 | b2_alias | B2_alias | |
8+
| nominaltype.swift:44:6:44:6 | c1 | C1 | getABaseType:P |
9+
| nominaltype.swift:45:6:45:6 | c2 | C2 | getABaseType:P_alias |
10+
| nominaltype.swift:46:6:46:6 | c1_alias | C1_alias | |
11+
| nominaltype.swift:47:6:47:6 | c2_alias | C2_alias | |
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import swift
2+
3+
string describe(TypeDecl td) {
4+
/*(
5+
result = "getAliasedType:" + td.(TypeAliasDecl).getAliasedType() TODO: not yet implemented.
6+
) or */(
7+
result = "getABaseType:" + td.(NominalTypeDecl).getABaseType()
8+
)
9+
}
10+
11+
from VarDecl v, TypeDecl td
12+
where
13+
v.getLocation().getFile().getBaseName() != "" and
14+
not v.getName() = "self" and
15+
(
16+
td = v.getType().(NominalType).getDeclaration() or
17+
td = v.getType().(TypeAliasType).getDecl()
18+
)
19+
select v, td.toString(), concat(describe(td), ", ")

0 commit comments

Comments
 (0)