blob: 21c02f2d2755a263c8f913e69c01c7fc2e560b00 [file] [log] [blame]
// Copyright (c) 2012, 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";
void f() {
return;
}
void f_null() {
return null;
}
void f_dyn_null() {
return null as dynamic;
}
void f_f() {
return f();
}
void test(int n, void func()) {
// Test as closure call.
{
bool got_type_error = false;
try {
func();
} on TypeError catch (error) {
got_type_error = true;
}
Expect.isFalse(got_type_error);
}
// Test as direct call.
{
bool got_type_error = false;
try {
var x;
switch (n) {
case 0:
x = f() as dynamic;
break;
case 1:
x = f_null() as dynamic;
break;
case 2:
x = f_dyn_null() as dynamic;
break;
case 3:
x = f_f() as dynamic;
break;
}
} on TypeError catch (error) {
got_type_error = true;
}
Expect.isFalse(got_type_error);
}
}
main() {
test(0, f);
test(1, f_null);
test(2, f_dyn_null);
test(3, f_f);
}