library;
//
// Problems in library:
//
// pkg/front_end/testcases/general/issue55152_3.dart:11:21: Error: Not a constant expression.
//       {dynamic x = (({dynamic y = const [Alias2.impl()]}) =>
//                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
import self as self;
import "dart:core" as core;

typedef Alias<X extends core::Object? = dynamic> = self::Const<X%>;
typedef Alias2<X extends core::Object? = dynamic> = self::Const<X%>;
class Class extends core::Object /*hasConstConstructor*/  {
  const constructor named({dynamic x = invalid-expression "pkg/front_end/testcases/general/issue55152_3.dart:11:21: Error: Not a constant expression.
      {dynamic x = (({dynamic y = const [Alias2.impl()]}) =>
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"}) → self::Class
    : super core::Object::•()
    ;
}
abstract class Const<X extends core::Object? = dynamic> extends core::Object {
  static factory impl<X extends core::Object? = dynamic>() → self::Const<self::Const::impl::X%> /* redirection-target: self::_ConstImpl::•<self::Const::impl::X%>*/
    return new self::_ConstImpl::•<self::Const::impl::X%>();
}
class _ConstImpl<T extends core::Object? = dynamic> extends core::Object implements self::Const<self::_ConstImpl::T%> /*hasConstConstructor*/  {
  const constructor •() → self::_ConstImpl<self::_ConstImpl::T%>
    : super core::Object::•()
    ;
}
