| OLD | NEW | 
|---|
| (Empty) |  | 
|  | 1 // Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file | 
|  | 2 // for details. All rights reserved. Use of this source code is governed by a | 
|  | 3 // BSD-style license that can be found in the LICENSE file. | 
|  | 4 | 
|  | 5 class S0<T> { } | 
|  | 6 | 
|  | 7 class S<T extends num> extends S0<String> { } | 
|  | 8 | 
|  | 9 class M<T extends num> { } | 
|  | 10 | 
|  | 11 class A<T extends num> extends S with M { } | 
|  | 12 | 
|  | 13 // A StaticWarning is reported here and in C, D, and E below, because T is not | 
|  | 14 // bounded. The purpose of this test is to verify bound checking in S, M, and A, | 
|  | 15 // the reason no bound is declared for T here. | 
|  | 16 class B<T> extends S<T> with M<int> { } | 
|  | 17 | 
|  | 18 class C<T> extends S<int> with M<T> { } | 
|  | 19 | 
|  | 20 class D<T> extends S<T> with M<bool> { } | 
|  | 21 | 
|  | 22 class E<T> extends S<bool> with M<T> { } | 
|  | 23 | 
|  | 24 main() { | 
|  | 25   new A<int>();  /// 01: static type warning | 
|  | 26   new A<bool>();  /// 02: static type warning, dynamic type error | 
|  | 27   new B<int>();  /// 03: static type warning | 
|  | 28   new B<bool>();  /// 04: static type warning, dynamic type error | 
|  | 29   new C<int>();  /// 05: static type warning | 
|  | 30   new C<bool>();  /// 06: static type warning, dynamic type error | 
|  | 31   new D<int>();  /// 07: static type warning, dynamic type error | 
|  | 32   new D<bool>();  /// 08: static type warning, dynamic type error | 
|  | 33   new E<int>();  /// 09: static type warning, dynamic type error | 
|  | 34   new E<bool>();  /// 10: static type warning, dynamic type error | 
|  | 35 } | 
| OLD | NEW | 
|---|