OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 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 | 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. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 library test.parameter_metadata_test; | 5 library test.parameter_metadata_test; |
6 | 6 |
7 import 'dart:mirrors'; | 7 import 'dart:mirrors'; |
8 | 8 |
9 import 'metadata_test.dart'; | 9 import 'metadata_test.dart'; |
10 | 10 |
11 const m1 = 'm1'; | 11 const m1 = 'm1'; |
12 const m2 = #m2; | 12 const m2 = #m2; |
13 const m3 = const CustomAnnotation(3); | 13 const m3 = const CustomAnnotation(3); |
14 | 14 |
15 class CustomAnnotation { | 15 class CustomAnnotation { |
16 final value; | 16 final value; |
17 const CustomAnnotation(this.value); | 17 const CustomAnnotation(this.value); |
18 toString() => 'CustomAnnotation($value)'; | 18 toString() => 'CustomAnnotation($value)'; |
19 } | 19 } |
20 | 20 |
21 class B { | 21 class B { |
22 B.foo(int x); | 22 B.foo(int x) {} |
23 factory B.bar(@m3 @m2 int z, x){} | 23 factory B.bar(@m3 @m2 int z, x) {} |
24 | 24 |
25 baz(@m1 final int x, @m2 int y, @m3 final int z); | 25 baz(@m1 final int x, @m2 int y, @m3 final int z) {} |
26 qux(int x, [@m3 @m2 @m1 int y= 3 + 1]); | 26 qux(int x, [@m3 @m2 @m1 int y= 3 + 1]) {} |
27 quux(int x, {String str: "foo"}); | 27 quux(int x, {String str: "foo"}) {} |
28 corge({@m1 int x: 3 * 17, @m2 String str: "bar"}); | 28 corge({@m1 int x: 3 * 17, @m2 String str: "bar"}) {} |
29 | 29 |
30 set x(@m2 final value); | 30 set x(@m2 final value) {} |
31 } | 31 } |
32 | 32 |
33 main() { | 33 main() { |
34 ClassMirror cm = reflectClass(B); | 34 ClassMirror cm = reflectClass(B); |
35 | 35 |
36 checkMetadata(cm.constructors[#B.foo].parameters[0], []); | 36 checkMetadata(cm.constructors[#B.foo].parameters[0], []); |
37 | 37 |
38 checkMetadata(cm.constructors[#B.bar].parameters[0], [m3, m2]); | 38 checkMetadata(cm.constructors[#B.bar].parameters[0], [m3, m2]); |
39 checkMetadata(cm.constructors[#B.bar].parameters[1], []); | 39 checkMetadata(cm.constructors[#B.bar].parameters[1], []); |
40 | 40 |
41 checkMetadata(cm.members[#baz].parameters[0], [m1]); | 41 checkMetadata(cm.methods[#baz].parameters[0], [m1]); |
42 checkMetadata(cm.members[#baz].parameters[1], [m2]); | 42 checkMetadata(cm.methods[#baz].parameters[1], [m2]); |
43 checkMetadata(cm.members[#baz].parameters[2], [m3]); | 43 checkMetadata(cm.methods[#baz].parameters[2], [m3]); |
44 | 44 |
45 checkMetadata(cm.members[#qux].parameters[0], []); | 45 checkMetadata(cm.methods[#qux].parameters[0], []); |
46 checkMetadata(cm.members[#qux].parameters[1], [m3, m2, m1]); | 46 checkMetadata(cm.methods[#qux].parameters[1], [m3, m2, m1]); |
47 | 47 |
48 checkMetadata(cm.members[#quux].parameters[0], []); | 48 checkMetadata(cm.methods[#quux].parameters[0], []); |
49 checkMetadata(cm.members[#quux].parameters[1], []); | 49 checkMetadata(cm.methods[#quux].parameters[1], []); |
50 | 50 |
51 checkMetadata(cm.members[#corge].parameters[0], [m1]); | 51 checkMetadata(cm.methods[#corge].parameters[0], [m1]); |
52 checkMetadata(cm.members[#corge].parameters[1], [m2]); | 52 checkMetadata(cm.methods[#corge].parameters[1], [m2]); |
53 | 53 |
54 checkMetadata(cm.members[const Symbol('x=')].parameters[0], [m2]); | 54 checkMetadata(cm.setters[const Symbol('x=')].parameters[0], [m2]); |
55 } | 55 } |
OLD | NEW |