library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/regress/issue_35266.dart:8:11: Error: 'B.foo' is already declared in this scope.
//   factory B.foo() = B<T>;
//           ^^^^^
// pkg/front_end/testcases/regress/issue_35266.dart:7:11: Context: Previous declaration of 'B.foo'.
//   factory B.foo() = B<T>;
//           ^^^^^
//
// pkg/front_end/testcases/regress/issue_35266.dart:13:21: Error: Can't use 'B.foo' because it is declared more than once.
//   factory C.bar() = B<K>.foo;
//                     ^
//
import self as self;
import "dart:core" as core;

class B<T extends core::Object? = dynamic> extends self::C<self::B::T%> {
  static final field dynamic _redirecting# = <dynamic>[self::B::foo]/*isLegacy*/;
  constructor •() → self::B<self::B::T%>
    ;
  static factory foo<T extends core::Object? = dynamic>() → self::B<self::B::foo::T%>
    return new self::B::•<self::B::foo::T%>();
}
class C<K extends core::Object? = dynamic> extends core::Object {
  static final field dynamic _redirecting# = <dynamic>[self::C::bar]/*isLegacy*/;
  constructor •() → self::C<self::C::K%>
    ;
  static factory bar<K extends core::Object? = dynamic>() → self::C<self::C::bar::K%>
    return invalid-expression "pkg/front_end/testcases/regress/issue_35266.dart:13:21: Error: Can't use 'B.foo' because it is declared more than once.
  factory C.bar() = B<K>.foo;
                    ^";
}
static method main() → dynamic
  ;


Extra constant evaluation status:
Evaluated: ConstructorTearOff @ org-dartlang-testcase:///issue_35266.dart:5:7 -> ConstructorTearOffConstant(B.foo)
Evaluated: ConstructorTearOff @ org-dartlang-testcase:///issue_35266.dart:11:7 -> ConstructorTearOffConstant(C.bar)
Extra constant evaluation: evaluated: 5, effectively constant: 2
