// 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 Executing a return statement return e; proceeds as follows:
/// First the expression e is evaluated, producing an object o. Next:
/// • The current return value is set to o and the current exception and active
///   stack trace become undefined.
/// • Let c be the finally clause of the innermost enclosing try-finally
///   statement, if any. If c is defined, let h be the handler induced by c. If
///   h is defined, control is transferred to h.
/// • Otherwise execution of the current method terminates.
/// @description Checks that a finally statement is executed if the control
/// is transferred from a try block using a return statement.
/// @author iefremov

import '../../../Utils/expect.dart';

foo() {
  try {
    return 1;
  } finally {
    return 2;
  }
}

main() {
  Expect.equals(2, foo(), "A finally clause was not executed correctly!");
}
