blob: c6bab0e3a5d741ef262e85e9863475934487219e [file] [log] [blame]
// Copyright (c) 2016, 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 test for type checks involving the void type.
// @dart = 2.9
import "package:expect/expect.dart";
var _str = new StringBuffer();
T run<T>(T f()) {
_str.write("+");
var t = f();
_str.write("-");
return t;
}
void writeV() {
_str.write("V");
}
main() {
{
var x = run<dynamic>(writeV);
Expect.equals('+V-', _str.toString());
Expect.equals(null, x);
_str.clear();
var y = run(writeV) as dynamic;
Expect.equals('+V-', _str.toString());
Expect.equals(null, y);
_str.clear();
}
// implicit cast
{
dynamic d = writeV;
var x = run<dynamic>(d);
Expect.equals('+V-', _str.toString());
Expect.equals(null, x);
_str.clear();
var y = run(d);
Expect.equals('+V-', _str.toString());
Expect.equals(null, y);
_str.clear();
}
// dynamic dispatch
{
dynamic d = run;
var x = d<dynamic>(writeV);
Expect.equals('+V-', _str.toString());
Expect.equals(null, x);
_str.clear();
var y = d(writeV);
Expect.equals('+V-', _str.toString());
Expect.equals(null, y);
_str.clear();
}
}