| /* |
| * Copyright (c) 2011, 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. |
| */ |
| /** |
| * @assertion If a generic type is used but type arguments are not provided, |
| * then the type arguments default to the unknown type. |
| * @description Indirectly verifies the assertion: checks that various unrelated |
| * types are subtypes of an omitted type argument. |
| * @author iefremov |
| * @reviewer rodionov |
| * @note this test would also pass if such type arguments defaulted to Object |
| * type. Object seems to be indistinguishable from dynamic as far as subtype |
| * testing is concerned. |
| */ |
| import "../../../Utils/expect.dart"; |
| |
| class DynamicChecker<S, T> { |
| DynamicChecker() { |
| int func(int x) => 42; |
| var foo; |
| |
| Expect.isTrue(foo is S); |
| Expect.isTrue(new Object() is S); |
| Expect.isTrue(1 is S); |
| Expect.isTrue(() {} is S); |
| Expect.isTrue(func is S); |
| |
| Expect.isTrue(foo is T); |
| Expect.isTrue(new Object() is T); |
| Expect.isTrue(1 is T); |
| Expect.isTrue(() {} is T); |
| Expect.isTrue(func is T); |
| } |
| } |
| |
| main() { |
| new DynamicChecker(); |
| } |