blob: 47650a3afe22e7f066af93f6be1687ddbc2e0ec1 [file] [log] [blame]
// Copyright (c) 2021, 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.
class Bound {}
class BoundedGenericClass<A extends Bound?, B extends Bound> {}
A boundedGenericA<A extends Bound?>() => throw '';
B boundedGenericB<B extends Bound>() => throw '';
class GenericClass<X extends Bound?, Y extends Bound> {
method() {
new BoundedGenericClass/*<Bound?,Bound>*/();
BoundedGenericClass<X, Y> class1a = new BoundedGenericClass/*<Never,Y>*/();
BoundedGenericClass<Y, Y> class1b = new BoundedGenericClass/*<Y,Y>*/();
BoundedGenericClass<Bound?, Bound> class1c =
new BoundedGenericClass/*<Bound?,Bound>*/();
BoundedGenericClass<Bound, Bound> class1d =
new BoundedGenericClass/*<Bound,Bound>*/();
boundedGenericA/*<Bound?>*/();
X x1 = boundedGenericA/*<Never>*/();
Y y1 = boundedGenericA/*<Y>*/();
Bound b1 = boundedGenericA/*<Bound>*/();
Bound? b2 = boundedGenericA/*<Bound?>*/();
boundedGenericB/*<Bound>*/();
Y y2 = boundedGenericB/*<Y>*/();
Bound b3 = boundedGenericB/*<Bound>*/();
}
}
genericMethod<X extends Bound?, Y extends Bound>() {
new BoundedGenericClass/*<Bound?,Bound>*/();
BoundedGenericClass<X, Y> class1a = new BoundedGenericClass/*<Never,Y>*/();
BoundedGenericClass<Y, Y> class1b = new BoundedGenericClass/*<Y,Y>*/();
BoundedGenericClass<Bound?, Bound> class1c =
new BoundedGenericClass/*<Bound?,Bound>*/();
BoundedGenericClass<Bound, Bound> class1d =
new BoundedGenericClass/*<Bound,Bound>*/();
boundedGenericA/*<Bound?>*/();
X x1 = boundedGenericA/*<Never>*/();
Y y1 = boundedGenericA/*<Y>*/();
Bound b1 = boundedGenericA/*<Bound>*/();
Bound? b2 = boundedGenericA/*<Bound?>*/();
boundedGenericB/*<Bound>*/();
Y y2 = boundedGenericB/*<Y>*/();
Bound b3 = boundedGenericB/*<Bound>*/();
}