Skip to content

Support for type arguments in redirecting factory constuctors #31605

Closed
@scheglov

Description

@scheglov

The kernel I get from front-end has invalid-expression and does not include type arguments.

class A<T> implements B<T> {
  A(int a);
  A.named(double a);
}
class B<U> {
  factory B.one(int b) = A<U>;
  factory B.two(double b) = A<U>.named;
}
library;
import self as self;
import "dart:core" as core;

class A<T extends core::Object> extends core::Object implements self::B<self::A::T> {
  constructor •(core::int a) → void
    : super core::Object::•()
    ;
  constructor named(core::double a) → void
    : super core::Object::•()
    ;
}
class B<U extends core::Object> extends core::Object {
  static field dynamic _redirecting# = <dynamic>[self::B::one, self::B::two];
  static factory one<U extends core::Object>(core::int b) → self::B<self::B::one::U>
    let dynamic #redirecting_factory = self::A::• in invalid-expression;
  static factory two<U extends core::Object>(core::double b) → self::B<self::B::two::U>
    let dynamic #redirecting_factory = self::A::named in invalid-expression;
}

See also #30258

Metadata

Metadata

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions