blob: 13564675356f748372e9c5b7317332faf5fb1546 [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.
extension type ExtensionTypeNullable(String? s) {}
extension type ExtensionTypeNum(num n) {}
extension type ExtensionTypeBool(bool b) {}
sealed class S {}
class A extends S {}
class B extends S {}
extension type ExtensionTypeSealed(S s) {}
methodNull1(ExtensionTypeNullable o) => /*
checkingOrder={String?,String,Null},
subtypes={String,Null},
type=String?
*/switch (o) {
null /*space=Null*/=> 0,
String s /*space=String*/=> 1,
};
methodNull2(ExtensionTypeNullable o) => /*
checkingOrder={String?,String,Null},
subtypes={String,Null},
type=String?
*/switch (o) {
ExtensionTypeNullable() /*space=String?*/=> 2,
};
methodNull3(String? o) => /*
checkingOrder={String?,String,Null},
subtypes={String,Null},
type=String?
*/switch (o) {
ExtensionTypeNullable s /*space=String?*/=> 3,
};
methodNum1(ExtensionTypeNum o) => /*
checkingOrder={num,double,int},
subtypes={double,int},
type=num
*/switch (o) {
int() /*space=int*/=> 0,
double() /*space=double*/=> 1,
};
methodNum2(ExtensionTypeNum o) => /*
checkingOrder={num,double,int},
subtypes={double,int},
type=num
*/switch (o) {
ExtensionTypeNum() /*space=num*/=> 2,
};
methodNum3(num o) => /*
checkingOrder={num,double,int},
subtypes={double,int},
type=num
*/switch (o) {
ExtensionTypeNum() /*space=num*/=> 3,
};
methodBool1(ExtensionTypeBool o) => /*
checkingOrder={bool,true,false},
subtypes={true,false},
type=bool
*/switch (o) {
true /*space=true*/=> 0,
false /*space=false*/=> 1,
};
methodBool2(ExtensionTypeBool o) => /*
checkingOrder={bool,true,false},
subtypes={true,false},
type=bool
*/switch (o) {
ExtensionTypeBool() /*space=bool*/=> 2,
};
methodBool3(bool o) => /*
checkingOrder={bool,true,false},
subtypes={true,false},
type=bool
*/switch (o) {
ExtensionTypeBool() /*space=bool*/=> 3,
};
methodSealed1(ExtensionTypeSealed o) => /*
checkingOrder={S,A,B},
subtypes={A,B},
type=S
*/switch (o) {
A() /*space=A*/=> 0,
B() /*space=B*/=> 1,
};
methodSealed2(ExtensionTypeSealed o) => /*
checkingOrder={S,A,B},
subtypes={A,B},
type=S
*/switch (o) {
ExtensionTypeSealed() /*space=S*/=> 2,
};
methodSealed3(S o) => /*
checkingOrder={S,A,B},
subtypes={A,B},
type=S
*/switch (o) {
ExtensionTypeSealed() /*space=S*/=> 3,
};