// 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.
// Test that if, while etc create an implicit scope if the body
// is not a compound statement.

// @dart = 2.9

import "package:expect/expect.dart";

class ImplicitScopeTest {
  static bool alwaysTrue() {
    return 1 + 1 == 2;
  }

  static testMain() {
    var a = "foo";
    var b;
    if (alwaysTrue())
      var a = "bar";
    else
      var b = a;
    Expect.equals("foo", a);
    Expect.equals(null, b);

    while (!alwaysTrue()) var a = "bar", b = "baz";
    Expect.equals("foo", a);
    Expect.equals(null, b);

    for (int i = 0; i < 10; i++) var a = "bar", b = "baz";
    Expect.equals("foo", a);
    Expect.equals(null, b);

    do var a = "bar", b = "baz"; while ("black" == "white");
    Expect.equals("foo", a);
    Expect.equals(null, b);
  }
}

main() {
  ImplicitScopeTest.testMain();
}
