blob: b4a7f704d4cb97eb83bb7dd5b84747afbbc7f4b9 [file] [log] [blame]
// Copyright (c) 2018, 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.
// Based on tests\language_2\type_variable_function_type_test.dart
import 'package:expect/expect.dart';
typedef T Func<T>();
/*class: Foo:direct,explicit=[Foo.S Function()],needsArgs*/
class Foo<S> {
m(x) => x is Func<S>;
}
/*class: Bar:needsArgs*/
class Bar<T> {
f() {
/*needsSignature*/ T local() => null;
return local;
}
}
void main() {
dynamic x = new Foo<List<String>>();
if (new DateTime.now().millisecondsSinceEpoch == 42) x = new Foo<int>();
Expect.isFalse(x.m(new Bar<String>().f()));
Expect.isTrue(x.m(new Bar<List<String>>().f()));
}