library;
//
// Problems in library:
//
// pkg/front_end/testcases/general_nnbd_opt_out/redirecting_initializer_arguments_test.dart:14:46: Error: The argument type 'String' can't be assigned to the parameter type 'T'.
//   Foo.from(String _init) : this._internal(x: _init);
//                                              ^
//
import self as self;
import "dart:core" as core;

class Foo<T extends core::Object* = dynamic> extends core::Object {
  generic-covariant-impl field self::Foo::T* x;
  constructor from(core::String* _init) → self::Foo<self::Foo::T*>*
    : this self::Foo::_internal(x: let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/redirecting_initializer_arguments_test.dart:14:46: Error: The argument type 'String' can't be assigned to the parameter type 'T'.
  Foo.from(String _init) : this._internal(x: _init);
                                             ^" in _init as{TypeError} <BottomType>)
    ;
  constructor _internal({self::Foo::T* x = #C1}) → self::Foo<self::Foo::T*>*
    : self::Foo::x = x, super core::Object::•()
    ;
}
static method main() → void {}

constants  {
  #C1 = null
}
