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]); |
} |
})'''; |