// Copyright (c) 2012, 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. import "package:expect/expect.dart"; class A { shift() => new A(); swap() => new A(); first() => new A(); last() => new A(); wrap() => new A, A, A>(); } class B extends A {} class C extends A {} class D extends A {} class U {} class V {} class W {} sameType(a, b) => Expect.equals(a.runtimeType, b.runtimeType); main() { A a = new A(); sameType(new A(), a.shift()); sameType(new A(), a.swap()); sameType(new A(), a.first()); sameType(new A(), a.last()); sameType(new A, A, A>(), a.wrap()); B b = new B(); sameType(new A, A, A>(), b.wrap()); C c = new C(); sameType(new A, A, A>(), c.wrap()); D d = new D(); sameType(new A, A, A>(), d.wrap()); }