blob: 41f83dd614fa50b5ff6555da9fdeb147cf58e5f0 [file] [log] [blame]
// Copyright (c) 2020, 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.
import 'dart:async';
import '../static_type_helper.dart';
class C1<X> {}
class C2 extends C1<C2> {}
var condition = true;
void main() {
void f0<X1 extends int>(X1 x1, String t2) {
// UP(X1 extends int /*B1*/, String /*T2*/) =
// T2 if X1 <: T2
// otherwise X1 if T2 <: X1
// otherwise UP(B1a, T2)
// where B1a is the greatest closure of B1 with respect to X1
var z1 = condition ? x1 : ((throw 0) as int);
z1.expectStaticType<Exactly<int>>();
var z2 = condition ? x1 : throw 0;
z2.expectStaticType<Exactly<X1>>();
var z3 = condition ? x1 : t2;
z3.expectStaticType<Exactly<Object>>();
// UP(String /*T2*/, X1 extends int /*B1*/) =
// X1 if T2 <: X1
// otherwise T2 if X1 <: T2
// otherwise UP(T2, B1a)
// where B1a is the greatest closure of B1 with respect to X1
var z4 = condition ? ((throw 0) as int) : x1;
z4.expectStaticType<Exactly<int>>();
var z5 = condition ? throw 0 : x1;
z5.expectStaticType<Exactly<X1>>();
var z6 = condition ? t2 : x1;
z6.expectStaticType<Exactly<Object>>();
}
void g0<X1>(X1 x1, String t2) {
if (x1 is int) {
// UP(X1 & int /*B1*/, String /*T2*/) =
// T2 if X1 <: T2
// otherwise X1 if T2 <: X1
// otherwise UP(B1a, T2)
// where B1a is the greatest closure of B1 with respect to X1
var z1 = condition ? x1 : (null as Object?);
z1.expectStaticType<Exactly<Object?>>();
var z2 = condition ? x1 : throw 0;
z2.expectStaticType<Exactly<X1>>();
var z3 = condition ? x1 : t2;
z3.expectStaticType<Exactly<Object>>();
// UP(String /*T2*/, X1 & int /*B1*/) =
// X1 if T2 <: X1
// otherwise T2 if X1 <: T2
// otherwise UP(T2, B1a)
// where B1a is the greatest closure of B1 with respect to X1
var z4 = condition ? null as Object? : x1;
z4.expectStaticType<Exactly<Object?>>();
var z5 = condition ? throw 0 : x1;
z5.expectStaticType<Exactly<X1>>();
var z6 = condition ? t2 : x1;
z6.expectStaticType<Exactly<Object>>();
}
}
void f1<X1 extends C1<X1>>(X1 x1, C1<C2> t2) {
// UP(X1 extends C1<X1> /*B1*/, C1<C2> /*T2*/) =
// T2 if X1 <: T2
// otherwise X1 if T2 <: X1
// otherwise UP(B1a, T2)
// where B1a is the greatest closure of B1 with respect to X1
var z1 = condition ? x1 : ((throw 0) as C1<X1>);
z1.expectStaticType<Exactly<C1<X1>>>();
var z2 = condition ? x1 : throw 0;
z2.expectStaticType<Exactly<X1>>();
var z3 = condition ? x1 : t2;
z3.expectStaticType<Exactly<C1<Object?>>>();
// UP(C1<C2> /*T2*/, X1 extends C1<X1> /*B1*/) =
// X1 if T2 <: X1
// otherwise T2 if X1 <: T2
// otherwise UP(T2, B1a)
// where B1a is the greatest closure of B1 with respect to X1
var z4 = condition ? ((throw 0) as C1<X1>) : x1;
z4.expectStaticType<Exactly<C1<X1>>>();
var z5 = condition ? throw 0 : x1;
z5.expectStaticType<Exactly<X1>>();
var z6 = condition ? t2 : x1;
z6.expectStaticType<Exactly<C1<Object?>>>();
}
void g1<X1>(X1 x1, C1<C2> t2) {
if (x1 is C1<X1>) {
// UP(X1 & C1<X1> /*B1*/, C1<C2> /*T2*/) =
// T2 if X1 <: T2
// otherwise X1 if T2 <: X1
// otherwise UP(B1a, T2)
// where B1a is the greatest closure of B1 with respect to X1
var z1 = condition ? x1 : (null as Object?);
z1.expectStaticType<Exactly<Object?>>();
var z2 = condition ? x1 : throw 0;
z2.expectStaticType<Exactly<X1>>();
var z3 = condition ? x1 : t2;
z3.expectStaticType<Exactly<C1<Object?>>>();
// UP(C1<C2> /*T2*/, X1 & C1<X1> /*B1*/) =
// X1 if T2 <: X1
// otherwise T2 if X1 <: T2
// otherwise UP(T2, B1a)
// where B1a is the greatest closure of B1 with respect to X1
var z4 = condition ? null as Object? : x1;
z4.expectStaticType<Exactly<Object?>>();
var z5 = condition ? throw 0 : x1;
z5.expectStaticType<Exactly<X1>>();
var z6 = condition ? t2 : x1;
z6.expectStaticType<Exactly<C1<Object?>>>();
}
}
void f2<X1 extends C1<X1>>(X1 x1, C1<C2>? t2) {
// UP(X1 extends C1<X1> /*B1*/, C1<C2>? /*T2*/) =
// T2 if X1 <: T2
// otherwise X1 if T2 <: X1
// otherwise UP(B1a, T2)
// where B1a is the greatest closure of B1 with respect to X1
var z1 = condition ? x1 : ((throw 0) as C1<X1>);
z1.expectStaticType<Exactly<C1<X1>>>();
var z2 = condition ? x1 : throw 0;
z2.expectStaticType<Exactly<X1>>();
var z3 = condition ? x1 : t2;
z3.expectStaticType<Exactly<C1<Object?>?>>();
// UP(C1<C2>? /*T2*/, X1 extends C1<X1> /*B1*/) =
// X1 if T2 <: X1
// otherwise T2 if X1 <: T2
// otherwise UP(T2, B1a)
// where B1a is the greatest closure of B1 with respect to X1
var z4 = condition ? ((throw 0) as C1<X1>) : x1;
z4.expectStaticType<Exactly<C1<X1>>>();
var z5 = condition ? throw 0 : x1;
z5.expectStaticType<Exactly<X1>>();
var z6 = condition ? t2 : x1;
z6.expectStaticType<Exactly<C1<Object?>?>>();
}
void g2<X1>(X1 x1, C1<C2>? t2) {
if (x1 is C1<X1>) {
// UP(X1 & C1<X1> /*B1*/, C1<C2>? /*T2*/) =
// T2 if X1 <: T2
// otherwise X1 if T2 <: X1
// otherwise UP(B1a, T2)
// where B1a is the greatest closure of B1 with respect to X1
var z1 = condition ? x1 : (null as Object?);
z1.expectStaticType<Exactly<Object?>>();
var z2 = condition ? x1 : throw 0;
z2.expectStaticType<Exactly<X1>>();
var z3 = condition ? x1 : t2;
z3.expectStaticType<Exactly<C1<Object?>?>>();
// UP(C1<C2>? /*T2*/, X1 & C1<X1> /*B1*/) =
// X1 if T2 <: X1
// otherwise T2 if X1 <: T2
// otherwise UP(T2, B1a)
// where B1a is the greatest closure of B1 with respect to X1
var z4 = condition ? null as Object? : x1;
z4.expectStaticType<Exactly<Object?>>();
var z5 = condition ? throw 0 : x1;
z5.expectStaticType<Exactly<X1>>();
var z6 = condition ? t2 : x1;
z6.expectStaticType<Exactly<C1<Object?>?>>();
}
}
void f3<X1 extends C1<X1>?>(X1 x1, C1<C2> t2) {
// UP(X1 extends C1<X1>? /*B1*/, C1<C2> /*T2*/) =
// T2 if X1 <: T2
// otherwise X1 if T2 <: X1
// otherwise UP(B1a, T2)
// where B1a is the greatest closure of B1 with respect to X1
var z1 = condition ? x1 : ((throw 0) as C1<X1>?);
z1.expectStaticType<Exactly<C1<Object?>?>>();
var z2 = condition ? x1 : throw 0;
z2.expectStaticType<Exactly<X1>>();
var z3 = condition ? x1 : t2;
z3.expectStaticType<Exactly<C1<Object?>?>>();
// UP(C1<C2> /*T2*/, X1 extends C1<X1>? /*B1*/) =
// X1 if T2 <: X1
// otherwise T2 if X1 <: T2
// otherwise UP(T2, B1a)
// where B1a is the greatest closure of B1 with respect to X1
var z4 = condition ? ((throw 0) as C1<X1>?) : x1;
z4.expectStaticType<Exactly<C1<Object?>?>>();
var z5 = condition ? throw 0 : x1;
z5.expectStaticType<Exactly<X1>>();
var z6 = condition ? t2 : x1;
z6.expectStaticType<Exactly<C1<Object?>?>>();
}
void g3<X1>(X1 x1, C1<C2> t2) {
if (x1 is C1<X1>?) {
// UP(X1 & C1<X1>? /*B1*/, C1<C2> /*T2*/) =
// T2 if X1 <: T2
// otherwise X1 if T2 <: X1
// otherwise UP(B1a, T2)
// where B1a is the greatest closure of B1 with respect to X1
var z1 = condition ? x1 : (null as Object?);
z1.expectStaticType<Exactly<Object?>>();
var z2 = condition ? x1 : throw 0;
z2.expectStaticType<Exactly<X1>>();
var z3 = condition ? x1 : t2;
z3.expectStaticType<Exactly<C1<Object?>?>>();
// UP(C1<C2> /*T2*/, X1 & C1<X1>? /*B1*/) =
// X1 if T2 <: X1
// otherwise T2 if X1 <: T2
// otherwise UP(T2, B1a)
// where B1a is the greatest closure of B1 with respect to X1
var z4 = condition ? null as Object? : x1;
z4.expectStaticType<Exactly<Object?>>();
var z5 = condition ? throw 0 : x1;
z5.expectStaticType<Exactly<X1>>();
var z6 = condition ? t2 : x1;
z6.expectStaticType<Exactly<C1<Object?>?>>();
}
}
void f4<X1 extends C1<X1>?>(X1 x1, C1<C2>? t2) {
// UP(X1 extends C1<X1>? /*B1*/, C1<C2>? /*T2*/) =
// T2 if X1 <: T2
// otherwise X1 if T2 <: X1
// otherwise UP(B1a, T2)
// where B1a is the greatest closure of B1 with respect to X1
var z1 = condition ? x1 : ((throw 0) as C1<X1>?);
z1.expectStaticType<Exactly<C1<Object?>?>>();
var z2 = condition ? x1 : throw 0;
z2.expectStaticType<Exactly<X1>>();
var z3 = condition ? x1 : t2;
z3.expectStaticType<Exactly<C1<Object?>?>>();
// UP(C1<C2>? /*T2*/, X1 extends C1<X1>? /*B1*/) =
// X1 if T2 <: X1
// otherwise T2 if X1 <: T2
// otherwise UP(T2, B1a)
// where B1a is the greatest closure of B1 with respect to X1
var z4 = condition ? ((throw 0) as C1<X1>?) : x1;
z4.expectStaticType<Exactly<C1<Object?>?>>();
var z5 = condition ? throw 0 : x1;
z5.expectStaticType<Exactly<X1>>();
var z6 = condition ? t2 : x1;
z6.expectStaticType<Exactly<C1<Object?>?>>();
}
void g4<X1>(X1 x1, C1<C2>? t2) {
if (x1 is C1<X1>?) {
// UP(X1 & C1<X1>? /*B1*/, C1<C2>? /*T2*/) =
// T2 if X1 <: T2
// otherwise X1 if T2 <: X1
// otherwise UP(B1a, T2)
// where B1a is the greatest closure of B1 with respect to X1
var z1 = condition ? x1 : (null as Object?);
z1.expectStaticType<Exactly<Object?>>();
var z2 = condition ? x1 : throw 0;
z2.expectStaticType<Exactly<X1>>();
var z3 = condition ? x1 : t2;
z3.expectStaticType<Exactly<C1<Object?>?>>();
// UP(C1<C2>? /*T2*/, X1 & C1<X1>? /*B1*/) =
// X1 if T2 <: X1
// otherwise T2 if X1 <: T2
// otherwise UP(T2, B1a)
// where B1a is the greatest closure of B1 with respect to X1
var z4 = condition ? null as Object? : x1;
z4.expectStaticType<Exactly<Object?>>();
var z5 = condition ? throw 0 : x1;
z5.expectStaticType<Exactly<X1>>();
var z6 = condition ? t2 : x1;
z6.expectStaticType<Exactly<C1<Object?>?>>();
}
}
void f5<X1 extends Iterable<Iterable<X1>?>>(
X1 x1, Iterable<List<Object?>?> t2) {
// UP(X1 extends Iterable<Iterable<X1>?> /*B1*/,
// Iterable<List<Object?>?> /*T2*/) =
// T2 if X1 <: T2
// otherwise X1 if T2 <: X1
// otherwise UP(B1a, T2)
// where B1a is the greatest closure of B1 with respect to X1
var z1 = condition ? x1 : ((throw 0) as Iterable<Iterable<X1>?>);
z1.expectStaticType<Exactly<Iterable<Iterable<X1>?>>>();
var z2 = condition ? x1 : throw 0;
z2.expectStaticType<Exactly<X1>>();
var z3 = condition ? x1 : t2;
z3.expectStaticType<Exactly<Iterable<Iterable<Object?>?>>>();
// UP(Iterable<List<Object?>?> /*T2*/,
// X1 extends Iterable<Iterable<X1>?> /*B1*/) =
// X1 if T2 <: X1
// otherwise T2 if X1 <: T2
// otherwise UP(T2, B1a)
// where B1a is the greatest closure of B1 with respect to X1
var z4 = condition ? ((throw 0) as Iterable<Iterable<X1>?>) : x1;
z4.expectStaticType<Exactly<Iterable<Iterable<X1>?>>>();
var z5 = condition ? throw 0 : x1;
z5.expectStaticType<Exactly<X1>>();
var z6 = condition ? t2 : x1;
z6.expectStaticType<Exactly<Iterable<Iterable<Object?>?>>>();
}
void g5<X1>(X1 x1, Iterable<List<Object?>?> t2) {
if (x1 is Iterable<Iterable<X1>?>) {
// UP(X1 & Iterable<Iterable<X1>?> /*B1*/,
// Iterable<List<Object?>?> /*T2*/) =
// T2 if X1 <: T2
// otherwise X1 if T2 <: X1
// otherwise UP(B1a, T2)
// where B1a is the greatest closure of B1 with respect to X1
var z1 = condition ? x1 : (null as Object?);
z1.expectStaticType<Exactly<Object?>>();
var z2 = condition ? x1 : throw 0;
z2.expectStaticType<Exactly<X1>>();
var z3 = condition ? x1 : t2;
z3.expectStaticType<Exactly<Iterable<Iterable<Object?>?>>>();
// UP(Iterable<List<Object?>?> /*T2*/,
// X1 & Iterable<Iterable<X1>?> /*B1*/) =
// X1 if T2 <: X1
// otherwise T2 if X1 <: T2
// otherwise UP(T2, B1a)
// where B1a is the greatest closure of B1 with respect to X1
var z4 = condition ? null as Object? : x1;
z4.expectStaticType<Exactly<Object?>>();
var z5 = condition ? throw 0 : x1;
z5.expectStaticType<Exactly<X1>>();
var z6 = condition ? t2 : x1;
z6.expectStaticType<Exactly<Iterable<Iterable<Object?>?>>>();
}
}
void g6<X1>(X1 x1, FutureOr<Object> t2) {
if (x1 is FutureOr<X1>) {
// UP(X1 & FutureOr<X1> /*B1*/, FutureOr<Object> /*T2*/) =
// T2 if X1 <: T2
// otherwise X1 if T2 <: X1
// otherwise UP(B1a, T2)
// where B1a is the greatest closure of B1 with respect to X1
var z1 = condition ? x1 : (null as Object?);
z1.expectStaticType<Exactly<Object?>>();
var z2 = condition ? x1 : throw 0;
z2.expectStaticType<Exactly<X1>>();
var z3 = condition ? x1 : t2;
z3.expectStaticType<Exactly<FutureOr<Object>?>>();
// UP(FutureOr<Object> /*T2*/, X1 & FutureOr<X1> /*B1*/) =
// X1 if T2 <: X1
// otherwise T2 if X1 <: T2
// otherwise UP(T2, B1a)
// where B1a is the greatest closure of B1 with respect to X1
var z4 = condition ? null as Object? : x1;
z4.expectStaticType<Exactly<Object?>>();
var z5 = condition ? throw 0 : x1;
z5.expectStaticType<Exactly<X1>>();
var z6 = condition ? t2 : x1;
z6.expectStaticType<Exactly<FutureOr<Object>?>>();
}
}
void g7<X1>(X1 x1, FutureOr<Object> t2) {
if (x1 is FutureOr<X1?>) {
// UP(X1 & FutureOr<X1?> /*B1*/, FutureOr<Object> /*T2*/) =
// T2 if X1 <: T2
// otherwise X1 if T2 <: X1
// otherwise UP(B1a, T2)
// where B1a is the greatest closure of B1 with respect to X1
var z1 = condition ? x1 : (null as Object?);
z1.expectStaticType<Exactly<Object?>>();
var z2 = condition ? x1 : throw 0;
z2.expectStaticType<Exactly<X1>>();
var z3 = condition ? x1 : t2;
z3.expectStaticType<Exactly<FutureOr<Object>?>>();
// UP(FutureOr<Object> /*T2*/, X1 & FutureOr<X1?> /*B1*/) =
// X1 if T2 <: X1
// otherwise T2 if X1 <: T2
// otherwise UP(T2, B1a)
// where B1a is the greatest closure of B1 with respect to X1
var z4 = condition ? null as Object? : x1;
z4.expectStaticType<Exactly<Object?>>();
var z5 = condition ? throw 0 : x1;
z5.expectStaticType<Exactly<X1>>();
var z6 = condition ? t2 : x1;
z6.expectStaticType<Exactly<FutureOr<Object>?>>();
}
}
void f8<X1 extends void Function(X1)>(X1 x1, void Function(Null) t2) {
// UP(X1 extends void Function(X1) /*B1*/, void Function(Null) /*T2*/) =
// T2 if X1 <: T2
// otherwise X1 if T2 <: X1
// otherwise UP(B1a, T2)
// where B1a is the greatest closure of B1 with respect to X1
var z1 = condition ? x1 : ((throw 0) as void Function(X1));
z1.expectStaticType<Exactly<void Function(X1)>>();
var z2 = condition ? x1 : throw 0;
z2.expectStaticType<Exactly<X1>>();
var z3 = condition ? x1 : t2;
z3.expectStaticType<Exactly<void Function(Never)>>();
// UP(void Function(Null) /*T2*/, X1 extends void Function(X1) /*B1*/) =
// X1 if T2 <: X1
// otherwise T2 if X1 <: T2
// otherwise UP(T2, B1a)
// where B1a is the greatest closure of B1 with respect to X1
var z4 = condition ? ((throw 0) as void Function(X1)) : x1;
z4.expectStaticType<Exactly<void Function(X1)>>();
var z5 = condition ? throw 0 : x1;
z5.expectStaticType<Exactly<X1>>();
var z6 = condition ? t2 : x1;
z6.expectStaticType<Exactly<void Function(Never)>>();
}
void g8<X1>(X1 x1, void Function(Null) t2) {
if (x1 is void Function(X1)) {
// UP(X1 & void Function(X1) /*B1*/, void Function(Null) /*T2*/) =
// T2 if X1 <: T2
// otherwise X1 if T2 <: X1
// otherwise UP(B1a, T2)
// where B1a is the greatest closure of B1 with respect to X1
var z1 = condition ? x1 : (null as Object?);
z1.expectStaticType<Exactly<Object?>>();
var z2 = condition ? x1 : throw 0;
z2.expectStaticType<Exactly<X1>>();
var z3 = condition ? x1 : t2;
z3.expectStaticType<Exactly<void Function(Never)>>();
// UP(void Function(Null) /*T2*/, X1 & void Function(X1) /*B1*/) =
// X1 if T2 <: X1
// otherwise T2 if X1 <: T2
// otherwise UP(T2, B1a)
// where B1a is the greatest closure of B1 with respect to X1
var z4 = condition ? null as Object? : x1;
z4.expectStaticType<Exactly<Object?>>();
var z5 = condition ? throw 0 : x1;
z5.expectStaticType<Exactly<X1>>();
var z6 = condition ? t2 : x1;
z6.expectStaticType<Exactly<void Function(Never)>>();
}
}
void f9<X1 extends void Function([X1])>(X1 x1, void Function([Null]) t2) {
// UP(X1 extends void Function([X1]) /*B1*/, void Function([Null]) /*T2*/) =
// T2 if X1 <: T2
// otherwise X1 if T2 <: X1
// otherwise UP(B1a, T2)
// where B1a is the greatest closure of B1 with respect to X1
var z1 = condition ? x1 : ((throw 0) as void Function([X1]));
z1.expectStaticType<Exactly<void Function([X1])>>();
var z2 = condition ? x1 : throw 0;
z2.expectStaticType<Exactly<X1>>();
var z3 = condition ? x1 : t2;
z3.expectStaticType<Exactly<void Function([Never])>>();
// UP(void Function([Null]) /*T2*/, X1 extends void Function([X1]) /*B1*/) =
// X1 if T2 <: X1
// otherwise T2 if X1 <: T2
// otherwise UP(T2, B1a)
// where B1a is the greatest closure of B1 with respect to X1
var z4 = condition ? ((throw 0) as void Function([X1])) : x1;
z4.expectStaticType<Exactly<void Function([X1])>>();
var z5 = condition ? throw 0 : x1;
z5.expectStaticType<Exactly<X1>>();
var z6 = condition ? t2 : x1;
z6.expectStaticType<Exactly<void Function([Never])>>();
}
void g9<X1>(X1 x1, void Function([Null]) t2) {
if (x1 is void Function([X1])) {
// UP(X1 & void Function([X1]) /*B1*/, void Function([Null]) /*T2*/) =
// T2 if X1 <: T2
// otherwise X1 if T2 <: X1
// otherwise UP(B1a, T2)
// where B1a is the greatest closure of B1 with respect to X1
var z1 = condition ? x1 : (null as Object?);
z1.expectStaticType<Exactly<Object?>>();
var z2 = condition ? x1 : throw 0;
z2.expectStaticType<Exactly<X1>>();
var z3 = condition ? x1 : t2;
z3.expectStaticType<Exactly<void Function([Never])>>();
// UP(void Function([Null]) /*T2*/, X1 & void Function([X1]) /*B1*/) =
// X1 if T2 <: X1
// otherwise T2 if X1 <: T2
// otherwise UP(T2, B1a)
// where B1a is the greatest closure of B1 with respect to X1
var z4 = condition ? null as Object? : x1;
z4.expectStaticType<Exactly<Object?>>();
var z5 = condition ? throw 0 : x1;
z5.expectStaticType<Exactly<X1>>();
var z6 = condition ? t2 : x1;
z6.expectStaticType<Exactly<void Function([Never])>>();
}
}
void f10<X1 extends void Function({X1 p})>(
X1 x1, void Function({Null p}) t2) {
// UP(X1 extends void Function({X1 p}) /*B1*/,
// void Function({Null p}) /*T2*/) =
// T2 if X1 <: T2
// otherwise X1 if T2 <: X1
// otherwise UP(B1a, T2)
// where B1a is the greatest closure of B1 with respect to X1
var z1 = condition ? x1 : ((throw 0) as void Function({X1 p}));
z1.expectStaticType<Exactly<void Function({X1 p})>>();
var z2 = condition ? x1 : throw 0;
z2.expectStaticType<Exactly<X1>>();
var z3 = condition ? x1 : t2;
z3.expectStaticType<Exactly<void Function({Never p})>>();
// UP(void Function({Null p}) /*T2*/,
// X1 extends void Function({X1 p}) /*B1*/) =
// X1 if T2 <: X1
// otherwise T2 if X1 <: T2
// otherwise UP(T2, B1a)
// where B1a is the greatest closure of B1 with respect to X1
var z4 = condition ? ((throw 0) as void Function({X1 p})) : x1;
z4.expectStaticType<Exactly<void Function({X1 p})>>();
var z5 = condition ? throw 0 : x1;
z5.expectStaticType<Exactly<X1>>();
var z6 = condition ? t2 : x1;
z6.expectStaticType<Exactly<void Function({Never p})>>();
}
void g10<X1>(X1 x1, void Function({Null p}) t2) {
if (x1 is void Function({X1 p})) {
// UP(X1 & void Function({X1 p}) /*B1*/, void Function({Null p}) /*T2*/) =
// T2 if X1 <: T2
// otherwise X1 if T2 <: X1
// otherwise UP(B1a, T2)
// where B1a is the greatest closure of B1 with respect to X1
var z1 = condition ? x1 : (null as Object?);
z1.expectStaticType<Exactly<Object?>>();
var z2 = condition ? x1 : throw 0;
z2.expectStaticType<Exactly<X1>>();
var z3 = condition ? x1 : t2;
z3.expectStaticType<Exactly<void Function({Never p})>>();
// UP(void Function({Null p}) /*T2*/, X1 & void Function({X1 p}) /*B1*/) =
// X1 if T2 <: X1
// otherwise T2 if X1 <: T2
// otherwise UP(T2, B1a)
// where B1a is the greatest closure of B1 with respect to X1
var z4 = condition ? null as Object? : x1;
z4.expectStaticType<Exactly<Object?>>();
var z5 = condition ? throw 0 : x1;
z5.expectStaticType<Exactly<X1>>();
var z6 = condition ? t2 : x1;
z6.expectStaticType<Exactly<void Function({Never p})>>();
}
}
void f11<X1 extends void Function({required X1 p})>(
X1 x1, void Function({X1 p}) t2) {
// UP(X1 extends void Function({required X1 p}) /*B1*/,
// void Function({X1 p}) /*T2*/) =
// T2 if X1 <: T2
// otherwise X1 if T2 <: X1
// otherwise UP(B1a, T2)
// where B1a is the greatest closure of B1 with respect to X1
var z1 = condition ? x1 : ((throw 0) as void Function({required X1 p}));
z1.expectStaticType<Exactly<void Function({required X1 p})>>();
var z2 = condition ? x1 : throw 0;
z2.expectStaticType<Exactly<X1>>();
var z3 = condition ? x1 : t2;
z3.expectStaticType<Exactly<void Function({required Never p})>>();
// UP(void Function({X1 p}) /*T2*/,
// X1 extends void Function({required X1 p}) /*B1*/) =
// X1 if T2 <: X1
// otherwise T2 if X1 <: T2
// otherwise UP(T2, B1a)
// where B1a is the greatest closure of B1 with respect to X1
var z4 = condition ? ((throw 0) as void Function({required X1 p})) : x1;
z4.expectStaticType<Exactly<void Function({required X1 p})>>();
var z5 = condition ? throw 0 : x1;
z5.expectStaticType<Exactly<X1>>();
var z6 = condition ? t2 : x1;
z6.expectStaticType<Exactly<void Function({required Never p})>>();
}
void g11<X1>(X1 x1, void Function({X1 p}) t2) {
if (x1 is void Function({required X1 p})) {
// UP(X1 & void Function({required X1 p}) /*B1*/,
// void Function({X1 p}) /*T2*/) =
// T2 if X1 <: T2
// otherwise X1 if T2 <: X1
// otherwise UP(B1a, T2)
// where B1a is the greatest closure of B1 with respect to X1
var z1 = condition ? x1 : (null as Object?);
z1.expectStaticType<Exactly<Object?>>();
var z2 = condition ? x1 : throw 0;
z2.expectStaticType<Exactly<X1>>();
var z3 = condition ? x1 : t2;
z3.expectStaticType<Exactly<void Function({required Never p})>>();
// UP(void Function({X1 p}) /*T2*/,
// X1 & void Function({required X1 p}) /*B1*/) =
// X1 if T2 <: X1
// otherwise T2 if X1 <: T2
// otherwise UP(T2, B1a)
// where B1a is the greatest closure of B1 with respect to X1
var z4 = condition ? null as Object? : x1;
z4.expectStaticType<Exactly<Object?>>();
var z5 = condition ? throw 0 : x1;
z5.expectStaticType<Exactly<X1>>();
var z6 = condition ? t2 : x1;
z6.expectStaticType<Exactly<void Function({required Never p})>>();
}
}
void f12<X1 extends void Function(FutureOr<X1>)>(
X1 x1, void Function(FutureOr<Null>) t2) {
// UP(X1 extends void Function(FutureOr<X1>) /*B1*/,
// void Function(FutureOr<Null>) /*T2*/) =
// T2 if X1 <: T2
// otherwise X1 if T2 <: X1
// otherwise UP(B1a, T2)
// where B1a is the greatest closure of B1 with respect to X1
var z1 = condition ? x1 : ((throw 0) as void Function(FutureOr<X1>));
z1.expectStaticType<Exactly<void Function(FutureOr<X1>)>>();
var z2 = condition ? x1 : throw 0;
z2.expectStaticType<Exactly<X1>>();
var z3 = condition ? x1 : t2;
z3.expectStaticType<Exactly<void Function(FutureOr<Never>)>>();
// UP(void Function(FutureOr<Null>) /*T2*/,
// X1 extends void Function(FutureOr<X1>) /*B1*/) =
// X1 if T2 <: X1
// otherwise T2 if X1 <: T2
// otherwise UP(T2, B1a)
// where B1a is the greatest closure of B1 with respect to X1
var z4 = condition ? ((throw 0) as void Function(FutureOr<X1>)) : x1;
z4.expectStaticType<Exactly<void Function(FutureOr<X1>)>>();
var z5 = condition ? throw 0 : x1;
z5.expectStaticType<Exactly<X1>>();
var z6 = condition ? t2 : x1;
z6.expectStaticType<Exactly<void Function(FutureOr<Never>)>>();
}
void g12<X1>(X1 x1, void Function(FutureOr<Null>) t2) {
if (x1 is void Function(FutureOr<X1>)) {
// UP(X1 & void Function(FutureOr<X1>) /*B1*/,
// void Function(FutureOr<Null>) /*T2*/) =
// T2 if X1 <: T2
// otherwise X1 if T2 <: X1
// otherwise UP(B1a, T2)
// where B1a is the greatest closure of B1 with respect to X1
var z1 = condition ? x1 : (null as Object?);
z1.expectStaticType<Exactly<Object?>>();
var z2 = condition ? x1 : throw 0;
z2.expectStaticType<Exactly<X1>>();
var z3 = condition ? x1 : t2;
z3.expectStaticType<Exactly<void Function(FutureOr<Never>)>>();
// UP(void Function(FutureOr<Null>) /*T2*/,
// X1 & void Function(FutureOr<X1>) /*B1*/) =
// X1 if T2 <: X1
// otherwise T2 if X1 <: T2
// otherwise UP(T2, B1a)
// where B1a is the greatest closure of B1 with respect to X1
var z4 = condition ? null as Object? : x1;
z4.expectStaticType<Exactly<Object?>>();
var z5 = condition ? throw 0 : x1;
z5.expectStaticType<Exactly<X1>>();
var z6 = condition ? t2 : x1;
z6.expectStaticType<Exactly<void Function(FutureOr<Never>)>>();
}
}
}