// Copyright (c) 2015, 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.

// Evaluation of an if-null expression e of the form e1 ?? e2 is equivalent to
// the evaluation of the expression ((x) => x == null ? e2 : x)(e1).
//
// Therefore, e1 should be evaluated first; if it is non-null, e2 should not
// be evaluated.

import "package:expect/expect.dart";

bad() {
  throw new Exception();
}

bool firstExecuted = false;

first() {
  firstExecuted = true;
  return null;
}

second() {
  Expect.isTrue(firstExecuted);
  return 2;
}

main() {
  Expect.equals(1, 1 ?? bad());
  Expect.equals(2, first() ?? second());
}
