blob: 556327c7030f5f1a104d7c2f6bfe9b35c3605d8a [file] [log] [blame]
// Copyright (c) 2020, 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.
//
// @dart = 2.9
import 'dart:async';
import 'dart:isolate';
import 'package:expect/expect.dart';
class A<T> {}
main(args) async {
final x = A<void Function()>();
{
final caughtErrorCompleter = Completer<String>();
await runZonedGuarded(() {
Isolate.spawn(isolate, x);
}, (e, s) {
caughtErrorCompleter.complete(e.toString());
});
Expect.equals(
await caughtErrorCompleter.future,
"Invalid argument(s): Illegal argument in isolate message : "
"(object is a FunctionType)");
}
void genericFunc<T>() async {
final y = A<void Function(T)>();
final caughtErrorCompleter = Completer<String>();
await runZoned(() {
Isolate.spawn(isolate, y);
}, onError: (e) {
caughtErrorCompleter.complete(e.toString());
});
Expect.equals(
await caughtErrorCompleter.future,
"Invalid argument(s): Illegal argument in isolate message : "
"(object is a FunctionType)");
}
await genericFunc<int>();
}
void isolate(A foo) async {
print('Tick: ${foo}');
}