blob: 7f1e446e703e41b46c061f6260104767ad071566 [file] [log] [blame]
// Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
/// @assertion When f is an expression whose static type is a generic function
/// type, and f<int> is an explicit generic function instantiation that is not a
/// compile-time error, expressions like f<int>.m() and f<int>.m can be used to
/// invoke or tear off members of the given function object (that is, members of
/// Object, plus the given call method, plus any applicable extension methods).
///
/// @description Checks that if f<int> is an explicit generic function
/// instantiation that is not a compile-time error, expressions like f<int>.m()
/// @author sgrekhov@unipro.ru
// SharedOptions=--enable-experiment=constructor-tearoffs
import "../../Utils/expect.dart";
T f<T>(T t) => t;
main() {
var v = f<int>;
Expect.equals(v.toString(), f<int>.toString());
Expect.equals(v.call(42), f<int>.call(42));
}