blob: 97ac84a364d6031e5a16796758d3aa69b8c4a30b [file] [log] [blame]
// Copyright (c) 2021, 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.
// @dart = 2.9
/// @assertion
/// metadata:
/// (‘@’ qualified (‘.’ identifier)? (arguments)?)*
/// ;
/// @description Check that the bound type is used for annotation with the
/// default type argument
/// @author sgrekhov@unipro.ru
import 'dart:mirrors';
import 'syntax_lib1.dart';
import '../../Utils/expect.dart';
@B()
class Test1 {}
@Y()
class Test2 {}
@Z(3.14)
class Test3 {}
main() {
Test1 test1 = new Test1();
InstanceMirror im1 = reflect(test1);
ClassMirror classMirror = im1.type;
Expect.equals(1, classMirror.metadata.length);
Expect.isTrue(classMirror.metadata[0].reflectee is B<dynamic>);
Test2 test2 = new Test2();
InstanceMirror im2 = reflect(test2);
ClassMirror classMirror2 = im2.type;
Expect.equals(1, classMirror2.metadata.length);
Expect.isTrue(classMirror2.metadata[0].reflectee is Y<num>);
Expect.isFalse(classMirror2.metadata[0].reflectee is Y<int>);
Expect.isFalse(classMirror2.metadata[0].reflectee is Y<double>);
Test3 test3 = new Test3();
InstanceMirror im3 = reflect(test3);
ClassMirror classMirror3 = im3.type;
Expect.equals(1, classMirror3.metadata.length);
Expect.isTrue(classMirror3.metadata[0].reflectee is Z<num>);
Expect.isFalse(classMirror3.metadata[0].reflectee is Z<int>);
Expect.isTrue(classMirror3.metadata[0].reflectee is Z<double>);
}