/*
 * 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 Dart is lexically scoped. Scopes may nest. A name or declaration d is
 * available in scope S if d is in the namespace induced by S or if d is available
 * in the lexically enclosing scope of S. We say that a name or declaration d is in
 * scope if d is available in the current scope.
 * It is a compile-time error if there is more than one entity with the same name 
 * declared in the same scope, with the exception of the operator -, where both 
 * a unary and a binary version may coexist.
 * @description Checks that names from different lexical scopes that aren't nested, do not conflict.
 * @author msyabro
 * @reviewer iefremov
 */

class A {
  method() {
    {
      var i;
    }

    for (var i = 0; i < 10; i++) {}

    void f(i) {}
  }
}

main() {
  l() {
    var local;
  };
  {
    var local = 1;
  }
}
