| Index: tests/compiler/dart2js/mirrors_mixin_test.dart
|
| diff --git a/tests/compiler/dart2js/mirrors_mixin_test.dart b/tests/compiler/dart2js/mirrors_mixin_test.dart
|
| index 0a94a06d6cfa5a0499f25c599f74947ced627b6a..d5ab8211bafb3de6956dede50c839fc505fbd269 100644
|
| --- a/tests/compiler/dart2js/mirrors_mixin_test.dart
|
| +++ b/tests/compiler/dart2js/mirrors_mixin_test.dart
|
| @@ -1,240 +1,240 @@
|
| -// 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 mirrors_mixin_test;
|
| -
|
| -import 'package:expect/expect.dart';
|
| -import 'package:async_helper/async_helper.dart';
|
| -import 'mirror_system_helper.dart';
|
| -
|
| -const String CLASS_SOURCE = '''
|
| -class A {}
|
| -
|
| -class S {}
|
| -class M1<T> {}
|
| -class M2 {}
|
| -
|
| -class C extends S with M1<A> {}
|
| -class D extends S with M1, M2 {}
|
| -class E extends S with M2, M1 implements A, M1 {}
|
| -class E2 extends E {}
|
| -
|
| -class F = S with M1<A>;
|
| -abstract class G = S with M1, M2;
|
| -class H = S with M2, M1 implements A, M1;
|
| -class H2 extends H {}
|
| -''';
|
| -
|
| -void main() {
|
| - asyncTest(() => createMirrorSystem(CLASS_SOURCE).then((MirrorSystem mirrors) {
|
| - LibraryMirror library = mirrors.libraries[SOURCE_URI];
|
| -
|
| - checkSimpleClass(var cls) {
|
| - Expect.isNotNull(cls);
|
| - Expect.isTrue(cls is ClassMirror);
|
| - Expect.isFalse(isMixinApplication(cls));
|
| - Expect.isFalse(cls.isNameSynthetic);
|
| - Expect.isFalse(isObject(cls));
|
| - Expect.isTrue(isObject(cls.superclass));
|
| - Expect.equals(0, cls.superinterfaces.length);
|
| -
|
| - Expect.isTrue(isObject(getSuperclass(cls)));
|
| - Expect.isTrue(getAppliedMixins(cls).isEmpty);
|
| - Expect.isTrue(getExplicitInterfaces(cls).isEmpty);
|
| - }
|
| -
|
| - // class A {}
|
| - var A = library.declarations[#A];
|
| - checkSimpleClass(A);
|
| -
|
| - // class S {}
|
| - var S = library.declarations[#S];
|
| - checkSimpleClass(S);
|
| -
|
| - // class M1 {}
|
| - var M1 = library.declarations[#M1];
|
| - checkSimpleClass(M1);
|
| -
|
| - // class M2 {}
|
| - var M2 = library.declarations[#M2];
|
| - checkSimpleClass(M2);
|
| -
|
| - // class C extends S with M1<A> {}
|
| - var C = library.declarations[#C];
|
| - Expect.isNotNull(C);
|
| - Expect.isTrue(C is ClassMirror);
|
| - Expect.isFalse(isMixinApplication(C));
|
| - Expect.isFalse(isObject(C));
|
| - Expect.equals(0, C.superinterfaces.length);
|
| - var C_super = C.superclass;
|
| - Expect.isNotNull(C_super);
|
| - Expect.isTrue(C_super is ClassMirror);
|
| - Expect.isTrue(isMixinApplication(C_super));
|
| - Expect.isTrue(C_super.isNameSynthetic);
|
| - Expect.equals(1, C_super.superinterfaces.length);
|
| - Expect.isTrue(containsType(M1, [A], C_super.superinterfaces));
|
| - Expect.isTrue(isInstance(M1, [A], C_super.mixin));
|
| - Expect.isFalse(isObject(C_super));
|
| - Expect.isTrue(isSameDeclaration(S, C_super.superclass));
|
| -
|
| - Expect.isTrue(isSameDeclaration(S, getSuperclass(C)));
|
| - Expect.isTrue(isSameDeclarationList([M1], getAppliedMixins(C)));
|
| - Expect.isTrue(getExplicitInterfaces(C).isEmpty);
|
| -
|
| - // D extends S with M1, M2 {}
|
| - var D = library.declarations[#D];
|
| - Expect.isNotNull(D);
|
| - Expect.isTrue(D is ClassMirror);
|
| - Expect.isFalse(isMixinApplication(D));
|
| - Expect.isFalse(isObject(D));
|
| - Expect.equals(0, D.superinterfaces.length);
|
| - var D_super = D.superclass;
|
| - Expect.isNotNull(D_super);
|
| - Expect.isTrue(D_super is ClassMirror);
|
| - Expect.isTrue(isMixinApplication(D_super));
|
| - Expect.isTrue(D_super.isNameSynthetic);
|
| - Expect.equals(1, D_super.superinterfaces.length);
|
| - Expect.isTrue(containsDeclaration(M2, D_super.superinterfaces));
|
| - Expect.isTrue(isSameDeclaration(M2, D_super.mixin));
|
| - Expect.isFalse(isObject(D_super));
|
| - Expect.isFalse(isSameDeclaration(S, D_super.superclass));
|
| - var D_super_super = D_super.superclass;
|
| - Expect.isNotNull(D_super_super);
|
| - Expect.isTrue(D_super_super is ClassMirror);
|
| - Expect.isTrue(isMixinApplication(D_super_super));
|
| - Expect.isTrue(D_super_super.isNameSynthetic);
|
| - Expect.equals(1, D_super_super.superinterfaces.length);
|
| - Expect.isTrue(containsDeclaration(M1, D_super_super.superinterfaces));
|
| - Expect.isTrue(isSameDeclaration(M1, D_super_super.mixin));
|
| - Expect.isFalse(isObject(D_super_super));
|
| - Expect.isTrue(isSameDeclaration(S, D_super_super.superclass));
|
| -
|
| - Expect.isTrue(isSameDeclaration(S, getSuperclass(D)));
|
| - Expect.isTrue(isSameDeclarationList([M1, M2], getAppliedMixins(D)));
|
| - Expect.isTrue(getExplicitInterfaces(D).isEmpty);
|
| -
|
| - // class E extends S with M2, M1 implements A, M1 {}
|
| - var E = library.declarations[#E];
|
| - Expect.isNotNull(E);
|
| - Expect.isTrue(E is ClassMirror);
|
| - Expect.isFalse(isMixinApplication(E));
|
| - Expect.isFalse(isObject(E));
|
| - Expect.equals(2, E.superinterfaces.length);
|
| - Expect.isTrue(containsDeclaration(A, E.superinterfaces));
|
| - Expect.isTrue(containsDeclaration(M1, E.superinterfaces));
|
| - var E_super = E.superclass;
|
| - Expect.isNotNull(E_super);
|
| - Expect.isTrue(E_super is ClassMirror);
|
| - Expect.isTrue(isMixinApplication(E_super));
|
| - Expect.isTrue(E_super.isNameSynthetic);
|
| - Expect.equals(1, E_super.superinterfaces.length);
|
| - Expect.isTrue(containsDeclaration(M1, E_super.superinterfaces));
|
| - Expect.isTrue(isSameDeclaration(M1, E_super.mixin));
|
| - Expect.isFalse(isObject(E_super));
|
| - Expect.isFalse(isSameDeclaration(S, E_super.superclass));
|
| - var E_super_super = E_super.superclass;
|
| - Expect.isNotNull(E_super_super);
|
| - Expect.isTrue(E_super_super is ClassMirror);
|
| - Expect.isTrue(isMixinApplication(E_super_super));
|
| - Expect.isTrue(E_super_super.isNameSynthetic);
|
| - Expect.equals(1, E_super_super.superinterfaces.length);
|
| - Expect.isTrue(containsDeclaration(M2, E_super_super.superinterfaces));
|
| - Expect.isTrue(isSameDeclaration(M2, E_super_super.mixin));
|
| - Expect.isFalse(isObject(E_super_super));
|
| - Expect.isTrue(isSameDeclaration(S, E_super_super.superclass));
|
| -
|
| - Expect.isTrue(isSameDeclaration(S, getSuperclass(E)));
|
| - Expect.isTrue(isSameDeclarationList([M2, M1], getAppliedMixins(E)));
|
| - Expect.isTrue(isSameDeclarationSet([A, M1], getExplicitInterfaces(E)));
|
| -
|
| - // class E2 extends E {}
|
| - var E2 = library.declarations[#E2];
|
| - Expect.isTrue(isSameDeclaration(E, getSuperclass(E2)));
|
| - Expect.isTrue(getAppliedMixins(E2).isEmpty);
|
| - Expect.isTrue(getExplicitInterfaces(E2).isEmpty);
|
| -
|
| - // class F = S with M1<A>;
|
| - var F = library.declarations[#F];
|
| - Expect.isNotNull(F);
|
| - Expect.isTrue(F is ClassMirror);
|
| - Expect.isFalse(F.isAbstract);
|
| - Expect.isTrue(isMixinApplication(F));
|
| - Expect.isFalse(F.isNameSynthetic);
|
| - Expect.equals(#F, F.simpleName);
|
| - Expect.isFalse(isObject(F));
|
| - Expect.equals(1, F.superinterfaces.length);
|
| - Expect.isTrue(containsDeclaration(M1, F.superinterfaces));
|
| - Expect.isTrue(isInstance(M1, [A], F.mixin));
|
| - var F_super = F.superclass;
|
| - Expect.isNotNull(F_super);
|
| - Expect.isTrue(F_super is ClassMirror);
|
| - Expect.isFalse(isMixinApplication(F_super));
|
| - Expect.isFalse(isObject(F_super));
|
| - Expect.isTrue(isSameDeclaration(S, F_super));
|
| -
|
| - Expect.isTrue(isSameDeclaration(S, getSuperclass(F)));
|
| - Expect.isTrue(isSameDeclarationList([M1], getAppliedMixins(F)));
|
| - Expect.isTrue(getExplicitInterfaces(F).isEmpty);
|
| -
|
| - // typedef G = abstract S with M1, M2;
|
| - var G = library.declarations[#G];
|
| - Expect.isNotNull(G);
|
| - Expect.isTrue(G is ClassMirror);
|
| - Expect.isTrue(G.isAbstract);
|
| - Expect.isTrue(isMixinApplication(G));
|
| - Expect.isFalse(G.isNameSynthetic);
|
| - Expect.equals(#G, G.simpleName);
|
| - Expect.isFalse(isObject(G));
|
| - Expect.equals(1, G.superinterfaces.length);
|
| - Expect.isTrue(containsDeclaration(M2, G.superinterfaces));
|
| - Expect.isTrue(isSameDeclaration(M2, G.mixin));
|
| - var G_super = G.superclass;
|
| - Expect.isNotNull(G_super);
|
| - Expect.isTrue(G_super is ClassMirror);
|
| - Expect.isTrue(isMixinApplication(G_super));
|
| - Expect.equals(1, G_super.superinterfaces.length);
|
| - Expect.isTrue(containsDeclaration(M1, G_super.superinterfaces));
|
| - Expect.isTrue(isSameDeclaration(M1, G_super.mixin));
|
| - Expect.isFalse(isObject(G_super));
|
| - Expect.isTrue(isSameDeclaration(S, G_super.superclass));
|
| -
|
| - Expect.isTrue(isSameDeclaration(S, getSuperclass(G)));
|
| - Expect.isTrue(isSameDeclarationList([M1, M2], getAppliedMixins(G)));
|
| - Expect.isTrue(getExplicitInterfaces(G).isEmpty);
|
| -
|
| - // typedef H = S with M2, M1 implements A, M1;
|
| - var H = library.declarations[#H];
|
| - Expect.isNotNull(H);
|
| - Expect.isTrue(H is ClassMirror);
|
| - Expect.isFalse(H.isAbstract);
|
| - Expect.isTrue(isMixinApplication(H));
|
| - Expect.isFalse(H.isNameSynthetic);
|
| - Expect.equals(#H, H.simpleName);
|
| - Expect.isFalse(isObject(H));
|
| - Expect.equals(3, H.superinterfaces.length);
|
| - Expect.isTrue(containsDeclaration(A, H.superinterfaces));
|
| - Expect.isTrue(containsDeclaration(M1, H.superinterfaces));
|
| - Expect.isFalse(containsDeclaration(M2, H.superinterfaces));
|
| - Expect.isTrue(isSameDeclaration(M1, H.mixin));
|
| - var H_super = H.superclass;
|
| - Expect.isNotNull(H_super);
|
| - Expect.isTrue(H_super is ClassMirror);
|
| - Expect.isTrue(isMixinApplication(H_super));
|
| - Expect.equals(1, H_super.superinterfaces.length);
|
| - Expect.isTrue(containsDeclaration(M2, H_super.superinterfaces));
|
| - Expect.isTrue(isSameDeclaration(M2, H_super.mixin));
|
| - Expect.isFalse(isObject(H_super));
|
| - Expect.isTrue(isSameDeclaration(S, H_super.superclass));
|
| -
|
| - Expect.isTrue(isSameDeclaration(S, getSuperclass(H)));
|
| - Expect.isTrue(isSameDeclarationList([M2, M1], getAppliedMixins(H)));
|
| - Expect.isTrue(isSameDeclarationSet([A, M1], getExplicitInterfaces(H)));
|
| -
|
| - // class H2 extends H {}
|
| - var H2 = library.declarations[#H2];
|
| - Expect.isTrue(isSameDeclaration(H, getSuperclass(H2)));
|
| - Expect.isTrue(getAppliedMixins(H2).isEmpty);
|
| - Expect.isTrue(getExplicitInterfaces(H2).isEmpty);
|
| - }));
|
| +// 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 mirrors_mixin_test;
|
| +
|
| +import 'package:expect/expect.dart';
|
| +import 'package:async_helper/async_helper.dart';
|
| +import 'mirror_system_helper.dart';
|
| +
|
| +const String CLASS_SOURCE = '''
|
| +class A {}
|
| +
|
| +class S {}
|
| +class M1<T> {}
|
| +class M2 {}
|
| +
|
| +class C extends S with M1<A> {}
|
| +class D extends S with M1, M2 {}
|
| +class E extends S with M2, M1 implements A, M1 {}
|
| +class E2 extends E {}
|
| +
|
| +class F = S with M1<A>;
|
| +abstract class G = S with M1, M2;
|
| +class H = S with M2, M1 implements A, M1;
|
| +class H2 extends H {}
|
| +''';
|
| +
|
| +void main() {
|
| + asyncTest(() => createMirrorSystem(CLASS_SOURCE).then((MirrorSystem mirrors) {
|
| + LibraryMirror library = mirrors.libraries[SOURCE_URI];
|
| +
|
| + checkSimpleClass(var cls) {
|
| + Expect.isNotNull(cls);
|
| + Expect.isTrue(cls is ClassMirror);
|
| + Expect.isFalse(isMixinApplication(cls));
|
| + Expect.isFalse(cls.isNameSynthetic);
|
| + Expect.isFalse(isObject(cls));
|
| + Expect.isTrue(isObject(cls.superclass));
|
| + Expect.equals(0, cls.superinterfaces.length);
|
| +
|
| + Expect.isTrue(isObject(getSuperclass(cls)));
|
| + Expect.isTrue(getAppliedMixins(cls).isEmpty);
|
| + Expect.isTrue(getExplicitInterfaces(cls).isEmpty);
|
| + }
|
| +
|
| + // class A {}
|
| + var A = library.declarations[#A];
|
| + checkSimpleClass(A);
|
| +
|
| + // class S {}
|
| + var S = library.declarations[#S];
|
| + checkSimpleClass(S);
|
| +
|
| + // class M1 {}
|
| + var M1 = library.declarations[#M1];
|
| + checkSimpleClass(M1);
|
| +
|
| + // class M2 {}
|
| + var M2 = library.declarations[#M2];
|
| + checkSimpleClass(M2);
|
| +
|
| + // class C extends S with M1<A> {}
|
| + var C = library.declarations[#C];
|
| + Expect.isNotNull(C);
|
| + Expect.isTrue(C is ClassMirror);
|
| + Expect.isFalse(isMixinApplication(C));
|
| + Expect.isFalse(isObject(C));
|
| + Expect.equals(0, C.superinterfaces.length);
|
| + var C_super = C.superclass;
|
| + Expect.isNotNull(C_super);
|
| + Expect.isTrue(C_super is ClassMirror);
|
| + Expect.isTrue(isMixinApplication(C_super));
|
| + Expect.isTrue(C_super.isNameSynthetic);
|
| + Expect.equals(1, C_super.superinterfaces.length);
|
| + Expect.isTrue(containsType(M1, [A], C_super.superinterfaces));
|
| + Expect.isTrue(isInstance(M1, [A], C_super.mixin));
|
| + Expect.isFalse(isObject(C_super));
|
| + Expect.isTrue(isSameDeclaration(S, C_super.superclass));
|
| +
|
| + Expect.isTrue(isSameDeclaration(S, getSuperclass(C)));
|
| + Expect.isTrue(isSameDeclarationList([M1], getAppliedMixins(C)));
|
| + Expect.isTrue(getExplicitInterfaces(C).isEmpty);
|
| +
|
| + // D extends S with M1, M2 {}
|
| + var D = library.declarations[#D];
|
| + Expect.isNotNull(D);
|
| + Expect.isTrue(D is ClassMirror);
|
| + Expect.isFalse(isMixinApplication(D));
|
| + Expect.isFalse(isObject(D));
|
| + Expect.equals(0, D.superinterfaces.length);
|
| + var D_super = D.superclass;
|
| + Expect.isNotNull(D_super);
|
| + Expect.isTrue(D_super is ClassMirror);
|
| + Expect.isTrue(isMixinApplication(D_super));
|
| + Expect.isTrue(D_super.isNameSynthetic);
|
| + Expect.equals(1, D_super.superinterfaces.length);
|
| + Expect.isTrue(containsDeclaration(M2, D_super.superinterfaces));
|
| + Expect.isTrue(isSameDeclaration(M2, D_super.mixin));
|
| + Expect.isFalse(isObject(D_super));
|
| + Expect.isFalse(isSameDeclaration(S, D_super.superclass));
|
| + var D_super_super = D_super.superclass;
|
| + Expect.isNotNull(D_super_super);
|
| + Expect.isTrue(D_super_super is ClassMirror);
|
| + Expect.isTrue(isMixinApplication(D_super_super));
|
| + Expect.isTrue(D_super_super.isNameSynthetic);
|
| + Expect.equals(1, D_super_super.superinterfaces.length);
|
| + Expect.isTrue(containsDeclaration(M1, D_super_super.superinterfaces));
|
| + Expect.isTrue(isSameDeclaration(M1, D_super_super.mixin));
|
| + Expect.isFalse(isObject(D_super_super));
|
| + Expect.isTrue(isSameDeclaration(S, D_super_super.superclass));
|
| +
|
| + Expect.isTrue(isSameDeclaration(S, getSuperclass(D)));
|
| + Expect.isTrue(isSameDeclarationList([M1, M2], getAppliedMixins(D)));
|
| + Expect.isTrue(getExplicitInterfaces(D).isEmpty);
|
| +
|
| + // class E extends S with M2, M1 implements A, M1 {}
|
| + var E = library.declarations[#E];
|
| + Expect.isNotNull(E);
|
| + Expect.isTrue(E is ClassMirror);
|
| + Expect.isFalse(isMixinApplication(E));
|
| + Expect.isFalse(isObject(E));
|
| + Expect.equals(2, E.superinterfaces.length);
|
| + Expect.isTrue(containsDeclaration(A, E.superinterfaces));
|
| + Expect.isTrue(containsDeclaration(M1, E.superinterfaces));
|
| + var E_super = E.superclass;
|
| + Expect.isNotNull(E_super);
|
| + Expect.isTrue(E_super is ClassMirror);
|
| + Expect.isTrue(isMixinApplication(E_super));
|
| + Expect.isTrue(E_super.isNameSynthetic);
|
| + Expect.equals(1, E_super.superinterfaces.length);
|
| + Expect.isTrue(containsDeclaration(M1, E_super.superinterfaces));
|
| + Expect.isTrue(isSameDeclaration(M1, E_super.mixin));
|
| + Expect.isFalse(isObject(E_super));
|
| + Expect.isFalse(isSameDeclaration(S, E_super.superclass));
|
| + var E_super_super = E_super.superclass;
|
| + Expect.isNotNull(E_super_super);
|
| + Expect.isTrue(E_super_super is ClassMirror);
|
| + Expect.isTrue(isMixinApplication(E_super_super));
|
| + Expect.isTrue(E_super_super.isNameSynthetic);
|
| + Expect.equals(1, E_super_super.superinterfaces.length);
|
| + Expect.isTrue(containsDeclaration(M2, E_super_super.superinterfaces));
|
| + Expect.isTrue(isSameDeclaration(M2, E_super_super.mixin));
|
| + Expect.isFalse(isObject(E_super_super));
|
| + Expect.isTrue(isSameDeclaration(S, E_super_super.superclass));
|
| +
|
| + Expect.isTrue(isSameDeclaration(S, getSuperclass(E)));
|
| + Expect.isTrue(isSameDeclarationList([M2, M1], getAppliedMixins(E)));
|
| + Expect.isTrue(isSameDeclarationSet([A, M1], getExplicitInterfaces(E)));
|
| +
|
| + // class E2 extends E {}
|
| + var E2 = library.declarations[#E2];
|
| + Expect.isTrue(isSameDeclaration(E, getSuperclass(E2)));
|
| + Expect.isTrue(getAppliedMixins(E2).isEmpty);
|
| + Expect.isTrue(getExplicitInterfaces(E2).isEmpty);
|
| +
|
| + // class F = S with M1<A>;
|
| + var F = library.declarations[#F];
|
| + Expect.isNotNull(F);
|
| + Expect.isTrue(F is ClassMirror);
|
| + Expect.isFalse(F.isAbstract);
|
| + Expect.isTrue(isMixinApplication(F));
|
| + Expect.isFalse(F.isNameSynthetic);
|
| + Expect.equals(#F, F.simpleName);
|
| + Expect.isFalse(isObject(F));
|
| + Expect.equals(1, F.superinterfaces.length);
|
| + Expect.isTrue(containsDeclaration(M1, F.superinterfaces));
|
| + Expect.isTrue(isInstance(M1, [A], F.mixin));
|
| + var F_super = F.superclass;
|
| + Expect.isNotNull(F_super);
|
| + Expect.isTrue(F_super is ClassMirror);
|
| + Expect.isFalse(isMixinApplication(F_super));
|
| + Expect.isFalse(isObject(F_super));
|
| + Expect.isTrue(isSameDeclaration(S, F_super));
|
| +
|
| + Expect.isTrue(isSameDeclaration(S, getSuperclass(F)));
|
| + Expect.isTrue(isSameDeclarationList([M1], getAppliedMixins(F)));
|
| + Expect.isTrue(getExplicitInterfaces(F).isEmpty);
|
| +
|
| + // typedef G = abstract S with M1, M2;
|
| + var G = library.declarations[#G];
|
| + Expect.isNotNull(G);
|
| + Expect.isTrue(G is ClassMirror);
|
| + Expect.isTrue(G.isAbstract);
|
| + Expect.isTrue(isMixinApplication(G));
|
| + Expect.isFalse(G.isNameSynthetic);
|
| + Expect.equals(#G, G.simpleName);
|
| + Expect.isFalse(isObject(G));
|
| + Expect.equals(1, G.superinterfaces.length);
|
| + Expect.isTrue(containsDeclaration(M2, G.superinterfaces));
|
| + Expect.isTrue(isSameDeclaration(M2, G.mixin));
|
| + var G_super = G.superclass;
|
| + Expect.isNotNull(G_super);
|
| + Expect.isTrue(G_super is ClassMirror);
|
| + Expect.isTrue(isMixinApplication(G_super));
|
| + Expect.equals(1, G_super.superinterfaces.length);
|
| + Expect.isTrue(containsDeclaration(M1, G_super.superinterfaces));
|
| + Expect.isTrue(isSameDeclaration(M1, G_super.mixin));
|
| + Expect.isFalse(isObject(G_super));
|
| + Expect.isTrue(isSameDeclaration(S, G_super.superclass));
|
| +
|
| + Expect.isTrue(isSameDeclaration(S, getSuperclass(G)));
|
| + Expect.isTrue(isSameDeclarationList([M1, M2], getAppliedMixins(G)));
|
| + Expect.isTrue(getExplicitInterfaces(G).isEmpty);
|
| +
|
| + // typedef H = S with M2, M1 implements A, M1;
|
| + var H = library.declarations[#H];
|
| + Expect.isNotNull(H);
|
| + Expect.isTrue(H is ClassMirror);
|
| + Expect.isFalse(H.isAbstract);
|
| + Expect.isTrue(isMixinApplication(H));
|
| + Expect.isFalse(H.isNameSynthetic);
|
| + Expect.equals(#H, H.simpleName);
|
| + Expect.isFalse(isObject(H));
|
| + Expect.equals(3, H.superinterfaces.length);
|
| + Expect.isTrue(containsDeclaration(A, H.superinterfaces));
|
| + Expect.isTrue(containsDeclaration(M1, H.superinterfaces));
|
| + Expect.isFalse(containsDeclaration(M2, H.superinterfaces));
|
| + Expect.isTrue(isSameDeclaration(M1, H.mixin));
|
| + var H_super = H.superclass;
|
| + Expect.isNotNull(H_super);
|
| + Expect.isTrue(H_super is ClassMirror);
|
| + Expect.isTrue(isMixinApplication(H_super));
|
| + Expect.equals(1, H_super.superinterfaces.length);
|
| + Expect.isTrue(containsDeclaration(M2, H_super.superinterfaces));
|
| + Expect.isTrue(isSameDeclaration(M2, H_super.mixin));
|
| + Expect.isFalse(isObject(H_super));
|
| + Expect.isTrue(isSameDeclaration(S, H_super.superclass));
|
| +
|
| + Expect.isTrue(isSameDeclaration(S, getSuperclass(H)));
|
| + Expect.isTrue(isSameDeclarationList([M2, M1], getAppliedMixins(H)));
|
| + Expect.isTrue(isSameDeclarationSet([A, M1], getExplicitInterfaces(H)));
|
| +
|
| + // class H2 extends H {}
|
| + var H2 = library.declarations[#H2];
|
| + Expect.isTrue(isSameDeclaration(H, getSuperclass(H2)));
|
| + Expect.isTrue(getAppliedMixins(H2).isEmpty);
|
| + Expect.isTrue(getExplicitInterfaces(H2).isEmpty);
|
| + }));
|
| }
|
|
|