blob: 20c82bd8fa153cc10d2694afedac523f838f6c39 [file] [log] [blame]
// Copyright (c) 2023, 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.
exhaustiveBoundedTypeVariableByValue<T extends bool>(T x1, T x2) {
/*
checkingOrder={bool,true,false},
subtypes={true,false},
type=bool
*/
switch (x1) {
/*space=true*/
case true:
/*space=false*/
case false:
break;
}
return /*
checkingOrder={bool,true,false},
subtypes={true,false},
type=bool
*/
switch (x2) {
true /*space=true*/ => 0,
false /*space=false*/ => 1,
};
}
exhaustiveBoundedTypeVariableByType<T extends bool>(T x1, T x2) {
/*
checkingOrder={bool,true,false},
subtypes={true,false},
type=bool
*/
switch (x1) {
/*space=bool*/
case T():
break;
}
return /*
checkingOrder={bool,true,false},
subtypes={true,false},
type=bool
*/
switch (x2) {
T() /*space=bool*/ => 0,
};
}
nonExhaustiveBoundedTypeVariable<T extends bool>(T x1, T x2) {
/*
checkingOrder={bool,true,false},
error=non-exhaustive:false,
subtypes={true,false},
type=bool
*/
switch (x1) {
/*space=true*/
case true:
break;
}
return /*
checkingOrder={bool,true,false},
error=non-exhaustive:false,
subtypes={true,false},
type=bool
*/
switch (x2) {
true /*space=true*/ => 0,
};
}
exhaustiveBoundedTypeVariableByBound<T extends bool>(T x1, T x2) {
/*
checkingOrder={bool,true,false},
subtypes={true,false},
type=bool
*/
switch (x1) {
/*space=bool*/
case bool():
break;
}
return /*
checkingOrder={bool,true,false},
subtypes={true,false},
type=bool
*/
switch (x2) {
bool() /*space=bool*/ => 0,
};
}
nonExhaustiveBoundedTypeVariableByOtherType<T extends bool, S extends bool>(
T x1, T x2) {
/*
checkingOrder={bool,true,false},
error=non-exhaustive:true;false,
subtypes={true,false},
type=bool
*/
switch (x1) {
/*space=bool*/
case S():
break;
}
return /*
checkingOrder={bool,true,false},
error=non-exhaustive:true;false,
subtypes={true,false},
type=bool
*/
switch (x2) {
S() /*space=bool*/ => 0,
};
}
exhaustivePromotedTypeVariableByValue<T>(T x1, T x2) {
if (x1 is bool) {
/*
checkingOrder={bool,true,false},
subtypes={true,false},
type=bool
*/
switch (x1) {
/*space=true*/
case true:
/*space=false*/
case false:
break;
}
}
if (x2 is bool) {
var a = /*
checkingOrder={bool,true,false},
subtypes={true,false},
type=bool
*/
switch (x2) {
true /*space=true*/ => 0,
false /*space=false*/ => 1,
};
}
}
exhaustivePromotedTypeVariableByType<T>(T x1, T x2) {
if (x1 is bool) {
/*
checkingOrder={bool,true,false},
subtypes={true,false},
type=bool
*/
switch (x1) {
/*space=bool*/
case T():
break;
}
}
if (x2 is bool) {
var a = /*
checkingOrder={bool,true,false},
subtypes={true,false},
type=bool
*/
switch (x2) {
T() /*space=bool*/ => 0,
};
}
}
nonExhaustivePromotedTypeVariable<T>(T x1, T x2) {
if (x1 is bool) {
/*
checkingOrder={bool,true,false},
error=non-exhaustive:false,
subtypes={true,false},
type=bool
*/
switch (x1) {
/*space=true*/
case true:
break;
}
}
if (x2 is bool) {
var a = /*
checkingOrder={bool,true,false},
error=non-exhaustive:false,
subtypes={true,false},
type=bool
*/
switch (x2) {
true /*space=true*/ => 0,
};
}
}
exhaustivePromotedTypeVariableByBound<T>(T x1, T x2) {
if (x1 is bool) {
/*
checkingOrder={bool,true,false},
subtypes={true,false},
type=bool
*/
switch (x1) {
/*space=bool*/
case bool():
break;
}
}
if (x2 is bool) {
var a = /*
checkingOrder={bool,true,false},
subtypes={true,false},
type=bool
*/
switch (x2) {
bool() /*space=bool*/ => 0,
};
}
}
nonExhaustivePromotedTypeVariableByOtherType<T, S extends bool>(T x1, T x2) {
if (x1 is bool) {
/*
checkingOrder={bool,true,false},
error=non-exhaustive:true;false,
subtypes={true,false},
type=bool
*/
switch (x1) {
/*space=bool*/
case S():
break;
}
}
if (x2 is bool) {
var a = /*
checkingOrder={bool,true,false},
error=non-exhaustive:true;false,
subtypes={true,false},
type=bool
*/
switch (x2) {
S() /*space=bool*/ => 0,
};
}
}