| // 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. |
| |
| import "package:expect/expect.dart"; |
| |
| var staticClosure; |
| int staticMethod() => 42; |
| |
| class B { |
| var instanceClosure; |
| var nullField; |
| int instanceMethod() => 43; |
| } |
| |
| checkUntyped(closure) { |
| Expect.isTrue(closure is Function); |
| } |
| |
| checkTyped(int closure()) { |
| Expect.isTrue(closure is Function); |
| } |
| |
| checkTypedNull(int closure()?) { |
| Expect.isFalse(closure is Function); |
| } |
| |
| checkUntypedNull(closure) { |
| Expect.isFalse(closure is Function); |
| } |
| |
| main() { |
| staticClosure = () => 44; |
| B b = new B(); |
| b.instanceClosure = () => 45; |
| |
| closureStatement() => 46; |
| var closureExpression = () => 47; |
| |
| checkUntyped(staticClosure); |
| checkTyped(staticClosure); |
| |
| checkUntyped(staticMethod); |
| checkTyped(staticMethod); |
| |
| checkUntyped(b.instanceClosure); |
| checkTyped(b.instanceClosure); |
| |
| checkUntyped(b.instanceMethod); |
| checkTyped(b.instanceMethod); |
| |
| checkUntyped(closureStatement); |
| checkTyped(closureStatement); |
| |
| checkUntyped(closureExpression); |
| checkTyped(closureExpression); |
| |
| checkTypedNull(b.nullField); |
| checkUntypedNull(b.nullField); |
| } |