mirror of
https://github.com/dart-lang/sdk
synced 2024-09-16 04:16:51 +00:00
71fc33e427
Change-Id: Iff050e6a2a1c0c2b8baca211a523f9dd77cfbd4a TEST=Existing tests for the feature. Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/193748 Reviewed-by: Leaf Petersen <leafp@google.com> Reviewed-by: Nate Bosch <nbosch@google.com> Commit-Queue: Leaf Petersen <leafp@google.com>
219 lines
4.3 KiB
Dart
219 lines
4.3 KiB
Dart
// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
|
|
// for details. All rights reserved. Use of this source code is governed by a
|
|
// BSD-style license that can be found in the LICENSE file.
|
|
|
|
library test.metadata_allowed_values;
|
|
|
|
import 'dart:mirrors';
|
|
import 'package:expect/expect.dart';
|
|
|
|
import 'metadata_allowed_values_import.dart'; // Unprefixed.
|
|
import 'metadata_allowed_values_import.dart' as prefix;
|
|
|
|
@A // //# 01: compile-time error
|
|
class A {}
|
|
|
|
@B.CONSTANT
|
|
class B {
|
|
static const CONSTANT = 3;
|
|
}
|
|
|
|
@C(3)
|
|
class C {
|
|
final field;
|
|
const C(this.field);
|
|
}
|
|
|
|
@D.named(4)
|
|
class D {
|
|
final field;
|
|
const D.named(this.field);
|
|
}
|
|
|
|
@E.NOT_CONSTANT // //# 02: compile-time error
|
|
class E {
|
|
static var NOT_CONSTANT = 3;
|
|
}
|
|
|
|
@F(6) // //# 03: compile-time error
|
|
class F {
|
|
final field;
|
|
F(this.field);
|
|
}
|
|
|
|
@G.named(4) // //# 04: compile-time error
|
|
class G {
|
|
final field;
|
|
G.named(this.field);
|
|
}
|
|
|
|
@I[0] // //# 06: compile-time error
|
|
class I {}
|
|
|
|
@this.toString // //# 07: compile-time error
|
|
class J {}
|
|
|
|
@super.toString // //# 08: compile-time error
|
|
class K {}
|
|
|
|
@L.func() // //# 09: compile-time error
|
|
class L {
|
|
static func() => 6;
|
|
}
|
|
|
|
@Imported // //# 10: compile-time error
|
|
class M {}
|
|
|
|
@Imported()
|
|
class N {}
|
|
|
|
@Imported.named()
|
|
class O {}
|
|
|
|
@Imported.CONSTANT
|
|
class P {}
|
|
|
|
@prefix.Imported // //# 11: compile-time error
|
|
class Q {}
|
|
|
|
@prefix.Imported()
|
|
class R {}
|
|
|
|
@prefix.Imported.named()
|
|
class S {}
|
|
|
|
@prefix.Imported.CONSTANT
|
|
class T {}
|
|
|
|
@U..toString() // //# 12: compile-time error
|
|
class U {}
|
|
|
|
@V.tearOff // //# 13: compile-time error
|
|
class V {
|
|
static tearOff() {}
|
|
}
|
|
|
|
topLevelTearOff() => 4;
|
|
|
|
@topLevelTearOff // //# 14: compile-time error
|
|
class W {}
|
|
|
|
@TypeParameter // //# 15: compile-time error
|
|
class X<TypeParameter> {}
|
|
|
|
@TypeParameter.member // //# 16: compile-time error
|
|
class Y<TypeParameter> {}
|
|
|
|
@1 // //# 17: compile-time error
|
|
class Z {}
|
|
|
|
@3.14 // //# 18: compile-time error
|
|
class AA {}
|
|
|
|
@'string' // //# 19: compile-time error
|
|
class BB {}
|
|
|
|
@#symbol // //# 20: compile-time error
|
|
class CC {}
|
|
|
|
@['element'] // //# 21: compile-time error
|
|
class DD {}
|
|
|
|
@{'key': 'value'} // //# 22: compile-time error
|
|
class EE {}
|
|
|
|
@true // //# 23: compile-time error
|
|
class FF {}
|
|
|
|
@false // //# 24: compile-time error
|
|
class GG {}
|
|
|
|
@null // //# 25: compile-time error
|
|
class HH {}
|
|
|
|
const a = const [1, 2, 3];
|
|
|
|
@a
|
|
class II {}
|
|
|
|
@a[0] // //# 26: compile-time error
|
|
class JJ {}
|
|
|
|
@kk // //# 27: compile-time error
|
|
class KK {
|
|
const KK();
|
|
}
|
|
|
|
get kk => const KK();
|
|
|
|
@LL(() => 42) // //# 28: compile-time error
|
|
class LL {
|
|
final field;
|
|
const LL(this.field);
|
|
}
|
|
|
|
@MM((x) => 42) // //# 29: compile-time error
|
|
class MM {
|
|
final field;
|
|
const MM(this.field);
|
|
}
|
|
|
|
@NN(() {}) // //# 30: compile-time error
|
|
class NN {
|
|
final field;
|
|
const NN(this.field);
|
|
}
|
|
|
|
@OO(() { () {} }) // //# 31: compile-time error
|
|
class OO {
|
|
final field;
|
|
const OO(this.field);
|
|
}
|
|
|
|
checkMetadata(DeclarationMirror mirror, List expectedMetadata) {
|
|
Expect.listEquals(expectedMetadata.map(reflect).toList(), mirror.metadata);
|
|
}
|
|
|
|
main() {
|
|
reflectClass(A).metadata;
|
|
checkMetadata(reflectClass(B), [B.CONSTANT]);
|
|
checkMetadata(reflectClass(C), [const C(3)]);
|
|
checkMetadata(reflectClass(D), [const D.named(4)]);
|
|
reflectClass(E).metadata;
|
|
reflectClass(F).metadata;
|
|
reflectClass(G).metadata;
|
|
reflectClass(I).metadata;
|
|
reflectClass(J).metadata;
|
|
reflectClass(K).metadata;
|
|
reflectClass(L).metadata;
|
|
reflectClass(M).metadata;
|
|
checkMetadata(reflectClass(N), [const Imported()]);
|
|
checkMetadata(reflectClass(O), [const Imported.named()]);
|
|
checkMetadata(reflectClass(P), [Imported.CONSTANT]);
|
|
reflectClass(Q).metadata;
|
|
checkMetadata(reflectClass(R), [const prefix.Imported()]);
|
|
checkMetadata(reflectClass(S), [const prefix.Imported.named()]);
|
|
checkMetadata(reflectClass(T), [prefix.Imported.CONSTANT]);
|
|
reflectClass(U).metadata;
|
|
reflectClass(V).metadata;
|
|
reflectClass(W).metadata;
|
|
reflectClass(X).metadata;
|
|
reflectClass(Y).metadata;
|
|
reflectClass(Z).metadata;
|
|
reflectClass(AA).metadata;
|
|
reflectClass(BB).metadata;
|
|
reflectClass(CC).metadata;
|
|
reflectClass(DD).metadata;
|
|
reflectClass(EE).metadata;
|
|
reflectClass(FF).metadata;
|
|
reflectClass(GG).metadata;
|
|
reflectClass(HH).metadata;
|
|
reflectClass(II).metadata;
|
|
reflectClass(JJ).metadata;
|
|
reflectClass(KK).metadata;
|
|
reflectClass(LL).metadata;
|
|
reflectClass(MM).metadata;
|
|
reflectClass(NN).metadata;
|
|
reflectClass(OO).metadata;
|
|
}
|