| 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 AsyncMarker, ProcedureKind; | 7 import 'package:kernel/ast.dart' show AsyncMarker, ProcedureKind; |
| 8 | 8 |
| 9 import '../fasta_codes.dart' show FastaMessage, codeExpectedBlockToSkip; | 9 import '../fasta_codes.dart' show FastaMessage, codeExpectedBlockToSkip; |
| 10 | 10 |
| (...skipping 13 matching lines...) Expand all Loading... |
| 24 | 24 |
| 25 import '../modifier.dart' show Modifier; | 25 import '../modifier.dart' show Modifier; |
| 26 | 26 |
| 27 import 'source_library_builder.dart' show SourceLibraryBuilder; | 27 import 'source_library_builder.dart' show SourceLibraryBuilder; |
| 28 | 28 |
| 29 import 'unhandled_listener.dart' show NullValue, Unhandled, UnhandledListener; | 29 import 'unhandled_listener.dart' show NullValue, Unhandled, UnhandledListener; |
| 30 | 30 |
| 31 import '../parser/dart_vm_native.dart' | 31 import '../parser/dart_vm_native.dart' |
| 32 show removeNativeClause, skipNativeClause; | 32 show removeNativeClause, skipNativeClause; |
| 33 | 33 |
| 34 import '../operator.dart' show Operator, operatorFromString, operatorToString; | 34 import '../operator.dart' |
| 35 show |
| 36 Operator, |
| 37 operatorFromString, |
| 38 operatorToString, |
| 39 operatorRequiredArgumentCount; |
| 35 | 40 |
| 36 import '../quote.dart' show unescapeString; | 41 import '../quote.dart' show unescapeString; |
| 37 | 42 |
| 38 enum MethodBody { | 43 enum MethodBody { |
| 39 Abstract, | 44 Abstract, |
| 40 Regular, | 45 Regular, |
| 41 RedirectingFactoryBody, | 46 RedirectingFactoryBody, |
| 42 } | 47 } |
| 43 | 48 |
| 44 AsyncMarker asyncMarkerFromTokens(Token asyncToken, Token starToken) { | 49 AsyncMarker asyncMarkerFromTokens(Token asyncToken, Token starToken) { |
| (...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 362 int charOffset = pop(); | 367 int charOffset = pop(); |
| 363 dynamic nameOrOperator = pop(); | 368 dynamic nameOrOperator = pop(); |
| 364 if (Operator.subtract == nameOrOperator && formals == null) { | 369 if (Operator.subtract == nameOrOperator && formals == null) { |
| 365 nameOrOperator = Operator.unaryMinus; | 370 nameOrOperator = Operator.unaryMinus; |
| 366 } | 371 } |
| 367 String name; | 372 String name; |
| 368 ProcedureKind kind; | 373 ProcedureKind kind; |
| 369 if (nameOrOperator is Operator) { | 374 if (nameOrOperator is Operator) { |
| 370 name = operatorToString(nameOrOperator); | 375 name = operatorToString(nameOrOperator); |
| 371 kind = ProcedureKind.Operator; | 376 kind = ProcedureKind.Operator; |
| 377 int requiredArgumentCount = operatorRequiredArgumentCount(nameOrOperator); |
| 378 if ((formals?.length ?? 0) != requiredArgumentCount) { |
| 379 library.addCompileTimeError( |
| 380 charOffset, |
| 381 "Operator '$name' must have exactly $requiredArgumentCount " |
| 382 "parameters."); |
| 383 } else { |
| 384 if (formals != null) { |
| 385 for (FormalParameterBuilder formal in formals) { |
| 386 if (!formal.isRequired) { |
| 387 library.addCompileTimeError(formal.charOffset, |
| 388 "An operator can't have optional parameters."); |
| 389 } |
| 390 } |
| 391 } |
| 392 } |
| 372 } else { | 393 } else { |
| 373 name = nameOrOperator; | 394 name = nameOrOperator; |
| 374 kind = computeProcedureKind(getOrSet); | 395 kind = computeProcedureKind(getOrSet); |
| 375 } | 396 } |
| 376 TypeBuilder returnType = pop(); | 397 TypeBuilder returnType = pop(); |
| 377 int modifiers = | 398 int modifiers = |
| 378 Modifier.validate(pop(), isAbstract: bodyKind == MethodBody.Abstract); | 399 Modifier.validate(pop(), isAbstract: bodyKind == MethodBody.Abstract); |
| 379 List<MetadataBuilder> metadata = pop(); | 400 List<MetadataBuilder> metadata = pop(); |
| 380 library.addProcedure( | 401 library.addProcedure( |
| 381 metadata, | 402 metadata, |
| (...skipping 415 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 797 Link<Token> handleMemberName(Link<Token> identifiers) { | 818 Link<Token> handleMemberName(Link<Token> identifiers) { |
| 798 if (!isDartLibrary || identifiers.isEmpty) return identifiers; | 819 if (!isDartLibrary || identifiers.isEmpty) return identifiers; |
| 799 return removeNativeClause(identifiers); | 820 return removeNativeClause(identifiers); |
| 800 } | 821 } |
| 801 | 822 |
| 802 @override | 823 @override |
| 803 void debugEvent(String name) { | 824 void debugEvent(String name) { |
| 804 // printEvent(name); | 825 // printEvent(name); |
| 805 } | 826 } |
| 806 } | 827 } |
| OLD | NEW |