Skip to content

Commit ee2496a

Browse files
committed
C#: Add unification tests for tuple types
1 parent af5c60c commit ee2496a

File tree

3 files changed

+34
-2
lines changed

3 files changed

+34
-2
lines changed

csharp/ql/test/library-tests/unification/Unification.cs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,13 @@ class ConstructSomeTypes
2121
C6<C1<S1>, C2<S1>, C3<C2<S1>>, S1> f7;
2222

2323
void M<Tm>(C6<C2<S2>, Tm, C3<Tm>, S2> x, C6<C2<S2>, C2<S2>, C3<C2<S2>>, S2> y) where Tm : C2<S2> { }
24-
}
24+
}
25+
26+
class Tuples<T8, T9>
27+
{
28+
static (T8, int) t1;
29+
static (string, int) t2;
30+
static (string, T9) t3;
31+
static (T8, T9) t4;
32+
static (T8 a, T9 b) t5 = t4;
33+
}

csharp/ql/test/library-tests/unification/Unification.expected

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@ constrainedTypeParameterSubsumes
33
| Unification.cs:7:10:7:11 | T2 | Unification.cs:3:22:3:23 | S2 |
44
| Unification.cs:7:10:7:11 | T2 | Unification.cs:7:10:7:11 | T2 |
55
| Unification.cs:7:10:7:11 | T2 | Unification.cs:11:25:11:27 | T6d |
6+
| Unification.cs:7:10:7:11 | T2 | Unification.cs:28:12:28:20 | (T8,Int32) |
7+
| Unification.cs:7:10:7:11 | T2 | Unification.cs:29:12:29:24 | (String,Int32) |
8+
| Unification.cs:7:10:7:11 | T2 | Unification.cs:30:12:30:23 | (String,T9) |
9+
| Unification.cs:7:10:7:11 | T2 | Unification.cs:31:12:31:19 | (T8,T9) |
10+
| Unification.cs:7:10:7:11 | T2 | Unification.cs:32:12:32:23 | (T8,T9) |
611
| Unification.cs:8:10:8:11 | T3 | Unification.cs:1:11:1:12 | I1 |
712
| Unification.cs:8:10:8:11 | T3 | Unification.cs:5:7:5:8 | C0 |
813
| Unification.cs:8:10:8:11 | T3 | Unification.cs:6:7:6:12 | C1<> |
@@ -36,6 +41,7 @@ constrainedTypeParameterSubsumes
3641
| Unification.cs:8:10:8:11 | T3 | Unification.cs:11:20:11:22 | T6c |
3742
| Unification.cs:8:10:8:11 | T3 | Unification.cs:13:7:13:24 | ConstructSomeTypes |
3843
| Unification.cs:8:10:8:11 | T3 | Unification.cs:23:12:23:13 | Tm |
44+
| Unification.cs:8:10:8:11 | T3 | Unification.cs:26:7:26:20 | Tuples<,> |
3945
| Unification.cs:9:10:9:11 | T4 | Unification.cs:6:7:6:12 | C1<C0> |
4046
| Unification.cs:9:10:9:11 | T4 | Unification.cs:9:10:9:11 | T4 |
4147
| Unification.cs:10:10:10:11 | T5 | Unification.cs:7:7:7:12 | C2<S1> |
@@ -71,6 +77,11 @@ constrainedTypeParameterSubsumes
7177
| Unification.cs:11:25:11:27 | T6d | Unification.cs:3:22:3:23 | S2 |
7278
| Unification.cs:11:25:11:27 | T6d | Unification.cs:7:10:7:11 | T2 |
7379
| Unification.cs:11:25:11:27 | T6d | Unification.cs:11:25:11:27 | T6d |
80+
| Unification.cs:11:25:11:27 | T6d | Unification.cs:28:12:28:20 | (T8,Int32) |
81+
| Unification.cs:11:25:11:27 | T6d | Unification.cs:29:12:29:24 | (String,Int32) |
82+
| Unification.cs:11:25:11:27 | T6d | Unification.cs:30:12:30:23 | (String,T9) |
83+
| Unification.cs:11:25:11:27 | T6d | Unification.cs:31:12:31:19 | (T8,T9) |
84+
| Unification.cs:11:25:11:27 | T6d | Unification.cs:32:12:32:23 | (T8,T9) |
7485
| Unification.cs:23:12:23:13 | Tm | Unification.cs:7:7:7:12 | C2<S2> |
7586
| Unification.cs:23:12:23:13 | Tm | Unification.cs:23:12:23:13 | Tm |
7687
constrainedTypeParameterSubsumptionImpliesUnification
@@ -79,6 +90,11 @@ constrainedTypeParameterUnifiable
7990
| Unification.cs:7:10:7:11 | T2 | Unification.cs:3:22:3:23 | S2 |
8091
| Unification.cs:7:10:7:11 | T2 | Unification.cs:7:10:7:11 | T2 |
8192
| Unification.cs:7:10:7:11 | T2 | Unification.cs:11:25:11:27 | T6d |
93+
| Unification.cs:7:10:7:11 | T2 | Unification.cs:28:12:28:20 | (T8,Int32) |
94+
| Unification.cs:7:10:7:11 | T2 | Unification.cs:29:12:29:24 | (String,Int32) |
95+
| Unification.cs:7:10:7:11 | T2 | Unification.cs:30:12:30:23 | (String,T9) |
96+
| Unification.cs:7:10:7:11 | T2 | Unification.cs:31:12:31:19 | (T8,T9) |
97+
| Unification.cs:7:10:7:11 | T2 | Unification.cs:32:12:32:23 | (T8,T9) |
8298
| Unification.cs:8:10:8:11 | T3 | Unification.cs:1:11:1:12 | I1 |
8399
| Unification.cs:8:10:8:11 | T3 | Unification.cs:5:7:5:8 | C0 |
84100
| Unification.cs:8:10:8:11 | T3 | Unification.cs:6:7:6:12 | C1<> |
@@ -112,6 +128,7 @@ constrainedTypeParameterUnifiable
112128
| Unification.cs:8:10:8:11 | T3 | Unification.cs:11:20:11:22 | T6c |
113129
| Unification.cs:8:10:8:11 | T3 | Unification.cs:13:7:13:24 | ConstructSomeTypes |
114130
| Unification.cs:8:10:8:11 | T3 | Unification.cs:23:12:23:13 | Tm |
131+
| Unification.cs:8:10:8:11 | T3 | Unification.cs:26:7:26:20 | Tuples<,> |
115132
| Unification.cs:9:10:9:11 | T4 | Unification.cs:6:7:6:12 | C1<> |
116133
| Unification.cs:9:10:9:11 | T4 | Unification.cs:6:7:6:12 | C1<C0> |
117134
| Unification.cs:9:10:9:11 | T4 | Unification.cs:6:7:6:12 | C1<T2> |
@@ -155,6 +172,11 @@ constrainedTypeParameterUnifiable
155172
| Unification.cs:11:25:11:27 | T6d | Unification.cs:3:22:3:23 | S2 |
156173
| Unification.cs:11:25:11:27 | T6d | Unification.cs:7:10:7:11 | T2 |
157174
| Unification.cs:11:25:11:27 | T6d | Unification.cs:11:25:11:27 | T6d |
175+
| Unification.cs:11:25:11:27 | T6d | Unification.cs:28:12:28:20 | (T8,Int32) |
176+
| Unification.cs:11:25:11:27 | T6d | Unification.cs:29:12:29:24 | (String,Int32) |
177+
| Unification.cs:11:25:11:27 | T6d | Unification.cs:30:12:30:23 | (String,T9) |
178+
| Unification.cs:11:25:11:27 | T6d | Unification.cs:31:12:31:19 | (T8,T9) |
179+
| Unification.cs:11:25:11:27 | T6d | Unification.cs:32:12:32:23 | (T8,T9) |
158180
| Unification.cs:23:12:23:13 | Tm | Unification.cs:7:7:7:12 | C2<> |
159181
| Unification.cs:23:12:23:13 | Tm | Unification.cs:7:7:7:12 | C2<S2> |
160182
| Unification.cs:23:12:23:13 | Tm | Unification.cs:23:12:23:13 | Tm |
@@ -220,6 +242,7 @@ subsumes
220242
| Unification.cs:11:7:11:28 | C6<C2<S2>,C2<S2>,C3<C2<S2>>,S2> | Unification.cs:11:7:11:28 | C6<C2<S2>,C2<S2>,C3<C2<S2>>,S2> |
221243
| Unification.cs:11:7:11:28 | C6<C2<S2>,Tm,C3<Tm>,S2> | Unification.cs:11:7:11:28 | C6<C2<S2>,C2<S2>,C3<C2<S2>>,S2> |
222244
| Unification.cs:11:7:11:28 | C6<C2<S2>,Tm,C3<Tm>,S2> | Unification.cs:11:7:11:28 | C6<C2<S2>,Tm,C3<Tm>,S2> |
245+
| Unification.cs:26:7:26:20 | Tuples<,> | Unification.cs:26:7:26:20 | Tuples<,> |
223246
subsumptionImpliesUnification
224247
unifiable
225248
| Unification.cs:6:7:6:12 | C1<C0> | Unification.cs:6:7:6:12 | C1<> |

csharp/ql/test/library-tests/unification/Unification.ql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import semmle.code.csharp.Unification
33
class InterestingType extends Type {
44
InterestingType() {
55
this.fromSource() or
6-
this.getAChild() instanceof InterestingType
6+
this.(TupleType).getAChild() instanceof InterestingType
77
}
88
}
99

0 commit comments

Comments
 (0)