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

Unified Diff: dart/sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart

Issue 16101007: Implement LibraryMirror.metadata. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 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
Index: dart/sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart
diff --git a/dart/sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart b/dart/sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart
index 6ecbfd5099e1e4ab723fd545a494966e5544cb0b..683718e331ef71bb10d13f61f3394af35715f4e9 100644
--- a/dart/sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart
+++ b/dart/sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart
@@ -2940,6 +2940,14 @@ if (typeof document !== "undefined" && document.readyState !== "complete") {
if (compiler.enableMinification) buffer.write('\n');
}
+ jsAst.Fun buildMetadataFunction(Element element) {
kasperl 2013/05/29 06:25:06 Add a comment that explains what the metadata func
ahe 2013/05/30 11:41:15 Done.
+ var metadata = [];
+ for (Link link = element.metadata; !link.isEmpty; link = link.tail) {
+ metadata.add(constantReference(link.head.value));
+ }
+ return js.fun([], [js.return_(new jsAst.ArrayInitializer.from(metadata))]);
+ }
+
String assembleProgram() {
measure(() {
// Compute the required type checks to know which classes need a
@@ -3045,6 +3053,9 @@ if (typeof document !== "undefined" && document.readyState !== "complete") {
mainBuffer
..write('["${library.getLibraryOrScriptName()}",$_')
..write('"${uri}",$_')
+ ..write(
+ jsAst.prettyPrint(buildMetadataFunction(library), compiler))
+ ..write(',$_')
..write('{$n')
..addBuffer(buffer)
..write('}],$n');
@@ -3054,6 +3065,7 @@ if (typeof document !== "undefined" && document.readyState !== "complete") {
deferredBuffer
..write('["${library.getLibraryOrScriptName()}",$_')
..write('"${uri}",$_')
+ ..write('[],$_')
..write('{$n')
..addBuffer(buffer)
..write('}],$n');
@@ -3240,7 +3252,8 @@ const String REFLECTION_DATA_PARSER = r'''
var data = reflectionData[i];
var name = data[0];
var uri = data[1];
- var descriptor = data[2];
+ var metadata = data[2];
+ var descriptor = data[3];
var classes = [];
var functions = [];
for (var property in descriptor) {
@@ -3255,6 +3268,6 @@ const String REFLECTION_DATA_PARSER = r'''
classes.push(element[""]);
}
}
- libraries.push([name, uri, classes, functions]);
+ libraries.push([name, uri, classes, functions, metadata]);
}
})''';

Powered by Google App Engine
This is Rietveld 408576698