| Index: test/codegen/lib/mirrors/generic_f_bounded_mixin_application_test.dart
|
| diff --git a/test/codegen/lib/mirrors/generic_f_bounded_mixin_application_test.dart b/test/codegen/lib/mirrors/generic_f_bounded_mixin_application_test.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..334913d0954723338298a804219b9888760c3e06
|
| --- /dev/null
|
| +++ b/test/codegen/lib/mirrors/generic_f_bounded_mixin_application_test.dart
|
| @@ -0,0 +1,115 @@
|
| +// 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.generic_f_bounded;
|
| +
|
| +import 'dart:mirrors';
|
| +
|
| +import 'package:expect/expect.dart';
|
| +
|
| +import 'generics_helper.dart';
|
| +
|
| +class Collection<C> {}
|
| +class Serializable<S> {}
|
| +
|
| +class OrderedCollection<V>
|
| + extends Collection<V>
|
| + with Serializable<OrderedCollection<V>> {}
|
| +
|
| +class AbstractOrderedCollection<W>
|
| + = Collection<W>
|
| + with Serializable<AbstractOrderedCollection<W>>;
|
| +
|
| +class CustomOrderedCollection<Z>
|
| + extends AbstractOrderedCollection<Z> {}
|
| +
|
| +class OrderedIntegerCollection
|
| + extends OrderedCollection<int> {}
|
| +
|
| +class CustomOrderedIntegerCollection
|
| + extends CustomOrderedCollection<int> {}
|
| +
|
| +class Serializer<R extends Serializable<R>> {}
|
| +class CollectionSerializer extends Serializer<Collection> {}
|
| +class OrderedCollectionSerializer extends Serializer<OrderedCollection> {}
|
| +
|
| +main() {
|
| + ClassMirror collectionDecl = reflectClass(Collection);
|
| + ClassMirror serializableDecl = reflectClass(Serializable);
|
| + ClassMirror orderedCollectionDecl = reflectClass(OrderedCollection);
|
| + ClassMirror abstractOrderedCollectionDecl = reflectClass(AbstractOrderedCollection);
|
| + ClassMirror customOrderedCollectionDecl = reflectClass(CustomOrderedCollection);
|
| + ClassMirror orderedIntegerCollection = reflectClass(OrderedIntegerCollection);
|
| + ClassMirror customOrderedIntegerCollection = reflectClass(CustomOrderedIntegerCollection);
|
| + ClassMirror serializerDecl = reflectClass(Serializer);
|
| + ClassMirror collectionSerializerDecl = reflectClass(CollectionSerializer);
|
| + ClassMirror orderedCollectionSerializerDecl = reflectClass(OrderedCollectionSerializer);
|
| +
|
| + ClassMirror orderedCollectionOfInt = orderedIntegerCollection.superclass;
|
| + ClassMirror customOrderedCollectionOfInt = customOrderedIntegerCollection.superclass;
|
| + ClassMirror serializerOfCollection = collectionSerializerDecl.superclass;
|
| + ClassMirror serializerOfOrderedCollection = orderedCollectionSerializerDecl.superclass;
|
| + ClassMirror collectionOfDynamic = reflect(new Collection()).type;
|
| + ClassMirror orderedCollectionOfDynamic = reflect(new OrderedCollection()).type;
|
| + ClassMirror collectionWithSerializableOfOrderedCollection = orderedCollectionDecl.superclass;
|
| +
|
| + Expect.isTrue(collectionDecl.isOriginalDeclaration);
|
| + Expect.isTrue(serializableDecl.isOriginalDeclaration);
|
| + Expect.isTrue(orderedCollectionDecl.isOriginalDeclaration);
|
| + Expect.isTrue(abstractOrderedCollectionDecl.isOriginalDeclaration);
|
| + Expect.isTrue(customOrderedCollectionDecl.isOriginalDeclaration);
|
| + Expect.isTrue(orderedIntegerCollection.isOriginalDeclaration);
|
| + Expect.isTrue(customOrderedIntegerCollection.isOriginalDeclaration);
|
| + Expect.isTrue(serializerDecl.isOriginalDeclaration);
|
| + Expect.isTrue(collectionSerializerDecl.isOriginalDeclaration);
|
| + Expect.isTrue(orderedCollectionSerializerDecl.isOriginalDeclaration);
|
| +
|
| + Expect.isFalse(orderedCollectionOfInt.isOriginalDeclaration);
|
| + Expect.isFalse(customOrderedCollectionOfInt.isOriginalDeclaration);
|
| + Expect.isFalse(serializerOfCollection.isOriginalDeclaration);
|
| + Expect.isFalse(serializerOfOrderedCollection.isOriginalDeclaration);
|
| + Expect.isFalse(collectionOfDynamic.isOriginalDeclaration);
|
| + Expect.isFalse(collectionWithSerializableOfOrderedCollection.isOriginalDeclaration);
|
| +
|
| + TypeVariableMirror rFromSerializer = serializerDecl.typeVariables.single;
|
| + ClassMirror serializableOfR = rFromSerializer.upperBound;
|
| + Expect.isFalse(serializableOfR.isOriginalDeclaration);
|
| + Expect.equals(serializableDecl, serializableOfR.originalDeclaration);
|
| + Expect.equals(rFromSerializer, serializableOfR.typeArguments.single);
|
| +
|
| + typeParameters(collectionDecl, [#C]);
|
| + typeParameters(serializableDecl, [#S]);
|
| + typeParameters(orderedCollectionDecl, [#V]);
|
| + typeParameters(abstractOrderedCollectionDecl, [#W]);
|
| + typeParameters(customOrderedCollectionDecl, [#Z]);
|
| + typeParameters(orderedIntegerCollection, []);
|
| + typeParameters(customOrderedIntegerCollection, []);
|
| + typeParameters(serializerDecl, [#R]);
|
| + typeParameters(collectionSerializerDecl, []);
|
| + typeParameters(orderedCollectionSerializerDecl, []);
|
| +
|
| + typeParameters(orderedCollectionOfInt, [#V]);
|
| + typeParameters(customOrderedCollectionOfInt, [#Z]);
|
| + typeParameters(serializerOfCollection, [#R]);
|
| + typeParameters(serializerOfOrderedCollection, [#R]);
|
| + typeParameters(collectionOfDynamic, [#C]);
|
| + typeParameters(collectionWithSerializableOfOrderedCollection, []);
|
| +
|
| + typeArguments(collectionDecl, []);
|
| + typeArguments(serializableDecl, []);
|
| + typeArguments(orderedCollectionDecl, []);
|
| + typeArguments(abstractOrderedCollectionDecl, []);
|
| + typeArguments(customOrderedCollectionDecl, []);
|
| + typeArguments(orderedIntegerCollection, []);
|
| + typeArguments(customOrderedIntegerCollection, []);
|
| + typeArguments(serializerDecl, []);
|
| + typeArguments(collectionSerializerDecl, []);
|
| + typeArguments(orderedCollectionSerializerDecl, []);
|
| +
|
| + typeArguments(orderedCollectionOfInt, [reflectClass(int)]);
|
| + typeArguments(customOrderedCollectionOfInt, [reflectClass(int)]);
|
| + typeArguments(serializerOfCollection, [collectionOfDynamic]);
|
| + typeArguments(serializerOfOrderedCollection, [orderedCollectionOfDynamic]);
|
| + typeArguments(collectionWithSerializableOfOrderedCollection, []);
|
| +}
|
|
|