/*
 * 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 For each entry mapping key k to declaration d in N Sn an entry mapping k
 * to d is added to the exported namespace of L unless a top-level declaration with
 * the name k exists in L.
 * @description Checks that it is not a compile-time error if this library imports another which
 * re-exports itself and the names exported by that library are referenced in this one, because
 * the imported library's top-level declarations prevent second copies of them from being added
 * to the export namespace via an explicit export declaration so there's no ambiguity.
 * @author rodionov
 * @reviewer kaigorodov
 */

import "2_Exports_A06_t02_lib.dart";

main() {
  () {} is foo;
}
