// Copyright (c) 2016, 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 Consider a return statement s of the form return e?;
/// ...
/// It is a compile-time error if s is
///  return;, unless T is void, dynamic, or Null
///
/// @description Checks that a compile error occurs if a statement of the form
/// "return;" is used in an asynchronous instance method whose declared return
/// type may not be assigned to Future<Null>.
///
/// @Issue 42459
/// @author a.semenov@unipro.ru

import 'dart:async';

class C {
  C() { }
  Future<int> foo() async {
    if (true) {
      return 1;
    } else {
      return;
//    ^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
    }
  }
}

main() {
  new C().foo();
}
