Chromium Code Reviews| Index: pkg/compiler/lib/src/universe/codegen_world_builder.dart |
| diff --git a/pkg/compiler/lib/src/universe/codegen_world_builder.dart b/pkg/compiler/lib/src/universe/codegen_world_builder.dart |
| index 6cbe723b0500fd1ecc53fb465133694985ad4cc6..29e5195f77c828891fd166b20dbbde7b218504cf 100644 |
| --- a/pkg/compiler/lib/src/universe/codegen_world_builder.dart |
| +++ b/pkg/compiler/lib/src/universe/codegen_world_builder.dart |
| @@ -18,6 +18,10 @@ abstract class CodegenWorldBuilder implements WorldBuilder { |
| void forEachParameter(covariant FunctionEntity function, |
| void f(DartType type, String name, ConstantValue defaultValue)); |
| + /// Calls [f] for each parameter - given as a [Local] - of [function]. |
| + void forEachParameterAsLocal( |
| + covariant FunctionEntity function, void f(Local parameter)); |
| + |
| void forEachInvokedName( |
| f(String name, Map<Selector, SelectorConstraints> selectors)); |
| @@ -584,6 +588,8 @@ class ElementCodegenWorldBuilderImpl extends CodegenWorldBuilderImpl { |
| @override |
| void forEachParameter(MethodElement function, |
| void f(DartType type, String name, ConstantValue defaultValue)) { |
| + if (!function.hasFunctionSignature) return; |
| + function = function.implementation; |
| FunctionSignature parameters = function.functionSignature; |
| parameters.orderedForEachParameter((_parameter) { |
| ParameterElement parameter = _parameter; |
| @@ -595,6 +601,18 @@ class ElementCodegenWorldBuilderImpl extends CodegenWorldBuilderImpl { |
| }); |
| } |
| + @override |
| + void forEachParameterAsLocal( |
| + MethodElement function, void f(Local parameter)) { |
| + if (!function.hasFunctionSignature) return; |
| + function = function.implementation; |
| + FunctionSignature parameters = function.functionSignature; |
| + parameters.orderedForEachParameter((_parameter) { |
| + ParameterElement parameter = _parameter; |
| + f(parameter); |
| + }); |
| + } |
| + |
| @override |
| void _processInstantiatedClassMember( |
| ClassEntity cls, MemberElement member, MemberUsedCallback memberUsed) { |
| @@ -654,6 +672,13 @@ class KernelCodegenWorldBuilder extends CodegenWorldBuilderImpl { |
| _elementMap.forEachParameter(function, f); |
| } |
| + @override |
| + void forEachParameterAsLocal( |
| + FunctionEntity function, void f(Local parameter)) { |
| + throw new UnimplementedError( |
|
Siggi Cherem (dart-lang)
2017/08/30 17:30:42
Johnni - how do you suggest we implement this. Do
|
| + 'KernelCodegenWorldBuilder.forEachParameterAsLocal'); |
| + } |
| + |
| @override |
| void forEachInstanceField( |
| ClassEntity cls, void f(ClassEntity declarer, FieldEntity field)) { |