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

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: Created 7 years, 1 month 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 (int,[int])->void");
28 Expect.isFalse(c1.m1 is T3, "(int,int)->void is ([int,int])->void");
29 Expect.isFalse(c1.m1 is T4, "(int,int)->void is (int,[int,int])->void");
30 Expect.isFalse(c1.m1 is T5, "(int,int)->void is ([int,int,int])->void");
31
32 Expect.isTrue(c1.m2 is T1, "(int,[int])->void is (int,[int])->void");
karlklose 2013/11/22 13:14:05 The second function type should be (int,int)->void
Johnni Winther 2013/11/25 07:28:57 Done.
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 ([int,int])->void");
35 Expect.isFalse(c1.m2 is T4, "(int,[int])->void is (int,[int,int])->void");
36 Expect.isFalse(c1.m2 is T5, "(int,[int])->void is ([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 (int,[int,int])->void");
42 Expect.isFalse(c1.m3 is T5, "([int,int])->void is ([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 ([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, "(int,[int,int])->void is ([int,int,int])->void");
49
50 Expect.isTrue(c1.m5 is T1, "([int,int,int])->void is (int,[int])->void");
51 Expect.isTrue(c1.m5 is T2, "([int,int,int])->void is (int,[int])->void");
52 Expect.isTrue(c1.m5 is T3, "([int,int,int])->void is ([int,int])->void");
53 Expect.isTrue(c1.m5 is T4, "([int,int,int])->void is (int,[int,int])->void");
54 Expect.isTrue(c1.m5 is T5, "([int,int,int])->void is ([int,int,int])->void");
55
56 var c2 = new C<int, double, int>();
57 Expect.isFalse(c2.m1 is T1, "(int,double)->void is (int,int)->void");
58 Expect.isFalse(c2.m1 is T2, "(int,double)->void is (int,[int])->void");
59 Expect.isFalse(c2.m1 is T3, "(int,double)->void is ([int,int])->void");
60 Expect.isFalse(c2.m1 is T4, "(int,double)->void is (int,[int,int])->void");
61 Expect.isFalse(c2.m1 is T5, "(int,double)->void is ([int,int,int])->void");
62
63 Expect.isFalse(c2.m2 is T1, "(int,[double])->void is (int,[int])->void");
64 Expect.isFalse(c2.m2 is T2, "(int,[double])->void is (int,[int])->void");
65 Expect.isFalse(c2.m2 is T3, "(int,[double])->void is ([int,int])->void");
66 Expect.isFalse(c2.m2 is T4, "(int,[double])->void is (int,[int,int])->void");
67 Expect.isFalse(c2.m2 is T5, "(int,[double])->void is ([int,int,int])->void");
68
69 Expect.isFalse(c2.m3 is T1, "([int,double])->void is (int,[int])->void");
70 Expect.isFalse(c2.m3 is T2, "([int,double])->void is (int,[int])->void");
71 Expect.isFalse(c2.m3 is T3, "([int,double])->void is ([int,int])->void");
72 Expect.isFalse(c2.m3 is T4, "([int,double])->void is (int,[int,int])->void");
73 Expect.isFalse(c2.m3 is T5, "([int,double])->void is ([int,int,int])->void");
74
75 Expect.isFalse(c2.m4 is T1, "(int,[double,int])->void is (int,[int])->void");
76 Expect.isFalse(c2.m4 is T2, "(int,[double,int])->void is (int,[int])->void");
77 Expect.isFalse(c2.m4 is T3, "(int,[double,int])->void is ([int,int])->void");
78 Expect.isFalse(c2.m4 is T4,
79 "(int,[double,int])->void is (int,[int,int])->void");
80 Expect.isFalse(c2.m4 is T5,
81 "(int,[double,int])->void is ([int,int,int])->void");
82
83 Expect.isFalse(c2.m5 is T1, "([int,double,int])->void is (int,[int])->void");
84 Expect.isFalse(c2.m5 is T2, "([int,double,int])->void is (int,[int])->void");
85 Expect.isFalse(c2.m5 is T3, "([int,double,int])->void is ([int,int])->void");
86 Expect.isFalse(c2.m5 is T4,
87 "([int,double,int])->void is (int,[int,int])->void");
88 Expect.isFalse(c2.m5 is T5,
89 "([int,double,int])->void is ([int,int,int])->void");
90
91 var c3 = new C<int, int, double>();
92 Expect.isTrue(c3.m1 is T1, "(int,int)->void is (int,int)->void");
93 Expect.isFalse(c3.m1 is T2, "(int,int)->void is (int,[int])->void");
94 Expect.isFalse(c3.m1 is T3, "(int,int)->void is ([int,int])->void");
95 Expect.isFalse(c3.m1 is T4, "(int,int)->void is (int,[int,int])->void");
96 Expect.isFalse(c3.m1 is T5, "(int,int)->void is ([int,int,int])->void");
97
98 Expect.isTrue(c3.m2 is T1, "(int,[int])->void is (int,[int])->void");
99 Expect.isTrue(c3.m2 is T2, "(int,[int])->void is (int,[int])->void");
100 Expect.isFalse(c3.m2 is T3, "(int,[int])->void is ([int,int])->void");
101 Expect.isFalse(c3.m2 is T4, "(int,[int])->void is (int,[int,int])->void");
102 Expect.isFalse(c3.m2 is T5, "(int,[int])->void is ([int,int,int])->void");
103
104 Expect.isTrue(c3.m3 is T1, "([int,int])->void is (int,[int])->void");
105 Expect.isTrue(c3.m3 is T2, "([int,int])->void is (int,[int])->void");
106 Expect.isTrue(c3.m3 is T3, "([int,int])->void is ([int,int])->void");
107 Expect.isFalse(c3.m3 is T4, "([int,int])->void is (int,[int,int])->void");
108 Expect.isFalse(c3.m3 is T5, "([int,int])->void is ([int,int,int])->void");
109
110 Expect.isTrue(c3.m4 is T1, "(int,[int,double])->void is (int,[int])->void");
111 Expect.isTrue(c3.m4 is T2, "(int,[int,double])->void is (int,[int])->void");
112 Expect.isFalse(c3.m4 is T3, "(int,[int,double])->void is ([int,int])->void");
113 Expect.isFalse(c3.m4 is T4,
114 "(int,[int,double])->void is (int,[int,int])->void");
115 Expect.isFalse(c3.m4 is T5,
116 "(int,[int,double])->void is ([int,int,int])->void");
117
118 Expect.isTrue(c3.m5 is T1, "([int,int,double])->void is (int,[int])->void");
119 Expect.isTrue(c3.m5 is T2, "([int,int,double])->void is (int,[int])->void");
120 Expect.isTrue(c3.m5 is T3, "([int,int,double])->void is ([int,int])->void");
121 Expect.isFalse(c3.m5 is T4,
122 "([int,int,double])->void is (int,[int,int])->void");
123 Expect.isFalse(c3.m5 is T5,
124 "([int,int,double])->void is ([int,int,int])->void");
125 }
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