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