| library /*isNonNullableByDefault*/; |
| // |
| // Problems in library: |
| // |
| // pkg/front_end/testcases/general/issue39344.dart:19:12: Error: A value of type 'List<T>' can't be assigned to a variable of type 'List<B>'. |
| // - 'List' is from 'dart:core'. |
| // - 'B' is from 'pkg/front_end/testcases/general/issue39344.dart'. |
| // xs = ys; |
| // ^ |
| // |
| // pkg/front_end/testcases/general/issue39344.dart:31:13: Error: A value of type 'List<List<T>>' can't be assigned to a variable of type 'List<List<B>>'. |
| // - 'List' is from 'dart:core'. |
| // - 'B' is from 'pkg/front_end/testcases/general/issue39344.dart'. |
| // xss = yss; |
| // ^ |
| // |
| import self as self; |
| import "dart:core" as core; |
| |
| class A extends core::Object { |
| synthetic constructor •() → self::A |
| : super core::Object::•() |
| ; |
| } |
| class B extends self::A { |
| synthetic constructor •() → self::B |
| : super self::A::•() |
| ; |
| } |
| class Class<T extends self::A> extends core::Object { |
| synthetic constructor •() → self::Class<self::Class::T> |
| : super core::Object::•() |
| ; |
| method method1a(covariant-by-class self::Class::T t) → void { |
| if(t is{ForNonNullableByDefault} self::B) { |
| core::List<self::Class::T> ys = core::_GrowableList::_literal1<self::Class::T>(t{self::Class::T & self::B /* '!' & '!' = '!' */}); |
| self::xs = invalid-expression "pkg/front_end/testcases/general/issue39344.dart:19:12: Error: A value of type 'List<T>' can't be assigned to a variable of type 'List<B>'. |
| - 'List' is from 'dart:core'. |
| - 'B' is from 'pkg/front_end/testcases/general/issue39344.dart'. |
| xs = ys; |
| ^" in ys as{TypeError,ForNonNullableByDefault} core::List<self::B>; |
| } |
| } |
| method method1b(covariant-by-class self::Class::T t) → void { |
| if(t is{ForNonNullableByDefault} self::B) { |
| core::List<core::List<self::Class::T>> yss = core::_GrowableList::_literal1<core::List<self::Class::T>>(core::_GrowableList::_literal1<self::Class::T>(t{self::Class::T & self::B /* '!' & '!' = '!' */})); |
| self::xss = invalid-expression "pkg/front_end/testcases/general/issue39344.dart:31:13: Error: A value of type 'List<List<T>>' can't be assigned to a variable of type 'List<List<B>>'. |
| - 'List' is from 'dart:core'. |
| - 'B' is from 'pkg/front_end/testcases/general/issue39344.dart'. |
| xss = yss; |
| ^" in yss as{TypeError,ForNonNullableByDefault} core::List<core::List<self::B>>; |
| } |
| } |
| method method2a(covariant-by-class self::Class::T t) → void { |
| dynamic alias; |
| if(t is{ForNonNullableByDefault} self::B) { |
| core::List<self::Class::T> ys = core::_GrowableList::_literal1<self::Class::T>(t{self::Class::T & self::B /* '!' & '!' = '!' */}); |
| alias = ys; |
| self::xs = alias as{TypeError,ForDynamic,ForNonNullableByDefault} core::List<self::B>; |
| } |
| } |
| method method2b(covariant-by-class self::Class::T t) → void { |
| dynamic alias; |
| if(t is{ForNonNullableByDefault} self::B) { |
| core::List<core::List<self::Class::T>> yss = core::_GrowableList::_literal1<core::List<self::Class::T>>(core::_GrowableList::_literal1<self::Class::T>(t{self::Class::T & self::B /* '!' & '!' = '!' */})); |
| alias = yss; |
| self::xss = alias as{TypeError,ForDynamic,ForNonNullableByDefault} core::List<core::List<self::B>>; |
| } |
| } |
| } |
| late static field core::List<self::B> xs; |
| late static field core::List<core::List<self::B>> xss; |
| static method main() → void { |
| self::throws(() → void { |
| new self::Class::•<self::A>().{self::Class::method2a}(new self::B::•()){(self::A) → void}; |
| core::print(self::xs.{core::Object::runtimeType}{core::Type}); |
| }); |
| self::throws(() → void { |
| new self::Class::•<self::A>().{self::Class::method2b}(new self::B::•()){(self::A) → void}; |
| core::print(self::xs.{core::Object::runtimeType}{core::Type}); |
| }); |
| } |
| static method errors() → void { |
| new self::Class::•<self::A>().{self::Class::method1a}(new self::B::•()){(self::A) → void}; |
| new self::Class::•<self::A>().{self::Class::method1b}(new self::B::•()){(self::A) → void}; |
| } |
| static method throws(() → void f) → void { |
| try { |
| f(){() → void}; |
| } |
| on core::Object catch(final core::Object e) { |
| core::print(e); |
| return; |
| } |
| throw "Expected throws"; |
| } |