| // Copyright (c) 2017, 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=2.9 |
| /*@testedFeatures=inference*/ |
| library test; |
| |
| var h = null; |
| void foo(int f(Object _)) {} |
| |
| test() { |
| var /*@ type=(Object*) ->* Null */ f = /*@ returnType=Null */ (Object x) => null; |
| String y = /*info:DYNAMIC_CAST*/ f(42); |
| |
| f = /*@ returnType=Null */ (/*@ type=Object* */ x) => 'hello'; |
| |
| var /*@ type=dynamic */ g = null; |
| g = 'hello'; |
| (/*info:DYNAMIC_INVOKE*/ g.foo()); |
| |
| h = 'hello'; |
| (/*info:DYNAMIC_INVOKE*/ h.foo()); |
| |
| foo(/*@ returnType=Null */ (/*@ type=Object* */ x) => null); |
| foo(/*@ returnType=Null */ (/*@ type=Object* */ x) => |
| throw "not implemented"); |
| } |
| |
| main() {} |