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 6fb21d33098f5aeeee2ffdad53fd302aee7c1aa9..85570b2841f16fff2b813b6a84ed793cd8b5d5c7 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) { |
@@ -118,21 +118,10 @@ class MetadataEmitter extends CodeEmitterHelper { |
buffer.write('];$n'); |
} |
- jsAst.Fun extendWithMetadata(FunctionElement element, jsAst.Fun code) { |
- if (!backend.retainMetadataOf(element)) 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()) { |
- metadata.add(reifyType(element.getEnclosingClass().thisType)); |
- } else { |
- metadata.add(reifyType(signature.returnType)); |
- } |
- signature.forEachParameter((Element parameter) { |
- metadata |
- ..add(reifyName(parameter.name)) |
- ..add(reifyType(parameter.computeType(compiler))); |
- }); |
Link link = element.metadata; |
// TODO(ahe): Why is metadata sometimes null? |
if (link != null) { |
@@ -140,8 +129,7 @@ class MetadataEmitter extends CodeEmitterHelper { |
metadata.add(reifyMetadata(link.head)); |
} |
} |
- code.body.statements.add(js.string(metadata.join(',')).toStatement()); |
- return code; |
+ return metadata; |
}); |
} |
} |