OLD | NEW |
(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 |
| 5 library test.parameter_metadata_test; |
| 6 |
| 7 import 'dart:mirrors'; |
| 8 |
| 9 import 'metadata_test.dart'; |
| 10 |
| 11 const m1 = 'm1'; |
| 12 const m2 = #m2; |
| 13 const m3 = const CustomAnnotation(3); |
| 14 |
| 15 class CustomAnnotation { |
| 16 final value; |
| 17 const CustomAnnotation(this.value); |
| 18 toString() => 'CustomAnnotation($value)'; |
| 19 } |
| 20 |
| 21 class B { |
| 22 B.foo(int x) {} |
| 23 factory B.bar(@m3 @m2 int z, x) {} |
| 24 |
| 25 baz(@m1 final int x, @m2 int y, @m3 final int z) {} |
| 26 qux(int x, [@m3 @m2 @m1 int y= 3 + 1]) {} |
| 27 quux(int x, {String str: "foo"}) {} |
| 28 corge({@m1 int x: 3 * 17, @m2 String str: "bar"}) {} |
| 29 |
| 30 set x(@m2 final value) {} |
| 31 } |
| 32 |
| 33 main() { |
| 34 ClassMirror cm = reflectClass(B); |
| 35 MethodMirror mm; |
| 36 |
| 37 mm = cm.declarations[#B.foo]; |
| 38 checkMetadata(mm.parameters[0], []); |
| 39 |
| 40 mm = cm.declarations[#B.bar]; |
| 41 checkMetadata(mm.parameters[0], [m3, m2]); |
| 42 checkMetadata(mm.parameters[1], []); |
| 43 |
| 44 mm = cm.declarations[#baz]; |
| 45 checkMetadata(mm.parameters[0], [m1]); |
| 46 checkMetadata(mm.parameters[1], [m2]); |
| 47 checkMetadata(mm.parameters[2], [m3]); |
| 48 |
| 49 mm = cm.declarations[#qux]; |
| 50 checkMetadata(mm.parameters[0], []); |
| 51 checkMetadata(mm.parameters[1], [m3, m2, m1]); |
| 52 |
| 53 mm = cm.declarations[#quux]; |
| 54 checkMetadata(mm.parameters[0], []); |
| 55 checkMetadata(mm.parameters[1], []); |
| 56 |
| 57 mm = cm.declarations[#corge]; |
| 58 checkMetadata(mm.parameters[0], [m1]); |
| 59 checkMetadata(mm.parameters[1], [m2]); |
| 60 |
| 61 mm = cm.declarations[const Symbol('x=')]; |
| 62 checkMetadata(mm.parameters[0], [m2]); |
| 63 } |
OLD | NEW |