Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(757)

Side by Side Diff: tests/language/function_subtype2_test.dart

Issue 82693004: Fix function subtyping bug. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Updated cf. comments. Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « sdk/lib/_internal/lib/js_rti.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file.
4 // Dart test program for constructors and initializers.
5
6 // Check function subtyping for optional parameters.
7
8 import 'package:expect/expect.dart';
9
10 typedef void T1(int a, int b);
11 typedef void T2(int a, [int b]);
12 typedef void T3([int a, int b]);
13 typedef void T4(int a, [int b, int c]);
14 typedef void T5([int a, int b, int c]);
15
16 class C<T, S, U> {
17 void m1(T a, S b) {}
18 void m2(T a, [S b]) {}
19 void m3([T a, S b]) {}
20 void m4(T a, [S b, U c]) {}
21 void m5([T a, S b, U c]) {}
22 }
23
24 main() {
25 var c1 = new C<int, int, int>();
26 Expect.isTrue(c1.m1 is T1, "(int,int)->void is (int,int)->void");
27 Expect.isFalse(c1.m1 is T2, "(int,int)->void is not (int,[int])->void");
28 Expect.isFalse(c1.m1 is T3, "(int,int)->void is not ([int,int])->void");
29 Expect.isFalse(c1.m1 is T4, "(int,int)->void is not (int,[int,int])->void");
30 Expect.isFalse(c1.m1 is T5, "(int,int)->void is not ([int,int,int])->void");
31
32 Expect.isTrue(c1.m2 is T1, "(int,[int])->void is (int,int)->void");
33 Expect.isTrue(c1.m2 is T2, "(int,[int])->void is (int,[int])->void");
34 Expect.isFalse(c1.m2 is T3, "(int,[int])->void is not ([int,int])->void");
35 Expect.isFalse(c1.m2 is T4, "(int,[int])->void is not (int,[int,int])->void");
36 Expect.isFalse(c1.m2 is T5, "(int,[int])->void is not ([int,int,int])->void");
37
38 Expect.isTrue(c1.m3 is T1, "([int,int])->void is (int,int)->void");
39 Expect.isTrue(c1.m3 is T2, "([int,int])->void is (int,[int])->void");
40 Expect.isTrue(c1.m3 is T3, "([int,int])->void is ([int,int])->void");
41 Expect.isFalse(c1.m3 is T4, "([int,int])->void is not (int,[int,int])->void");
42 Expect.isFalse(c1.m3 is T5, "([int,int])->void is not ([int,int,int])->void");
43
44 Expect.isTrue(c1.m4 is T1, "(int,[int,int])->void is (int,int)->void");
45 Expect.isTrue(c1.m4 is T2, "(int,[int,int])->void is (int,[int])->void");
46 Expect.isFalse(c1.m4 is T3, "(int,[int,int])->void is not ([int,int])->void");
47 Expect.isTrue(c1.m4 is T4, "(int,[int,int])->void is (int,[int,int])->void");
48 Expect.isFalse(c1.m4 is T5,
49 "(int,[int,int])->void is not ([int,int,int])->void");
50
51 Expect.isTrue(c1.m5 is T1, "([int,int,int])->void is (int,int)->void");
52 Expect.isTrue(c1.m5 is T2, "([int,int,int])->void is (int,[int])->void");
53 Expect.isTrue(c1.m5 is T3, "([int,int,int])->void is ([int,int])->void");
54 Expect.isTrue(c1.m5 is T4, "([int,int,int])->void is (int,[int,int])->void");
55 Expect.isTrue(c1.m5 is T5, "([int,int,int])->void is ([int,int,int])->void");
56
57 var c2 = new C<int, double, int>();
58 Expect.isFalse(c2.m1 is T1, "(int,double)->void is not (int,int)->void");
59 Expect.isFalse(c2.m1 is T2,
60 "(int,double)->void is not not (int,[int])->void");
61 Expect.isFalse(c2.m1 is T3, "(int,double)->void is not ([int,int])->void");
62 Expect.isFalse(c2.m1 is T4,
63 "(int,double)->void is not (int,[int,int])->void");
64 Expect.isFalse(c2.m1 is T5,
65 "(int,double)->void is not ([int,int,int])->void");
66
67 Expect.isFalse(c2.m2 is T1, "(int,[double])->void is not (int,int)->void");
68 Expect.isFalse(c2.m2 is T2, "(int,[double])->void is not (int,[int])->void");
69 Expect.isFalse(c2.m2 is T3, "(int,[double])->void is not ([int,int])->void");
70 Expect.isFalse(c2.m2 is T4,
71 "(int,[double])->void is not (int,[int,int])->void");
72 Expect.isFalse(c2.m2 is T5,
73 "(int,[double])->void is not ([int,int,int])->void");
74
75 Expect.isFalse(c2.m3 is T1, "([int,double])->void is not (int,int)->void");
76 Expect.isFalse(c2.m3 is T2, "([int,double])->void is not (int,[int])->void");
77 Expect.isFalse(c2.m3 is T3, "([int,double])->void is not ([int,int])->void");
78 Expect.isFalse(c2.m3 is T4,
79 "([int,double])->void is not (int,[int,int])->void");
80 Expect.isFalse(c2.m3 is T5,
81 "([int,double])->void is not ([int,int,int])->void");
82
83 Expect.isFalse(c2.m4 is T1,
84 "(int,[double,int])->void is not (int,int)->void");
85 Expect.isFalse(c2.m4 is T2,
86 "(int,[double,int])->void is not (int,[int])->void");
87 Expect.isFalse(c2.m4 is T3,
88 "(int,[double,int])->void is not ([int,int])->void");
89 Expect.isFalse(c2.m4 is T4,
90 "(int,[double,int])->void is (int,[int,int])->void");
91 Expect.isFalse(c2.m4 is T5,
92 "(int,[double,int])->void is ([int,int,int])->void");
93
94 Expect.isFalse(c2.m5 is T1,
95 "([int,double,int])->void is not (int,int)->void");
96 Expect.isFalse(c2.m5 is T2,
97 "([int,double,int])->void is not (int,[int])->void");
98 Expect.isFalse(c2.m5 is T3,
99 "([int,double,int])->void is not ([int,int])->void");
100 Expect.isFalse(c2.m5 is T4,
101 "([int,double,int])->void is (int,[int,int])->void");
102 Expect.isFalse(c2.m5 is T5,
103 "([int,double,int])->void is ([int,int,int])->void");
104
105 var c3 = new C<int, int, double>();
106 Expect.isTrue(c3.m1 is T1, "(int,int)->void is (int,int)->void");
107 Expect.isFalse(c3.m1 is T2, "(int,int)->void is not (int,[int])->void");
108 Expect.isFalse(c3.m1 is T3, "(int,int)->void is not ([int,int])->void");
109 Expect.isFalse(c3.m1 is T4, "(int,int)->void is not (int,[int,int])->void");
110 Expect.isFalse(c3.m1 is T5, "(int,int)->void is not ([int,int,int])->void");
111
112 Expect.isTrue(c3.m2 is T1, "(int,[int])->void is (int,int)->void");
113 Expect.isTrue(c3.m2 is T2, "(int,[int])->void is (int,[int])->void");
114 Expect.isFalse(c3.m2 is T3, "(int,[int])->void is not ([int,int])->void");
115 Expect.isFalse(c3.m2 is T4, "(int,[int])->void is not (int,[int,int])->void");
116 Expect.isFalse(c3.m2 is T5, "(int,[int])->void is not ([int,int,int])->void");
117
118 Expect.isTrue(c3.m3 is T1, "([int,int])->void is (int,int)->void");
119 Expect.isTrue(c3.m3 is T2, "([int,int])->void is (int,[int])->void");
120 Expect.isTrue(c3.m3 is T3, "([int,int])->void is ([int,int])->void");
121 Expect.isFalse(c3.m3 is T4, "([int,int])->void is not (int,[int,int])->void");
122 Expect.isFalse(c3.m3 is T5, "([int,int])->void is not ([int,int,int])->void");
123
124 Expect.isTrue(c3.m4 is T1, "(int,[int,double])->void is (int,int)->void");
125 Expect.isTrue(c3.m4 is T2, "(int,[int,double])->void is (int,[int])->void");
126 Expect.isFalse(c3.m4 is T3,
127 "(int,[int,double])->void is not ([int,int])->void");
128 Expect.isFalse(c3.m4 is T4,
129 "(int,[int,double])->void is (int,[int,int])->void");
130 Expect.isFalse(c3.m4 is T5,
131 "(int,[int,double])->void is ([int,int,int])->void");
132
133 Expect.isTrue(c3.m5 is T1, "([int,int,double])->void is (int,int)->void");
134 Expect.isTrue(c3.m5 is T2, "([int,int,double])->void is (int,[int])->void");
135 Expect.isTrue(c3.m5 is T3, "([int,int,double])->void is ([int,int])->void");
136 Expect.isFalse(c3.m5 is T4,
137 "([int,int,double])->void is (int,[int,int])->void");
138 Expect.isFalse(c3.m5 is T5,
139 "([int,int,double])->void is ([int,int,int])->void");
140 }
OLDNEW
« no previous file with comments | « sdk/lib/_internal/lib/js_rti.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698