Chromium Code Reviews| Index: pkg/front_end/lib/src/fasta/source/outline_builder.dart |
| diff --git a/pkg/front_end/lib/src/fasta/source/outline_builder.dart b/pkg/front_end/lib/src/fasta/source/outline_builder.dart |
| index ca62f0ebec0f25009056b5433bf9af361220789d..1c08f6e5ea7b4be4dbcd634203ad1bad3a20727d 100644 |
| --- a/pkg/front_end/lib/src/fasta/source/outline_builder.dart |
| +++ b/pkg/front_end/lib/src/fasta/source/outline_builder.dart |
| @@ -20,7 +20,9 @@ import '../fasta_codes.dart' |
| messageTypedefNotFunction, |
| templateDuplicatedParameterName, |
| templateDuplicatedParameterNameCause, |
| - templateOperatorParameterMismatch; |
| + templateOperatorParameterMismatch0, |
| + templateOperatorParameterMismatch1, |
| + templateOperatorParameterMismatch2; |
| import '../modifier.dart' show abstractMask, externalMask, Modifier; |
| @@ -382,10 +384,25 @@ class OutlineBuilder extends UnhandledListener { |
| kind = ProcedureKind.Operator; |
| int requiredArgumentCount = operatorRequiredArgumentCount(nameOrOperator); |
| if ((formals?.length ?? 0) != requiredArgumentCount) { |
| - addCompileTimeError( |
| - templateOperatorParameterMismatch.withArguments( |
| - name, requiredArgumentCount), |
| - charOffset); |
| + var template; |
| + switch (requiredArgumentCount) { |
| + case 0: |
| + template = templateOperatorParameterMismatch0; |
| + break; |
| + |
| + case 1: |
| + template = templateOperatorParameterMismatch1; |
| + break; |
| + |
| + case 2: |
| + template = templateOperatorParameterMismatch2; |
|
Johnni Winther
2017/07/13 11:23:39
How do you handle `operator -(a, b)` ? It shouldn'
ahe
2017/07/13 11:32:19
Good point.
|
| + break; |
| + |
| + default: |
| + unhandled("$requiredArgumentCount", "operatorRequiredArgumentCount", |
| + charOffset, uri); |
| + } |
| + addCompileTimeError(template.withArguments(name), charOffset); |
| } else { |
| if (formals != null) { |
| for (FormalParameterBuilder formal in formals) { |