blob: 419c25fdafb91bdcb2d3e1242ea7757c455c8364 [file] [log] [blame]
// Copyright (c) 2018, 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
// This test checks that all three steps of the instantiate-to-bound algorithm
// implementation, that is, substitution of variables in strongly connected
// components, substitution of dependencies in the acyclic remainder of the type
// variables graph, and using simply typed bounds, work together well on the
// same declaration.
class B<X, Y> {}
class C<X, Y> {}
class D<X extends B<X, Y>, Y extends C<X, Y>, Z extends X Function(Y),
W extends num> {}
main() {
D d;
}