blob: c7103def614cc5b69533b259509b4ad983d55dda [file] [log] [blame]
// 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
}