// 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 variable declaration statement of one of the forms
 * var v = e;, T v = e;, const v = e;, const T v = e;, final v = e; or
 * final T v = e; proceeds as follows:
 * The expression e is evaluated to an object o. Then, the variable v is set
 * to o.
 * @description Checks that an expression e is evaluated correctly in a multiple
 * variable declaration statement.
 * @author msyabro
 */
import '../../../Utils/expect.dart';

foo(p1) {
  return p1 + 1;
}

bar(p1, p2) {
  return p1 - p2;
}

check(p1) {
  var x, y = foo(p1 + 2);
  var a = foo(2), b;
  var c = bar(p1, p1), d = bar(p1, p1 - 1);

  Expect.equals(null, x);
  Expect.equals(p1 + 3, y);
  Expect.equals(3, a);
  Expect.equals(null, b);
  Expect.equals(0, c);
  Expect.equals(1, d);
}

main() {
  check(1);
}
