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

Unified Diff: pkg/kernel/lib/binary/ast_to_binary.dart

Issue 2852373002: Add import/export declaration AST node boilerplate to kernel. (Closed)
Patch Set: Merge and adapt C++ code to upstream changes Created 3 years, 7 months 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
« no previous file with comments | « pkg/kernel/lib/binary/ast_from_binary.dart ('k') | pkg/kernel/lib/text/ast_to_text.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/kernel/lib/binary/ast_to_binary.dart
diff --git a/pkg/kernel/lib/binary/ast_to_binary.dart b/pkg/kernel/lib/binary/ast_to_binary.dart
index 0edfdd886af300e6086061ec0f33ef07e236a8f0..f82c20209b30e70e64b7d84092209a481df9829e 100644
--- a/pkg/kernel/lib/binary/ast_to_binary.dart
+++ b/pkg/kernel/lib/binary/ast_to_binary.dart
@@ -21,7 +21,8 @@ class BinaryPrinter extends Visitor {
final TypeParameterIndexer _typeParameterIndexer = new TypeParameterIndexer();
final StringIndexer _stringIndexer = new StringIndexer();
final StringIndexer _sourceUriIndexer = new StringIndexer();
- Map<DeferredImport, int> _deferredImportIndexer = <DeferredImport, int>{};
+ Map<LibraryDependency, int> _libraryDependencyIndex =
+ <LibraryDependency, int>{};
final BufferedSink _sink;
@@ -92,6 +93,10 @@ class BinaryPrinter extends Visitor {
writeUInt30(_stringIndexer[string]);
}
+ void writeStringReferenceList(List<String> strings) {
+ writeList(strings, writeStringReference);
+ }
+
void writeUriReference(String string) {
int index = _sourceUriIndexer[string];
if (index == null) {
@@ -179,10 +184,10 @@ class BinaryPrinter extends Visitor {
}
}
- void writeDeferredImportReference(DeferredImport node) {
- int index = _deferredImportIndexer[node];
+ void writeLibraryDependencyReference(LibraryDependency node) {
+ int index = _libraryDependencyIndex[node];
if (index == null) {
- throw 'Reference to deferred import $node out of scope';
+ throw 'Reference to library dependency $node out of scope';
}
writeUInt30(index);
}
@@ -250,28 +255,36 @@ class BinaryPrinter extends Visitor {
writeStringReference(node.name ?? '');
// TODO(jensj): We save (almost) the same URI twice.
writeUriReference(node.fileUri ?? '');
- writeDeferredImports(node);
+ writeLibraryDependencies(node);
writeNodeList(node.typedefs);
writeNodeList(node.classes);
writeNodeList(node.fields);
writeNodeList(node.procedures);
}
- void writeDeferredImports(Library library) {
- _deferredImportIndexer = library.deferredImports.isEmpty
- ? const <DeferredImport, int>{}
- : <DeferredImport, int>{};
- writeUInt30(library.deferredImports.length);
- for (int i = 0; i < library.deferredImports.length; ++i) {
- var importNode = library.deferredImports[i];
- _deferredImportIndexer[importNode] = i;
- writeDeferredImport(importNode);
+ void writeLibraryDependencies(Library library) {
+ _libraryDependencyIndex = library.dependencies.isEmpty
+ ? const <LibraryDependency, int>{}
+ : <LibraryDependency, int>{};
+ writeUInt30(library.dependencies.length);
+ for (int i = 0; i < library.dependencies.length; ++i) {
+ var importNode = library.dependencies[i];
+ _libraryDependencyIndex[importNode] = i;
+ writeLibraryDependency(importNode);
}
}
- void writeDeferredImport(DeferredImport node) {
- writeLibraryReference(node.importedLibrary);
- writeStringReference(node.name);
+ void writeLibraryDependency(LibraryDependency node) {
+ writeByte(node.flags);
+ writeNodeList(node.annotations);
+ writeLibraryReference(node.targetLibrary);
+ writeStringReference(node.name ?? '');
+ writeNodeList(node.combinators);
+ }
+
+ void visitCombinator(Combinator node) {
+ writeByte(node.isShow ? 1 : 0);
+ writeStringReferenceList(node.names);
}
void visitTypedef(Typedef node) {
@@ -736,12 +749,12 @@ class BinaryPrinter extends Visitor {
visitLoadLibrary(LoadLibrary node) {
writeByte(Tag.LoadLibrary);
- writeDeferredImportReference(node.import);
+ writeLibraryDependencyReference(node.import);
}
visitCheckLibraryIsLoaded(CheckLibraryIsLoaded node) {
writeByte(Tag.CheckLibraryIsLoaded);
- writeDeferredImportReference(node.import);
+ writeLibraryDependencyReference(node.import);
}
visitVectorCreation(VectorCreation node) {
@@ -1227,8 +1240,18 @@ class StringIndexer extends RecursiveVisitor<Null> {
node.visitChildren(this);
}
- visitDeferredImport(DeferredImport node) {
+ visitLibraryDependency(LibraryDependency node) {
+ putOptional(node.name);
+ node.visitChildren(this);
+ }
+
+ visitCombinator(Combinator node) {
+ node.names.forEach(put);
+ }
+
+ visitTypedef(Typedef node) {
put(node.name);
+ node.visitChildren(this);
}
visitClass(Class node) {
« no previous file with comments | « pkg/kernel/lib/binary/ast_from_binary.dart ('k') | pkg/kernel/lib/text/ast_to_text.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698