| Index: sdk/lib/_internal/compiler/implementation/dart_backend/placeholder_collector.dart
|
| diff --git a/sdk/lib/_internal/compiler/implementation/dart_backend/placeholder_collector.dart b/sdk/lib/_internal/compiler/implementation/dart_backend/placeholder_collector.dart
|
| index 2d67ace7e157e138206c479d950dce8e0e8db818..83a067fe10a9ff36285e7a82b83077a91660a57b 100644
|
| --- a/sdk/lib/_internal/compiler/implementation/dart_backend/placeholder_collector.dart
|
| +++ b/sdk/lib/_internal/compiler/implementation/dart_backend/placeholder_collector.dart
|
| @@ -48,7 +48,15 @@ class SendVisitor extends ResolvedVisitor {
|
|
|
| SendVisitor(this.collector, TreeElements elements) : super(elements);
|
|
|
| - visitOperatorSend(Send node) {}
|
| + visitOperatorSend(Send node) {
|
| + if (node.isParameterCheck) {
|
| + final element = elements[node.receiver];
|
| + if (element != null) {
|
| + collector.tryMakeLocalPlaceholder(element, node.receiver);
|
| + }
|
| + }
|
| + }
|
| +
|
| visitForeignSend(Send node) {}
|
|
|
| visitSuperSend(Send node) {
|
| @@ -236,9 +244,11 @@ class PlaceholderCollector extends Visitor {
|
| }
|
|
|
| void tryMakeLocalPlaceholder(Element element, Identifier node) {
|
| - bool isOptionalParameter() {
|
| + bool isNamedOptionalParameter() {
|
| FunctionElement function = element.enclosingElement;
|
| - for (Element parameter in function.functionSignature.optionalParameters) {
|
| + FunctionSignature signature = function.functionSignature;
|
| + if (!signature.optionalParametersAreNamed) return false;
|
| + for (Element parameter in signature.optionalParameters) {
|
| if (identical(parameter, element)) return true;
|
| }
|
| return false;
|
| @@ -247,7 +257,7 @@ class PlaceholderCollector extends Visitor {
|
| // TODO(smok): Maybe we should rename privates as well, their privacy
|
| // should not matter if they are local vars.
|
| if (node.source.isPrivate()) return;
|
| - if (element.isParameter() && isOptionalParameter()) {
|
| + if (element.isParameter() && isNamedOptionalParameter()) {
|
| currentFunctionScope.registerParameter(node);
|
| } else if (Elements.isLocal(element)) {
|
| makeLocalPlaceholder(node);
|
|
|