// 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. import "package:expect/expect.dart"; class S {} class M1 {} class M2 {} class C = S with M1; class D = S with M1, M2; class E = S with M2, M1; class F extends E {} class C_ = S with M1; class D_ = S with M1, M2; class E_ = S with M2, M1; class F_ extends E_ {} main() { var c = new C(); Expect.isTrue(c is C); Expect.isFalse(c is D); Expect.isFalse(c is E); Expect.isFalse(c is F); Expect.isTrue(c is S); Expect.isTrue(c is M1); Expect.isFalse(c is M2); var d = new D(); Expect.isFalse(d is C); Expect.isTrue(d is D); Expect.isFalse(d is E); Expect.isFalse(d is F); Expect.isTrue(d is S); Expect.isTrue(d is M1); Expect.isTrue(d is M2); var e = new E(); Expect.isFalse(e is C); Expect.isFalse(e is D); Expect.isTrue(e is E); Expect.isFalse(e is F); Expect.isTrue(e is S); Expect.isTrue(e is M1); Expect.isTrue(e is M2); var f = new F(); Expect.isFalse(f is C); Expect.isFalse(f is D); Expect.isTrue(f is E); Expect.isTrue(f is F); Expect.isTrue(f is S); Expect.isTrue(f is M1); Expect.isTrue(f is M2); // Make sure we get a new class for each mixin // application (at least the named ones). Expect.isFalse(c is C_); Expect.isFalse(c is D_); Expect.isFalse(c is E_); Expect.isFalse(c is F_); Expect.isFalse(d is C_); Expect.isFalse(d is D_); Expect.isFalse(d is E_); Expect.isFalse(d is F_); Expect.isFalse(e is C_); Expect.isFalse(e is D_); Expect.isFalse(e is E_); Expect.isFalse(e is F_); Expect.isFalse(f is C_); Expect.isFalse(f is D_); Expect.isFalse(f is E_); Expect.isFalse(f is F_); }