Chromium Code Reviews| 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.metadata_with_type_literal; | |
| 6 | |
| 7 import 'dart:mirrors'; | |
| 8 | |
| 9 import 'metadata_test.dart'; | |
| 10 import 'metadata_allowed_values_import.dart'; // Unprefixed. | |
| 11 import 'metadata_allowed_values_import.dart' as prefix; | |
| 12 | |
| 13 @A | |
| 14 class A {} | |
| 15 | |
| 16 @B.CONSTANT | |
| 17 class B { | |
| 18 static const CONSTANT = 3; | |
| 19 } | |
| 20 | |
| 21 @C(3) | |
| 22 class C { | |
| 23 final field; | |
| 24 const C(this.field); | |
| 25 } | |
| 26 | |
| 27 @D.named(4) | |
| 28 class D { | |
| 29 final field; | |
| 30 const D.named(this.field); | |
| 31 } | |
| 32 | |
| 33 @E.NOT_CONSTANT /// 01: compile-time error | |
| 34 class E { | |
| 35 static var NOT_CONSTANT = 3; | |
| 36 } | |
| 37 | |
| 38 @F(6) /// 02: compile-time error | |
| 39 class F { | |
| 40 final field; | |
| 41 F(this.field); | |
| 42 } | |
| 43 | |
| 44 @G.named(4) /// 03: compile-time error | |
| 45 class G { | |
| 46 final field; | |
| 47 G.named(this.field); | |
| 48 } | |
| 49 | |
| 50 @H<int>() /// 04: compile-time error | |
|
rmacnak
2013/10/24 21:33:56
dart2js thinks this okay
| |
| 51 class H<T> { | |
| 52 const H(); | |
| 53 } | |
| 54 | |
| 55 @I[0] /// 05: compile-time error | |
| 56 class I {} | |
| 57 | |
| 58 @this.toString /// 06: compile-time error | |
| 59 class J {} | |
| 60 | |
| 61 @super.toString /// 07: compile-time error | |
| 62 class K {} | |
| 63 | |
| 64 @L.func() /// 08: compile-time error | |
| 65 class L { | |
| 66 static func() => 6; | |
| 67 } | |
| 68 | |
| 69 @Imported | |
| 70 class M {} | |
| 71 | |
| 72 @Imported() | |
| 73 class N {} | |
| 74 | |
| 75 @Imported.named() | |
| 76 class O {} | |
| 77 | |
| 78 @Imported.CONSTANT | |
| 79 class P {} | |
| 80 | |
| 81 @prefix.Imported | |
| 82 class Q {} | |
| 83 | |
| 84 @prefix.Imported() | |
| 85 class R {} | |
| 86 | |
| 87 @prefix.Imported.named() | |
| 88 class S {} | |
| 89 | |
| 90 @prefix.Imported.CONSTANT | |
| 91 class T {} | |
| 92 | |
| 93 @U..toString() /// 09: compile-time error | |
| 94 class U {} | |
| 95 | |
| 96 @V.tearOff | |
|
rmacnak
2013/10/24 21:33:56
Having code in metadata is weird.
| |
| 97 class V { | |
| 98 static tearOff() {} | |
| 99 } | |
| 100 | |
| 101 topLevelTearOff() => 4; | |
| 102 | |
| 103 @topLevelTearOff | |
| 104 class W {} | |
| 105 | |
| 106 main() { | |
| 107 checkMetadata(reflectClass(A), [A]); | |
| 108 checkMetadata(reflectClass(B), [B.CONSTANT]); | |
| 109 checkMetadata(reflectClass(C), [const C(3)]); | |
| 110 checkMetadata(reflectClass(D), [const D.named(4)]); | |
| 111 reflectClass(E).metadata; /// 01: continued | |
| 112 reflectClass(F).metadata; /// 02: continued | |
| 113 reflectClass(G).metadata; /// 03: continued | |
| 114 reflectClass(H).metadata; /// 04: continued | |
| 115 reflectClass(I).metadata; /// 05: continued | |
| 116 reflectClass(J).metadata; /// 06: continued | |
| 117 reflectClass(K).metadata; /// 07: continued | |
| 118 reflectClass(L).metadata; /// 08: continued | |
| 119 checkMetadata(reflectClass(M), [Imported]); | |
| 120 checkMetadata(reflectClass(N), [const Imported()]); | |
| 121 checkMetadata(reflectClass(O), [const Imported.named()]); | |
| 122 checkMetadata(reflectClass(P), [Imported.CONSTANT]); | |
| 123 checkMetadata(reflectClass(Q), [prefix.Imported]); | |
| 124 checkMetadata(reflectClass(R), [const prefix.Imported()]); | |
| 125 checkMetadata(reflectClass(S), [const prefix.Imported.named()]); | |
| 126 checkMetadata(reflectClass(T), [prefix.Imported.CONSTANT]); | |
| 127 reflectClass(U).metadata; /// 09: continued | |
| 128 checkMetadata(reflectClass(V), [V.tearOff]); | |
| 129 checkMetadata(reflectClass(W), [topLevelTearOff]); | |
| 130 } | |
| OLD | NEW |