dart-sdk/tests/language/function_subtype/cast2_test.dart
Erik Ernst 3a7eeb6315 Rename is{Strong,Weak}Mode to has{Sound,Unsound}NullSafety
Change-Id: If3912d75c5f89a741299b2fae4299d01ac928eec
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/170424
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
Reviewed-by: Michael Thomsen <mit@google.com>
Reviewed-by: Mayank Patke <fishythefish@google.com>
Commit-Queue: Erik Ernst <eernst@google.com>
2020-11-05 14:26:53 +00:00

34 lines
1 KiB
Dart

// Copyright (c) 2013, 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 program for constructors and initializers.
// Check function subtyping casts.
import 'package:expect/expect.dart';
typedef void Foo<T>(T t);
typedef void Bar(int i);
class Class<T> {
test(bool expectedResult, var o, String typeName) {
if (expectedResult) {
Expect.isNotNull(o as Foo<T>, "bar as Foo<$typeName>");
} else {
Expect.throws(() => o as Foo<T>, (e) => true, "bar as Foo<$typeName>");
}
Expect.isNotNull(o as Bar, "bar as Bar");
}
}
void bar(int i) {}
void main() {
new Class<dynamic>().test(false, bar, "dynamic");
new Class<Object>().test(false, bar, "Object");
new Class<Null>().test(hasUnsoundNullSafety, bar, "Null");
new Class<Never>().test(true, bar, "Never");
new Class<int>().test(true, bar, "int");
new Class<bool>().test(false, bar, "bool");
}