OLD | NEW |
| (Empty) |
1 // Copyright (c) 2012, 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 | |
5 // Test of parameterized factory methods. | |
6 | |
7 class Foo<T extends num> { | |
8 Foo(); | |
9 | |
10 factory Foo.bad() = XFoo; // //# 00: static type warning | |
11 | |
12 factory Foo.good() = Foo; | |
13 | |
14 factory Foo.IFoo() { | |
15 return null; | |
16 } | |
17 } | |
18 | |
19 abstract class IFoo<T extends num> { | |
20 factory IFoo() = Foo<T>; | |
21 } | |
22 | |
23 // String is not assignable to num. | |
24 class Baz | |
25 extends Foo<String> //# 01: static type warning, dynamic type error | |
26 {} | |
27 | |
28 class Biz extends Foo<int> {} | |
29 | |
30 Foo<int> fi; | |
31 | |
32 // String is not assignable to num. | |
33 Foo | |
34 <String> //# 02: static type warning, dynamic type error | |
35 fs; | |
36 | |
37 class Box<T> { | |
38 // Box.T is not assignable to num. | |
39 Foo<T> t; //# 03: static type warning | |
40 | |
41 makeFoo() { | |
42 // Box.T is not assignable to num. | |
43 return new Foo<T>(); //# 04: static type warning, dynamic type error | |
44 } | |
45 } | |
46 | |
47 main() { | |
48 // String is not assignable to num. | |
49 var v1 = new Foo<String>(); //# 05: static type warning, dynamic type error | |
50 | |
51 // String is not assignable to num. | |
52 Foo<String> v2 = null; //# 06: static type warning | |
53 | |
54 new Baz(); | |
55 new Biz(); | |
56 | |
57 fi = new Foo(); | |
58 fs = new Foo(); | |
59 | |
60 new Box().makeFoo(); | |
61 new Box<int>().makeFoo(); | |
62 new Box<String>().makeFoo(); | |
63 | |
64 // Fisk does not exist. | |
65 new Box<Fisk>(); //# 07: static type warning | |
66 | |
67 // Too many type arguments. | |
68 new Box<Object, Object>(); //# 08: static type warning | |
69 | |
70 // Fisk does not exist. | |
71 Box<Fisk> box = null; //# 09: static type warning | |
72 | |
73 // Too many type arguments. | |
74 Box<Object, Object> box = null; //# 10: static type warning | |
75 } | |
OLD | NEW |