Skip to content

Meta-issue: using a generic function type as a type argument or as a bound is an error #29484

Closed
@leafpetersen

Description

@leafpetersen

It is a static error to use a generic function as a type argument, or as a bound to a generic.

  • Issue for specification
  • Issue for analyzer implementation

Example:

typedef F = T Function<T>(T x);
typedef G<T> = T Function(T x);

class A<T extends F> {} // error
class B<T extends G<int>> {} // ok
void f<T extends F>() {} // errror
void g<T extends G<int>> {} // ok

void main() {
  var a1 = <F>[]; // error
  var a2 = <G>[]; // ok, G<dynamic>
  var a3 = <G<int>>[]; // ok
  var a4 = g<F>(); // error
  var a5 = g<G>(); // ok G<dynamic>
}

Metadata

Metadata

Assignees

Labels

area-languageDart language related items (some items might be better tracked at github.com/dart-lang/language).language-strong-mode-polish

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions