Skip to content

Commit 7b27534

Browse files
authored
#1400. Dynamic semantics tests complemented (#2077)
Dynamic semantics tests complemented.
1 parent c9b0c3f commit 7b27534

10 files changed

+140
-29
lines changed

LanguageFeatures/Inline-classes/dynamic_semantics_member_invocation_A01_t01.dart

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,11 @@ inline class IC2<T extends num> {
4141
List<T> get emptyList => <T>[];
4242
}
4343

44+
inline class IC3 implements IC2<int> {
45+
final int id;
46+
IC3(this.id);
47+
}
48+
4449
main() {
4550
IC<Object?> ic1_1 = IC(42);
4651
Expect.equals(42, ic1_1.id);
@@ -56,4 +61,7 @@ main() {
5661
ic2_2.emptyList.expectStaticType<Exactly<List<num>>>();
5762
ic2_2.emptyList.add(42);
5863
ic2_2.emptyList.add(3.14);
64+
65+
IC3 ic3 = IC3(3);
66+
ic3.emptyList.expectStaticType<Exactly<List<int>>>();
5967
}

LanguageFeatures/Inline-classes/dynamic_semantics_member_invocation_A01_t02.dart

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,16 +43,29 @@ inline class IC<T extends num> {
4343
}
4444
}
4545

46+
inline class IC2<T extends num> implements IC<T> {
47+
final T id;
48+
IC2(this.id);
49+
}
50+
4651
main() {
47-
IC<num> ic1 = IC(42);
52+
IC<num> ic_1 = IC(42);
4853
try {
49-
ic1.testMe;
54+
ic_1.testMe;
5055
} catch (e, _st) {
5156
Expect.equals("T is num", e);
5257
Expect.equals(st, _st);
5358
}
5459

55-
IC<int> ic2 = IC(42);
60+
IC<int> ic_2 = IC(42);
61+
try {
62+
ic_2.testMe;
63+
} catch (e, _st) {
64+
Expect.equals("T is int", e);
65+
Expect.equals(st, _st);
66+
}
67+
68+
IC2<int> ic2 = IC2(42);
5669
try {
5770
ic2.testMe;
5871
} catch (e, _st) {

LanguageFeatures/Inline-classes/dynamic_semantics_member_invocation_A02_t02.dart

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,18 @@ inline class IC<T> {
3535
}
3636
}
3737

38+
inline class IC2<T> implements IC<T> {
39+
final T id;
40+
IC2(this.id);
41+
}
42+
43+
3844
main() {
3945
IC ic = IC(42);
4046
Expect.identical(ic, ic.test1());
4147
ic.test2();
48+
49+
IC2 ic2 = IC2(42);
50+
Expect.identical(ic2, ic2.test1());
51+
ic2.test2();
4252
}

LanguageFeatures/Inline-classes/dynamic_semantics_member_invocation_A02_t03.dart

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,15 +33,23 @@ inline class IC<T> {
3333
Map<K, V> asMap<K, V extends T>(K key) => {key: this.id as V};
3434
}
3535

36+
inline class IC2<T> implements IC<T>{
37+
final T id;
38+
IC2(this.id);
39+
}
40+
3641
main() {
37-
IC<int> ic1 = IC(42);
38-
var asMapTearOff = ic1.asMap;
39-
Expect.notEquals(asMapTearOff, ic1.asMap);
40-
Expect.equals(asMapTearOff, asMapTearOff);
42+
IC<int> ic_1 = IC(42);
43+
var asMapTearOff_1 = ic_1.asMap;
44+
Expect.equals(asMapTearOff_1, asMapTearOff_1);
45+
46+
IC<num> ic_2 = IC(42);
47+
var asMapTearOff_2 = ic_2.asMap;
48+
Expect.notEquals(asMapTearOff_2, asMapTearOff_1);
49+
Expect.equals(asMapTearOff_2, asMapTearOff_2);
4150

42-
IC<num> ic2 = IC(42);
51+
IC2<num> ic2 = IC2(42);
4352
var asMapTearOff2 = ic2.asMap;
44-
Expect.notEquals(asMapTearOff2, ic2.asMap);
45-
Expect.notEquals(asMapTearOff2, asMapTearOff);
53+
Expect.notEquals(asMapTearOff2, asMapTearOff_1);
4654
Expect.equals(asMapTearOff2, asMapTearOff2);
4755
}

LanguageFeatures/Inline-classes/dynamic_semantics_member_invocation_A02_t04.dart

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,20 +40,33 @@ inline class IC<T extends num> {
4040
}
4141
}
4242

43+
inline class IC2 implements IC<num> {
44+
final int id;
45+
IC2(this.id);
46+
}
47+
4348
main() {
44-
IC<num> ic1 = IC(42);
49+
IC<num> ic_1 = IC(42);
4550
try {
46-
ic1.testMe();
51+
ic_1.testMe();
4752
} catch (e, _st) {
4853
Expect.equals("X is num", e);
4954
Expect.equals(st, _st);
5055
}
5156

52-
IC<int> ic2 = IC(42);
57+
IC<int> ic_2 = IC(42);
5358
try {
54-
ic2.testMe();
59+
ic_2.testMe();
5560
} catch (e, _st) {
5661
Expect.equals("X is int", e);
5762
Expect.equals(st, _st);
5863
}
64+
65+
IC2 ic2 = IC2(42);
66+
try {
67+
ic2.testMe();
68+
} catch (e, _st) {
69+
Expect.equals("X is num", e);
70+
Expect.equals(st, _st);
71+
}
5972
}

LanguageFeatures/Inline-classes/dynamic_semantics_member_invocation_A03_t01.dart

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,33 @@ inline class IC<T> {
3838
Map<K, Type> asMap<K, V extends T>(K key1, K key2) => {key1: V, key2: T};
3939
}
4040

41+
inline class IC2<T> implements IC<T> {
42+
final T id;
43+
IC2(this.id);
44+
}
45+
46+
inline class IC3<T extends num> implements IC<num> {
47+
final T id;
48+
IC3(this.id);
49+
}
50+
4151
main() {
4252
IC<num> ic1 = IC(42);
4353
Expect.mapEquals(
4454
{"key1": int, "key2": num}, ic1.asMap<String, int>("key1", "key2"));
4555
Expect.mapEquals(
4656
{"key1": num, "key2": num}, ic1.asMap<String, num>("key1", "key2"));
57+
58+
IC<num> ic2 = IC2(42);
59+
Expect.mapEquals(
60+
{"key1": int, "key2": num}, ic2.asMap<String, int>("key1", "key2"));
61+
Expect.mapEquals(
62+
{"key1": num, "key2": num}, ic2.asMap<String, num>("key1", "key2"));
63+
64+
IC3<int> ic3 = IC3(42);
65+
Expect.mapEquals(
66+
{"key1": int, "key2": num}, ic3.asMap<String, int>("key1", "key2"));
67+
Expect.mapEquals(
68+
{"key1": num, "key2": num}, ic3.asMap<String, num>("key1", "key2"));
69+
4770
}

LanguageFeatures/Inline-classes/dynamic_semantics_member_invocation_A03_t02.dart

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,26 @@ inline class IC<T> {
3939
}
4040
}
4141

42+
inline class IC2<T> implements IC<T> {
43+
final T id;
44+
IC2(this.id);
45+
}
46+
47+
inline class IC3<T extends num> implements IC<num> {
48+
final T id;
49+
IC3(this.id);
50+
}
51+
4252
main() {
43-
IC<num> ic = IC(42);
53+
IC<num> ic = IC(1);
4454
Expect.identical(ic, ic.test1());
4555
ic.test2();
56+
57+
IC2<num> ic2 = IC2(2);
58+
Expect.identical(ic2, ic2.test1());
59+
ic2.test2();
60+
61+
IC3<int> ic3 = IC3(3);
62+
Expect.identical(ic3, ic3.test1());
63+
ic3.test2();
4664
}

LanguageFeatures/Inline-classes/dynamic_semantics_member_invocation_A03_t03.dart

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,15 +37,24 @@ inline class IC<T> {
3737
Map<K, V> asMap<K, V extends T>(K key) => {key: this.id as V};
3838
}
3939

40+
inline class IC2<T> implements IC<T>{
41+
final T id;
42+
IC2(this.id);
43+
}
44+
4045
main() {
41-
IC<int> ic1 = IC(42);
42-
var asMapTearOff = ic1.asMap<String, int>;
43-
Expect.notEquals(asMapTearOff, ic1.asMap<String, int>);
44-
Expect.equals(asMapTearOff, asMapTearOff);
45-
46-
IC<num> ic2 = IC(42);
47-
var asMapTearOff2 = ic2.asMap<String, double>;
48-
Expect.notEquals(asMapTearOff2, ic2.asMap<String, double>);
49-
Expect.notEquals(asMapTearOff2, asMapTearOff);
46+
IC<int> ic_1 = IC(42);
47+
var asMapTearOff_1 = ic_1.asMap<String, int>;
48+
Expect.equals(asMapTearOff_1, asMapTearOff_1);
49+
50+
IC<num> ic_2 = IC(42);
51+
var asMapTearOff_2 = ic_2.asMap<String, double>;
52+
Expect.notEquals(asMapTearOff_2, asMapTearOff_1);
53+
Expect.equals(asMapTearOff_2, asMapTearOff_2);
54+
55+
IC2<num> ic2 = IC2(42);
56+
var asMapTearOff2 = ic2.asMap<String, num>;
57+
Expect.notEquals(asMapTearOff2, asMapTearOff_1);
58+
Expect.notEquals(asMapTearOff2, asMapTearOff_2);
5059
Expect.equals(asMapTearOff2, asMapTearOff2);
5160
}

LanguageFeatures/Inline-classes/dynamic_semantics_member_invocation_A03_t04.dart

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,11 @@ inline class IC<T extends num> {
4444
}
4545
}
4646

47+
inline class IC2<T extends num> implements IC<T>{
48+
final T id;
49+
IC2(this.id);
50+
}
51+
4752
main() {
4853
IC<num> ic1 = IC(42);
4954
try {
@@ -59,4 +64,12 @@ main() {
5964
Expect.equals("X is double", e);
6065
Expect.equals(st, _st);
6166
}
67+
68+
IC2<num> ic2 = IC2(0);
69+
try {
70+
ic2.testMe<int>();
71+
} catch (e, _st) {
72+
Expect.equals("X is int", e);
73+
Expect.equals(st, _st);
74+
}
6275
}

LanguageFeatures/Inline-classes/static_analysis_member_invocation_A02_t01.dart

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,7 @@ inline class BaseIC {
1616
foo() {}
1717
}
1818

19-
abstract class BaseC {
20-
bar();
21-
}
22-
23-
inline class IC implements BaseIC, BaseC {
19+
inline class IC implements BaseIC {
2420
final int id;
2521
IC(this.id);
2622
foo() {}

0 commit comments

Comments
 (0)