Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(311)

Unified Diff: compiler/java/com/google/dart/compiler/resolver/TopLevelElementBuilder.java

Issue 11308173: Issue 6824. Re-export of conflicting elements is error. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: compiler/java/com/google/dart/compiler/resolver/TopLevelElementBuilder.java
diff --git a/compiler/java/com/google/dart/compiler/resolver/TopLevelElementBuilder.java b/compiler/java/com/google/dart/compiler/resolver/TopLevelElementBuilder.java
index 3cb47c748f863b5073eba05d4464818746c6c814..89e204c072b5b16ef54f060f462f8b5749037b92 100644
--- a/compiler/java/com/google/dart/compiler/resolver/TopLevelElementBuilder.java
+++ b/compiler/java/com/google/dart/compiler/resolver/TopLevelElementBuilder.java
@@ -164,13 +164,25 @@ public class TopLevelElementBuilder {
fillInLibraryScope(lib, listener, processedObjects);
for (Element element : lib.getElement().getExportedElements()) {
String name = element.getName();
- // re-export only in not defined locally
+ // re-export only if not defined locally
if (scope.findLocalElement(name) != null) {
continue;
}
// check if show/hide combinators of "export" are satisfied
- if (export.isVisible(name)) {
- Elements.addExportedElement(library.getElement(), element);
+ if (!export.isVisible(name)) {
+ continue;
+ }
+ // do export
+ Element oldElement = Elements.addExportedElement(library.getElement(), element);
+ if (oldElement != null && oldElement.getEnclosingElement() instanceof LibraryElement) {
+ LibraryElement oldLibrary = (LibraryElement) oldElement.getEnclosingElement();
+ SourceInfo sourceInfo = export.getSourceInfo();
+ if (sourceInfo != null) {
+ String oldLibraryName = oldLibrary.getLibraryUnit().getName();
+ listener.onError(new DartCompilationError(sourceInfo,
+ ResolverErrorCode.DUPLICATE_EXPORTED_NAME, Elements.getUserElementTitle(oldElement),
+ oldLibraryName));
+ }
}
}
}

Powered by Google App Engine
This is Rietveld 408576698