| library; |
| // |
| // Problems in library: |
| // |
| // pkg/front_end/testcases/extension_types/issue53207.dart:21:9: Error: The 'await' expression can't be used for an expression with an extension type that is not a subtype of 'Future'. |
| // await e1; // Error. |
| // ^ |
| // |
| // pkg/front_end/testcases/extension_types/issue53207.dart:22:9: Error: The 'await' expression can't be used for an expression with an extension type that is not a subtype of 'Future'. |
| // await e2; // Error. |
| // ^ |
| // |
| // pkg/front_end/testcases/extension_types/issue53207.dart:23:9: Error: The 'await' expression can't be used for an expression with an extension type that is not a subtype of 'Future'. |
| // await e3; // Error. |
| // ^ |
| // |
| // pkg/front_end/testcases/extension_types/issue53207.dart:24:9: Error: The 'await' expression can't be used for an expression with an extension type that is not a subtype of 'Future'. |
| // await e4; // Error. |
| // ^ |
| // |
| // pkg/front_end/testcases/extension_types/issue53207.dart:25:9: Error: The 'await' expression can't be used for an expression with an extension type that is not a subtype of 'Future'. |
| // await e5object; // Error. |
| // ^ |
| // |
| // pkg/front_end/testcases/extension_types/issue53207.dart:26:9: Error: The 'await' expression can't be used for an expression with an extension type that is not a subtype of 'Future'. |
| // await e5future; // Error. |
| // ^ |
| // |
| import self as self; |
| import "dart:async" as asy; |
| import "dart:core" as core; |
| |
| import "dart:async"; |
| |
| extension type E1(asy::Future<core::int> foo) { |
| abstract extension-type-member representation-field get foo() → asy::Future<core::int>; |
| constructor • = self::E1|constructor#; |
| constructor tearoff • = self::E1|constructor#_#new#tearOff; |
| } |
| extension type E2<X extends asy::Future<core::String>>(X foo) { |
| abstract extension-type-member representation-field get foo() → X; |
| constructor • = self::E2|constructor#; |
| constructor tearoff • = self::E2|constructor#_#new#tearOff; |
| } |
| extension type E3(FutureOr<core::bool>foo) { |
| abstract extension-type-member representation-field get foo() → FutureOr<core::bool>; |
| constructor • = self::E3|constructor#; |
| constructor tearoff • = self::E3|constructor#_#new#tearOff; |
| } |
| extension type E4<X extends FutureOr<core::double>>(X foo) { |
| abstract extension-type-member representation-field get foo() → X; |
| constructor • = self::E4|constructor#; |
| constructor tearoff • = self::E4|constructor#_#new#tearOff; |
| } |
| extension type E5<X extends core::Object? = dynamic>(X% foo) { |
| abstract extension-type-member representation-field get foo() → X%; |
| constructor • = self::E5|constructor#; |
| constructor tearoff • = self::E5|constructor#_#new#tearOff; |
| } |
| extension type F1(asy::Future<core::int> foo) implements asy::Future<core::int> { |
| abstract extension-type-member representation-field get foo() → asy::Future<core::int>; |
| constructor • = self::F1|constructor#; |
| constructor tearoff • = self::F1|constructor#_#new#tearOff; |
| } |
| extension type F2<X extends asy::Future<core::num>>(X foo) implements asy::Future<core::num> { |
| abstract extension-type-member representation-field get foo() → X; |
| constructor • = self::F2|constructor#; |
| constructor tearoff • = self::F2|constructor#_#new#tearOff; |
| } |
| extension type F3<X extends asy::Future<core::Object>>(X foo) implements asy::Future<core::Object> { |
| abstract extension-type-member representation-field get foo() → X; |
| constructor • = self::F3|constructor#; |
| constructor tearoff • = self::F3|constructor#_#new#tearOff; |
| } |
| extension type F4<X extends asy::Future<core::num>>(X foo) implements self::F3<X> /* erasure=X */ { |
| abstract extension-type-member representation-field get foo() → X; |
| constructor • = self::F4|constructor#; |
| constructor tearoff • = self::F4|constructor#_#new#tearOff; |
| } |
| static extension-type-member method E1|constructor#(asy::Future<core::int> foo) → self::E1% /* erasure=asy::Future<core::int>, declared=! */ { |
| lowered final self::E1% /* erasure=asy::Future<core::int>, declared=! */ #this = foo; |
| return #this; |
| } |
| static extension-type-member method E1|constructor#_#new#tearOff(asy::Future<core::int> foo) → self::E1% /* erasure=asy::Future<core::int>, declared=! */ |
| return self::E1|constructor#(foo); |
| static extension-type-member method E2|constructor#<X extends asy::Future<core::String>>(self::E2|constructor#::X foo) → self::E2<self::E2|constructor#::X>% /* erasure=self::E2|constructor#::X, declared=! */ { |
| lowered final self::E2<self::E2|constructor#::X>% /* erasure=self::E2|constructor#::X, declared=! */ #this = foo; |
| return #this; |
| } |
| static extension-type-member method E2|constructor#_#new#tearOff<X extends asy::Future<core::String>>(self::E2|constructor#_#new#tearOff::X foo) → self::E2<self::E2|constructor#_#new#tearOff::X>% /* erasure=self::E2|constructor#_#new#tearOff::X, declared=! */ |
| return self::E2|constructor#<self::E2|constructor#_#new#tearOff::X>(foo); |
| static extension-type-member method E3|constructor#(FutureOr<core::bool>foo) → self::E3% /* erasure=FutureOr<core::bool>, declared=! */ { |
| lowered final self::E3% /* erasure=FutureOr<core::bool>, declared=! */ #this = foo; |
| return #this; |
| } |
| static extension-type-member method E3|constructor#_#new#tearOff(FutureOr<core::bool>foo) → self::E3% /* erasure=FutureOr<core::bool>, declared=! */ |
| return self::E3|constructor#(foo); |
| static extension-type-member method E4|constructor#<X extends FutureOr<core::double>>(self::E4|constructor#::X foo) → self::E4<self::E4|constructor#::X>% /* erasure=self::E4|constructor#::X, declared=! */ { |
| lowered final self::E4<self::E4|constructor#::X>% /* erasure=self::E4|constructor#::X, declared=! */ #this = foo; |
| return #this; |
| } |
| static extension-type-member method E4|constructor#_#new#tearOff<X extends FutureOr<core::double>>(self::E4|constructor#_#new#tearOff::X foo) → self::E4<self::E4|constructor#_#new#tearOff::X>% /* erasure=self::E4|constructor#_#new#tearOff::X, declared=! */ |
| return self::E4|constructor#<self::E4|constructor#_#new#tearOff::X>(foo); |
| static extension-type-member method E5|constructor#<X extends core::Object? = dynamic>(self::E5|constructor#::X% foo) → self::E5<self::E5|constructor#::X%>% /* erasure=self::E5|constructor#::X%, declared=! */ { |
| lowered final self::E5<self::E5|constructor#::X%>% /* erasure=self::E5|constructor#::X%, declared=! */ #this = foo; |
| return #this; |
| } |
| static extension-type-member method E5|constructor#_#new#tearOff<X extends core::Object? = dynamic>(self::E5|constructor#_#new#tearOff::X% foo) → self::E5<self::E5|constructor#_#new#tearOff::X%>% /* erasure=self::E5|constructor#_#new#tearOff::X%, declared=! */ |
| return self::E5|constructor#<self::E5|constructor#_#new#tearOff::X%>(foo); |
| static extension-type-member method F1|constructor#(asy::Future<core::int> foo) → self::F1 /* erasure=asy::Future<core::int> */ { |
| lowered final self::F1 /* erasure=asy::Future<core::int> */ #this = foo; |
| return #this; |
| } |
| static extension-type-member method F1|constructor#_#new#tearOff(asy::Future<core::int> foo) → self::F1 /* erasure=asy::Future<core::int> */ |
| return self::F1|constructor#(foo); |
| static extension-type-member method F2|constructor#<X extends asy::Future<core::num>>(self::F2|constructor#::X foo) → self::F2<self::F2|constructor#::X> /* erasure=self::F2|constructor#::X */ { |
| lowered final self::F2<self::F2|constructor#::X> /* erasure=self::F2|constructor#::X */ #this = foo; |
| return #this; |
| } |
| static extension-type-member method F2|constructor#_#new#tearOff<X extends asy::Future<core::num>>(self::F2|constructor#_#new#tearOff::X foo) → self::F2<self::F2|constructor#_#new#tearOff::X> /* erasure=self::F2|constructor#_#new#tearOff::X */ |
| return self::F2|constructor#<self::F2|constructor#_#new#tearOff::X>(foo); |
| static extension-type-member method F3|constructor#<X extends asy::Future<core::Object>>(self::F3|constructor#::X foo) → self::F3<self::F3|constructor#::X> /* erasure=self::F3|constructor#::X */ { |
| lowered final self::F3<self::F3|constructor#::X> /* erasure=self::F3|constructor#::X */ #this = foo; |
| return #this; |
| } |
| static extension-type-member method F3|constructor#_#new#tearOff<X extends asy::Future<core::Object>>(self::F3|constructor#_#new#tearOff::X foo) → self::F3<self::F3|constructor#_#new#tearOff::X> /* erasure=self::F3|constructor#_#new#tearOff::X */ |
| return self::F3|constructor#<self::F3|constructor#_#new#tearOff::X>(foo); |
| static extension-type-member method F4|constructor#<X extends asy::Future<core::num>>(self::F4|constructor#::X foo) → self::F4<self::F4|constructor#::X> /* erasure=self::F4|constructor#::X */ { |
| lowered final self::F4<self::F4|constructor#::X> /* erasure=self::F4|constructor#::X */ #this = foo; |
| return #this; |
| } |
| static extension-type-member method F4|constructor#_#new#tearOff<X extends asy::Future<core::num>>(self::F4|constructor#_#new#tearOff::X foo) → self::F4<self::F4|constructor#_#new#tearOff::X> /* erasure=self::F4|constructor#_#new#tearOff::X */ |
| return self::F4|constructor#<self::F4|constructor#_#new#tearOff::X>(foo); |
| static method test(self::E1% /* erasure=asy::Future<core::int>, declared=! */ e1, self::E2<asy::Future<core::String>>% /* erasure=asy::Future<core::String>, declared=! */ e2, self::E3% /* erasure=FutureOr<core::bool>, declared=! */ e3, self::E4<asy::Future<core::double>>% /* erasure=asy::Future<core::double>, declared=! */ e4, self::E5<core::Object>% /* erasure=core::Object, declared=! */ e5object, self::E5<asy::Future<core::num>>% /* erasure=asy::Future<core::num>, declared=! */ e5future, self::F1 /* erasure=asy::Future<core::int> */ f1, self::F2<asy::Future<core::num>> /* erasure=asy::Future<core::num> */ f2, self::F3<asy::Future<core::String>> /* erasure=asy::Future<core::String> */ f3, self::F4<asy::Future<core::int>> /* erasure=asy::Future<core::int> */ f4) → dynamic async /* emittedValueType= dynamic */ { |
| await invalid-expression "pkg/front_end/testcases/extension_types/issue53207.dart:21:9: Error: The 'await' expression can't be used for an expression with an extension type that is not a subtype of 'Future'. |
| await e1; // Error. |
| ^" in e1 /* runtimeCheckType= asy::Future<self::E1% /* erasure=asy::Future<core::int>, declared=! */> */ ; |
| await invalid-expression "pkg/front_end/testcases/extension_types/issue53207.dart:22:9: Error: The 'await' expression can't be used for an expression with an extension type that is not a subtype of 'Future'. |
| await e2; // Error. |
| ^" in e2 /* runtimeCheckType= asy::Future<self::E2<asy::Future<core::String>>% /* erasure=asy::Future<core::String>, declared=! */> */ ; |
| await invalid-expression "pkg/front_end/testcases/extension_types/issue53207.dart:23:9: Error: The 'await' expression can't be used for an expression with an extension type that is not a subtype of 'Future'. |
| await e3; // Error. |
| ^" in e3 /* runtimeCheckType= asy::Future<self::E3% /* erasure=FutureOr<core::bool>, declared=! */> */ ; |
| await invalid-expression "pkg/front_end/testcases/extension_types/issue53207.dart:24:9: Error: The 'await' expression can't be used for an expression with an extension type that is not a subtype of 'Future'. |
| await e4; // Error. |
| ^" in e4 /* runtimeCheckType= asy::Future<self::E4<asy::Future<core::double>>% /* erasure=asy::Future<core::double>, declared=! */> */ ; |
| await invalid-expression "pkg/front_end/testcases/extension_types/issue53207.dart:25:9: Error: The 'await' expression can't be used for an expression with an extension type that is not a subtype of 'Future'. |
| await e5object; // Error. |
| ^" in e5object /* runtimeCheckType= asy::Future<self::E5<core::Object>% /* erasure=core::Object, declared=! */> */ ; |
| await invalid-expression "pkg/front_end/testcases/extension_types/issue53207.dart:26:9: Error: The 'await' expression can't be used for an expression with an extension type that is not a subtype of 'Future'. |
| await e5future; // Error. |
| ^" in e5future /* runtimeCheckType= asy::Future<self::E5<asy::Future<core::num>>% /* erasure=asy::Future<core::num>, declared=! */> */ ; |
| await f1; |
| await f2; |
| await f3; |
| await f4; |
| } |