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) { |