Index: pkg/analyzer/lib/src/dart/analysis/file_state.dart |
diff --git a/pkg/analyzer/lib/src/dart/analysis/file_state.dart b/pkg/analyzer/lib/src/dart/analysis/file_state.dart |
index ae15012012efb6b525db801c4304aae0248ca03f..509824c1b68a9c0f96a778fb051a48fe0d1fe829 100644 |
--- a/pkg/analyzer/lib/src/dart/analysis/file_state.dart |
+++ b/pkg/analyzer/lib/src/dart/analysis/file_state.dart |
@@ -101,8 +101,8 @@ class FileState { |
Set<FileState> _transitiveFiles; |
String _transitiveSignature; |
- List<TopLevelDeclaration> _topLevelDeclarations; |
- List<TopLevelDeclaration> _exportedTopLevelDeclarations; |
+ Map<String, TopLevelDeclaration> _topLevelDeclarations; |
+ Map<String, TopLevelDeclaration> _exportedTopLevelDeclarations; |
FileState._(this._fsState, this.path, this.uri, this.source); |
@@ -135,45 +135,41 @@ class FileState { |
/** |
* Return [TopLevelDeclaration]s exported from the this library file. |
Paul Berry
2016/12/02 16:34:42
Can you update this comment to explain that the ke
|
*/ |
- List<TopLevelDeclaration> get exportedTopLevelDeclarations { |
+ Map<String, TopLevelDeclaration> get exportedTopLevelDeclarations { |
if (_exportedTopLevelDeclarations == null) { |
- _exportedTopLevelDeclarations = <TopLevelDeclaration>[]; |
+ _exportedTopLevelDeclarations = <String, TopLevelDeclaration>{}; |
Set<FileState> seenLibraries = new Set<FileState>(); |
/** |
* Compute [TopLevelDeclaration]s exported from the [library]. |
*/ |
- List<TopLevelDeclaration> computeExported(FileState library) { |
+ Map<String, TopLevelDeclaration> computeExported(FileState library) { |
var declarations = <String, TopLevelDeclaration>{}; |
if (seenLibraries.add(library)) { |
// Append the library declarations. |
- for (TopLevelDeclaration t in library.topLevelDeclarations) { |
- declarations[t.name] = t; |
- } |
+ declarations.addAll(library.topLevelDeclarations); |
for (FileState part in library.partedFiles) { |
- for (TopLevelDeclaration t in part.topLevelDeclarations) { |
- declarations[t.name] = t; |
- } |
+ declarations.addAll(part.topLevelDeclarations); |
} |
// Append the exported declarations. |
for (int i = 0; i < library._exportedFiles.length; i++) { |
- List<TopLevelDeclaration> exported = |
+ Map<String, TopLevelDeclaration> exported = |
computeExported(library._exportedFiles[i]); |
- for (TopLevelDeclaration t in exported) { |
+ exported.forEach((String name, TopLevelDeclaration t) { |
if (!declarations.containsKey(t.name) && |
Brian Wilkerson
2016/12/02 16:32:17
Somewhat off topic, but if we append the exported
|
library._exportFilters[i].accepts(t.name)) { |
declarations[t.name] = t; |
} |
- } |
+ }); |
} |
// We're done with this library. |
seenLibraries.remove(library); |
} |
- return declarations.values.toList(); |
+ return declarations; |
} |
_exportedTopLevelDeclarations = computeExported(this); |
@@ -226,13 +222,13 @@ class FileState { |
/** |
* Return public top-level declarations declared in the file. |
Paul Berry
2016/12/02 16:34:42
Ditto
|
*/ |
- List<TopLevelDeclaration> get topLevelDeclarations { |
+ Map<String, TopLevelDeclaration> get topLevelDeclarations { |
if (_topLevelDeclarations == null) { |
- _topLevelDeclarations = <TopLevelDeclaration>[]; |
+ _topLevelDeclarations = <String, TopLevelDeclaration>{}; |
void addDeclaration(TopLevelDeclarationKind kind, String name) { |
if (!name.startsWith('_')) { |
- _topLevelDeclarations.add(new TopLevelDeclaration(kind, name)); |
+ _topLevelDeclarations[name] = new TopLevelDeclaration(kind, name); |
} |
} |