| // Copyright (c) 2014, 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 | 
 |  | 
 | class S0<T> {} | 
 |  | 
 | class S<T extends num> extends S0<String> {} | 
 |  | 
 | class M<T extends num> {} | 
 |  | 
 | class A<T extends num> extends S with M {} | 
 |  | 
 | // A CompileTimeError is reported here and in C, D, and E below, because T is | 
 | // not bounded. The purpose of this test is to verify bound checking in S, M, | 
 | // and A, the reason no bound is declared for T here. | 
 | class B<T> extends S<T> with M<int> {} //# 03: continued | 
 | class B<T> extends S<T> with M<int> {} //# 04: continued | 
 |  | 
 | class C<T> extends S<int> with M<T> {} //# 05: continued | 
 | class C<T> extends S<int> with M<T> {} //# 06: continued | 
 |  | 
 | class D<T> extends S<T> with M<bool> {} //# 07: continued | 
 | class D<T> extends S<T> with M<bool> {} //# 08: continued | 
 |  | 
 | class E<T> extends S<bool> with M<T> {} //# 09: continued | 
 | class E<T> extends S<bool> with M<T> {} //# 10: continued | 
 |  | 
 | main() { | 
 |   new A<int>(); //  //# 01: ok | 
 |   new A<bool>(); // //# 02: compile-time error | 
 |   new B<int>(); //  //# 03: compile-time error | 
 |   new B<bool>(); // //# 04: compile-time error | 
 |   new C<int>(); //  //# 05: compile-time error | 
 |   new C<bool>(); // //# 06: compile-time error | 
 |   new D<int>(); //  //# 07: compile-time error | 
 |   new D<bool>(); // //# 08: compile-time error | 
 |   new E<int>(); //  //# 09: compile-time error | 
 |   new E<bool>(); // //# 10: compile-time error | 
 | } |