OLD | NEW |
---|---|
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 library fasta.outline_builder; | 5 library fasta.outline_builder; |
6 | 6 |
7 import 'package:kernel/ast.dart' show ProcedureKind; | 7 import 'package:kernel/ast.dart' show ProcedureKind; |
8 | 8 |
9 import '../../scanner/token.dart' show Token; | 9 import '../../scanner/token.dart' show Token; |
10 | 10 |
11 import '../builder/builder.dart'; | 11 import '../builder/builder.dart'; |
12 | 12 |
13 import '../combinator.dart' show Combinator; | 13 import '../combinator.dart' show Combinator; |
14 | 14 |
15 import '../fasta_codes.dart' | 15 import '../fasta_codes.dart' |
16 show | 16 show |
17 Message, | 17 Message, |
18 codeExpectedBlockToSkip, | 18 codeExpectedBlockToSkip, |
19 messageOperatorWithOptionalFormals, | 19 messageOperatorWithOptionalFormals, |
20 messageTypedefNotFunction, | 20 messageTypedefNotFunction, |
21 templateDuplicatedParameterName, | 21 templateDuplicatedParameterName, |
22 templateDuplicatedParameterNameCause, | 22 templateDuplicatedParameterNameCause, |
23 templateOperatorParameterMismatch; | 23 templateOperatorParameterMismatch0, |
24 templateOperatorParameterMismatch1, | |
25 templateOperatorParameterMismatch2; | |
24 | 26 |
25 import '../modifier.dart' show abstractMask, externalMask, Modifier; | 27 import '../modifier.dart' show abstractMask, externalMask, Modifier; |
26 | 28 |
27 import '../operator.dart' | 29 import '../operator.dart' |
28 show | 30 show |
29 Operator, | 31 Operator, |
30 operatorFromString, | 32 operatorFromString, |
31 operatorToString, | 33 operatorToString, |
32 operatorRequiredArgumentCount; | 34 operatorRequiredArgumentCount; |
33 | 35 |
(...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
375 if (Operator.subtract == nameOrOperator && formals == null) { | 377 if (Operator.subtract == nameOrOperator && formals == null) { |
376 nameOrOperator = Operator.unaryMinus; | 378 nameOrOperator = Operator.unaryMinus; |
377 } | 379 } |
378 String name; | 380 String name; |
379 ProcedureKind kind; | 381 ProcedureKind kind; |
380 if (nameOrOperator is Operator) { | 382 if (nameOrOperator is Operator) { |
381 name = operatorToString(nameOrOperator); | 383 name = operatorToString(nameOrOperator); |
382 kind = ProcedureKind.Operator; | 384 kind = ProcedureKind.Operator; |
383 int requiredArgumentCount = operatorRequiredArgumentCount(nameOrOperator); | 385 int requiredArgumentCount = operatorRequiredArgumentCount(nameOrOperator); |
384 if ((formals?.length ?? 0) != requiredArgumentCount) { | 386 if ((formals?.length ?? 0) != requiredArgumentCount) { |
385 addCompileTimeError( | 387 var template; |
386 templateOperatorParameterMismatch.withArguments( | 388 switch (requiredArgumentCount) { |
387 name, requiredArgumentCount), | 389 case 0: |
388 charOffset); | 390 template = templateOperatorParameterMismatch0; |
391 break; | |
392 | |
393 case 1: | |
394 template = templateOperatorParameterMismatch1; | |
395 break; | |
396 | |
397 case 2: | |
398 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.
| |
399 break; | |
400 | |
401 default: | |
402 unhandled("$requiredArgumentCount", "operatorRequiredArgumentCount", | |
403 charOffset, uri); | |
404 } | |
405 addCompileTimeError(template.withArguments(name), charOffset); | |
389 } else { | 406 } else { |
390 if (formals != null) { | 407 if (formals != null) { |
391 for (FormalParameterBuilder formal in formals) { | 408 for (FormalParameterBuilder formal in formals) { |
392 if (!formal.isRequired) { | 409 if (!formal.isRequired) { |
393 addCompileTimeError( | 410 addCompileTimeError( |
394 messageOperatorWithOptionalFormals, formal.charOffset); | 411 messageOperatorWithOptionalFormals, formal.charOffset); |
395 } | 412 } |
396 } | 413 } |
397 } | 414 } |
398 } | 415 } |
(...skipping 487 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
886 Link<Token> handleMemberName(Link<Token> identifiers) { | 903 Link<Token> handleMemberName(Link<Token> identifiers) { |
887 if (!enableNative || identifiers.isEmpty) return identifiers; | 904 if (!enableNative || identifiers.isEmpty) return identifiers; |
888 return removeNativeClause(identifiers, stringExpectedAfterNative); | 905 return removeNativeClause(identifiers, stringExpectedAfterNative); |
889 } | 906 } |
890 | 907 |
891 @override | 908 @override |
892 void debugEvent(String name) { | 909 void debugEvent(String name) { |
893 // printEvent(name); | 910 // printEvent(name); |
894 } | 911 } |
895 } | 912 } |
OLD | NEW |