// 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.

/*@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=<BottomType> */ (/*@ type=Object* */ x) =>
      throw "not implemented");
}

main() {}
