| 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(
|
| + 'KernelCodegenWorldBuilder.forEachParameterAsLocal');
|
| + }
|
| +
|
| @override
|
| void forEachInstanceField(
|
| ClassEntity cls, void f(ClassEntity declarer, FieldEntity field)) {
|
|
|