| // 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 If a name N is referenced by a library L and N is introduced into
|
| * the top level scope L by more than one import, and not all the imports denote
|
| * the same declaration, then:
|
| * • A static warning occurs.
|
| * • If N is referenced as a function, getter or setter, a NoSuchMethodError is
|
| * raised.
|
| * • If N is referenced as a type, it is treated as a malformed type.
|
| * It is neither an error nor a warning if N is introduced by two or more
|
| * imports but never referred to.
|
| * @description Checks that it is neither error nor warning if a library
|
| * imports two other libraries exporting the same name (both via re-export of a
|
| * third library), references that name in an explicit type test and other
|
| * expressions, but it's hidden in one of the import declarations of L (so
|
| * there's actually no name clash).
|
| * @static-clean
|
| * @author rodionov
|
| */
|
|
|
| import "same_name_t20_p1_lib.dart" hide foo, Bar, id;
|
| import "same_name_t20_p2_lib.dart";
|
|
|
| class Foo2 extends foo {}
|
|
|
| class Foo3<T extends foo> {}
|
|
|
| main() {
|
| 1 is foo;
|
| null as foo?;
|
| new foo();
|
| new Foo2();
|
| new Foo3<Foo2>();
|
| Bar.BAR;
|
| Bar.BAR = 11;
|
| id is foo;
|
| }
|