Chromium Code Reviews| 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 []; |
|
ngeoffray
2013/12/09 11:15:58
const <int>[]
ahe
2013/12/09 17:06:47
Done.
|
| 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; |
| }); |
| } |
| } |