| Index: dart/sdk/lib/_internal/compiler/implementation/js_emitter/metadata_emitter.dart
|
| diff --git a/dart/sdk/lib/_internal/compiler/implementation/js_emitter/metadata_emitter.dart b/dart/sdk/lib/_internal/compiler/implementation/js_emitter/metadata_emitter.dart
|
| index f4597f3b9946389ee7dedb5a424331c19a09c13a..bfad81636c955b36660503dece89356eba4aeba7 100644
|
| --- a/dart/sdk/lib/_internal/compiler/implementation/js_emitter/metadata_emitter.dart
|
| +++ b/dart/sdk/lib/_internal/compiler/implementation/js_emitter/metadata_emitter.dart
|
| @@ -42,9 +42,9 @@ class MetadataEmitter extends CodeEmitterHelper {
|
| });
|
| }
|
|
|
| - jsAst.Node reifyDefaultArguments(FunctionElement function) {
|
| + List<int> reifyDefaultArguments(FunctionElement function) {
|
| FunctionSignature signature = function.computeSignature(compiler);
|
| - if (signature.optionalParameterCount == 0) return null;
|
| + if (signature.optionalParameterCount == 0) return const [];
|
| List<int> defaultValues = <int>[];
|
| for (Element element in signature.orderedOptionalParameters) {
|
| Constant value =
|
| @@ -55,7 +55,7 @@ class MetadataEmitter extends CodeEmitterHelper {
|
| .getText();
|
| defaultValues.add(addGlobalMetadata(stringRepresentation));
|
| }
|
| - return js.toExpression(defaultValues);
|
| + return defaultValues;
|
| }
|
|
|
| int reifyMetadata(MetadataAnnotation annotation) {
|
| @@ -113,9 +113,17 @@ class MetadataEmitter extends CodeEmitterHelper {
|
| buffer.write('];$n');
|
| }
|
|
|
| + // TODO(ahe): Delete this method.
|
| jsAst.Fun extendWithMetadata(FunctionElement element, jsAst.Fun code) {
|
| if (!backend.retainMetadataOf(element)) return code;
|
| + List<int> metadata = computeMetadata(element);
|
| + code.body.statements.add(js.string(metadata.join(',')).toStatement());
|
| + return code;
|
| + }
|
| +
|
| + List<int> computeMetadata(FunctionElement element) {
|
| return compiler.withCurrentElement(element, () {
|
| + if (!backend.retainMetadataOf(element)) return const <int>[];
|
| List<int> metadata = <int>[];
|
| FunctionSignature signature = element.functionSignature;
|
| if (element.isConstructor()) {
|
| @@ -135,8 +143,7 @@ class MetadataEmitter extends CodeEmitterHelper {
|
| metadata.add(reifyMetadata(link.head));
|
| }
|
| }
|
| - code.body.statements.add(js.string(metadata.join(',')).toStatement());
|
| - return code;
|
| + return metadata;
|
| });
|
| }
|
| }
|
|
|