// 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 On the other hand, it is possible to return the result of a void
/// method from within a void method. One can also return null; or a value of
/// type Dynamic. Returning any other result will cause a type warning. A compile
/// time error would arise if a non-null object was returned from a void method
/// (since no object has runtime type dynamic).
/// @description Checks that returning a non-null value with non-dynamic static
/// type from within a void method produces compile error.
/// @author rodionov


void f() {}

void foo() {
  return f;
//       ^
// [analyzer] unspecified
// [cfe] unspecified
}

main() {
  foo();
}
