library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/general/callable_type_variable.dart:25:19: Error: Too few positional arguments: 1 required, 0 given.
//     var v1 = field(); // error
//                   ^
//
// pkg/front_end/testcases/general/callable_type_variable.dart:28:24: Error: Too few positional arguments: 1 required, 0 given.
//     var v4 = field.call(); // error
//                        ^
//
import self as self;
import "dart:core" as core;

class Class1<T extends core::Function> extends core::Object {
  covariant-by-class field self::Class1::T field;
  constructor •(self::Class1::T field) → self::Class1<self::Class1::T>
    : self::Class1::field = field, super core::Object::•()
    ;
  method method() → dynamic {
    dynamic v1 = this.{self::Class1::field}{self::Class1::T}();
    dynamic v2 = let final core::int #t1 = 0 in this.{self::Class1::field}{self::Class1::T}(#t1);
    self::Class1::T v3 = this.{self::Class1::field}{self::Class1::T}.call;
    dynamic v4 = this.{self::Class1::field}{self::Class1::T}();
    dynamic v5 = this.{self::Class1::field}{self::Class1::T}(0);
  }
}
class Class2<T extends (core::int) → core::String> extends core::Object {
  covariant-by-class field self::Class2::T field;
  constructor •(self::Class2::T field) → self::Class2<self::Class2::T>
    : self::Class2::field = field, super core::Object::•()
    ;
  method method() → dynamic {
    invalid-type v1 = invalid-expression "pkg/front_end/testcases/general/callable_type_variable.dart:25:19: Error: Too few positional arguments: 1 required, 0 given.
    var v1 = field(); // error
                  ^" in this.{self::Class2::field}{self::Class2::T}{<inapplicable>}.();
    core::String v2 = let final core::int #t2 = 0 in this.{self::Class2::field}{self::Class2::T}(#t2){(core::int) → core::String};
    self::Class2::T v3 = this.{self::Class2::field}{self::Class2::T}.call;
    invalid-type v4 = invalid-expression "pkg/front_end/testcases/general/callable_type_variable.dart:28:24: Error: Too few positional arguments: 1 required, 0 given.
    var v4 = field.call(); // error
                       ^" in this.{self::Class2::field}{self::Class2::T}{<inapplicable>}.();
    core::String v5 = this.{self::Class2::field}{self::Class2::T}(0){(core::int) → core::String};
  }
}
static method main() → dynamic {}
