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_allowed_values; |
| 6 |
| 7 import 'dart:mirrors'; |
| 8 import 'package:expect/expect.dart'; |
| 9 |
| 10 import 'metadata_allowed_values_import.dart'; // Unprefixed. |
| 11 import 'metadata_allowed_values_import.dart' as prefix; |
| 12 |
| 13 @A /// 01: compile-time error |
| 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 /// 02: compile-time error |
| 34 class E { |
| 35 static var NOT_CONSTANT = 3; |
| 36 } |
| 37 |
| 38 @F(6) /// 03: compile-time error |
| 39 class F { |
| 40 final field; |
| 41 F(this.field); |
| 42 } |
| 43 |
| 44 @G.named(4) /// 04: compile-time error |
| 45 class G { |
| 46 final field; |
| 47 G.named(this.field); |
| 48 } |
| 49 |
| 50 @H<int>() /// 05: compile-time error |
| 51 class H<T> { |
| 52 const H(); |
| 53 } |
| 54 |
| 55 @I[0] /// 06: compile-time error |
| 56 class I {} |
| 57 |
| 58 @this.toString /// 07: compile-time error |
| 59 class J {} |
| 60 |
| 61 @super.toString /// 08: compile-time error |
| 62 class K {} |
| 63 |
| 64 @L.func() /// 09: compile-time error |
| 65 class L { |
| 66 static func() => 6; |
| 67 } |
| 68 |
| 69 @Imported /// 10: compile-time error |
| 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 /// 11: compile-time error |
| 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() /// 12: compile-time error |
| 94 class U {} |
| 95 |
| 96 @V.tearOff /// 13: compile-time error |
| 97 class V { |
| 98 static tearOff() {} |
| 99 } |
| 100 |
| 101 topLevelTearOff() => 4; |
| 102 |
| 103 @topLevelTearOff /// 14: compile-time error |
| 104 class W {} |
| 105 |
| 106 @TypeParameter /// 15: compile-time error |
| 107 class X<TypeParameter> {} |
| 108 |
| 109 @TypeParameter.member /// 16: compile-time error |
| 110 class Y<TypeParameter> {} |
| 111 |
| 112 @1 /// 17: compile-time error |
| 113 class Z {} |
| 114 |
| 115 @3.14 /// 18: compile-time error |
| 116 class AA {} |
| 117 |
| 118 @'string' /// 19: compile-time error |
| 119 class BB {} |
| 120 |
| 121 @#symbol /// 20: compile-time error |
| 122 class CC {} |
| 123 |
| 124 @['element'] /// 21: compile-time error |
| 125 class DD {} |
| 126 |
| 127 @{'key': 'value'} /// 22: compile-time error |
| 128 class EE {} |
| 129 |
| 130 @true /// 23: compile-time error |
| 131 class FF {} |
| 132 |
| 133 @false /// 24: compile-time error |
| 134 class GG {} |
| 135 |
| 136 @null /// 25: compile-time error |
| 137 class HH {} |
| 138 |
| 139 const a = const [1, 2, 3]; |
| 140 @a |
| 141 class II {} |
| 142 |
| 143 @a[0] /// 26: compile-time error |
| 144 class JJ {} |
| 145 |
| 146 @kk /// 27: compile-time error |
| 147 class KK { |
| 148 const KK(); |
| 149 } |
| 150 get kk => const KK(); |
| 151 |
| 152 @LL(() => 42) /// 28: compile-time error |
| 153 class LL { |
| 154 final field; |
| 155 const LL(this.field); |
| 156 } |
| 157 |
| 158 @MM((x) => 42) /// 29: compile-time error |
| 159 class MM { |
| 160 final field; |
| 161 const MM(this.field); |
| 162 } |
| 163 |
| 164 @NN(() {}) /// 30: compile-time error |
| 165 class NN { |
| 166 final field; |
| 167 const NN(this.field); |
| 168 } |
| 169 |
| 170 @OO(() { () {} }) /// 31: compile-time error |
| 171 class OO { |
| 172 final field; |
| 173 const OO(this.field); |
| 174 } |
| 175 |
| 176 checkMetadata(DeclarationMirror mirror, List expectedMetadata) { |
| 177 Expect.listEquals(expectedMetadata.map(reflect).toList(), mirror.metadata); |
| 178 } |
| 179 |
| 180 main() { |
| 181 reflectClass(A).metadata; |
| 182 checkMetadata(reflectClass(B), [B.CONSTANT]); |
| 183 checkMetadata(reflectClass(C), [const C(3)]); |
| 184 checkMetadata(reflectClass(D), [const D.named(4)]); |
| 185 reflectClass(E).metadata; |
| 186 reflectClass(F).metadata; |
| 187 reflectClass(G).metadata; |
| 188 reflectClass(H).metadata; |
| 189 reflectClass(I).metadata; |
| 190 reflectClass(J).metadata; |
| 191 reflectClass(K).metadata; |
| 192 reflectClass(L).metadata; |
| 193 reflectClass(M).metadata; |
| 194 checkMetadata(reflectClass(N), [const Imported()]); |
| 195 checkMetadata(reflectClass(O), [const Imported.named()]); |
| 196 checkMetadata(reflectClass(P), [Imported.CONSTANT]); |
| 197 reflectClass(Q).metadata; |
| 198 checkMetadata(reflectClass(R), [const prefix.Imported()]); |
| 199 checkMetadata(reflectClass(S), [const prefix.Imported.named()]); |
| 200 checkMetadata(reflectClass(T), [prefix.Imported.CONSTANT]); |
| 201 reflectClass(U).metadata; |
| 202 reflectClass(V).metadata; |
| 203 reflectClass(W).metadata; |
| 204 reflectClass(X).metadata; |
| 205 reflectClass(Y).metadata; |
| 206 reflectClass(Z).metadata; |
| 207 reflectClass(AA).metadata; |
| 208 reflectClass(BB).metadata; |
| 209 reflectClass(CC).metadata; |
| 210 reflectClass(DD).metadata; |
| 211 reflectClass(EE).metadata; |
| 212 reflectClass(FF).metadata; |
| 213 reflectClass(GG).metadata; |
| 214 reflectClass(HH).metadata; |
| 215 reflectClass(II).metadata; |
| 216 reflectClass(JJ).metadata; |
| 217 reflectClass(KK).metadata; |
| 218 reflectClass(LL).metadata; |
| 219 reflectClass(MM).metadata; |
| 220 reflectClass(NN).metadata; |
| 221 reflectClass(OO).metadata; |
| 222 } |
OLD | NEW |