| 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 |
| 11 import '../parser/parser.dart' show FormalParameterType, optional; | 11 import '../parser/parser.dart' show FormalParameterType, MemberKind, optional; |
| 12 | 12 |
| 13 import '../parser/identifier_context.dart' show IdentifierContext; | 13 import '../parser/identifier_context.dart' show IdentifierContext; |
| 14 | 14 |
| 15 import '../scanner/token.dart' show Token; | 15 import '../scanner/token.dart' show Token; |
| 16 | 16 |
| 17 import '../util/link.dart' show Link; | 17 import '../util/link.dart' show Link; |
| 18 | 18 |
| 19 import '../combinator.dart' show Combinator; | 19 import '../combinator.dart' show Combinator; |
| 20 | 20 |
| 21 import '../errors.dart' show internalError; | 21 import '../errors.dart' show internalError; |
| (...skipping 453 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 475 push(popList(count) ?? NullValue.TypeVariables); | 475 push(popList(count) ?? NullValue.TypeVariables); |
| 476 } | 476 } |
| 477 | 477 |
| 478 @override | 478 @override |
| 479 void handleVoidKeyword(Token token) { | 479 void handleVoidKeyword(Token token) { |
| 480 debugEvent("VoidKeyword"); | 480 debugEvent("VoidKeyword"); |
| 481 push(library.addVoidType(token.charOffset)); | 481 push(library.addVoidType(token.charOffset)); |
| 482 } | 482 } |
| 483 | 483 |
| 484 @override | 484 @override |
| 485 void endFormalParameter(Token covariantKeyword, Token thisKeyword, | 485 void endFormalParameter(Token thisKeyword, Token nameToken, |
| 486 Token nameToken, FormalParameterType kind) { | 486 FormalParameterType kind, MemberKind memberKind) { |
| 487 debugEvent("FormalParameter"); | 487 debugEvent("FormalParameter"); |
| 488 int charOffset = pop(); | 488 int charOffset = pop(); |
| 489 String name = pop(); | 489 String name = pop(); |
| 490 TypeBuilder type = pop(); | 490 TypeBuilder type = pop(); |
| 491 int modifiers = Modifier.validate(pop()); | 491 int modifiers = Modifier.validate(pop()); |
| 492 List<MetadataBuilder> metadata = pop(); | 492 List<MetadataBuilder> metadata = pop(); |
| 493 push(library.addFormalParameter( | 493 push(library.addFormalParameter( |
| 494 metadata, modifiers, type, name, thisKeyword != null, charOffset)); | 494 metadata, modifiers, type, name, thisKeyword != null, charOffset)); |
| 495 } | 495 } |
| 496 | 496 |
| 497 @override | 497 @override |
| 498 void handleValuedFormalParameter(Token equals, Token token) { | 498 void handleValuedFormalParameter(Token equals, Token token) { |
| 499 debugEvent("ValuedFormalParameter"); | 499 debugEvent("ValuedFormalParameter"); |
| 500 // Ignored for now. | 500 // Ignored for now. |
| 501 } | 501 } |
| 502 | 502 |
| 503 @override | 503 @override |
| 504 void handleFormalParameterWithoutValue(Token token) { | 504 void handleFormalParameterWithoutValue(Token token) { |
| 505 debugEvent("FormalParameterWithoutValue"); | 505 debugEvent("FormalParameterWithoutValue"); |
| 506 // Ignored for now. | 506 // Ignored for now. |
| 507 } | 507 } |
| 508 | 508 |
| 509 @override | 509 @override |
| 510 void endFunctionTypedFormalParameter( | 510 void endFunctionTypedFormalParameter( |
| 511 Token covariantKeyword, Token thisKeyword, FormalParameterType kind) { | 511 Token thisKeyword, FormalParameterType kind) { |
| 512 debugEvent("FunctionTypedFormalParameter"); | 512 debugEvent("FunctionTypedFormalParameter"); |
| 513 pop(); // Function type parameters. | 513 pop(); // Function type parameters. |
| 514 pop(); // Formals offset | 514 pop(); // Formals offset |
| 515 pop(); // Type variables. | 515 pop(); // Type variables. |
| 516 int charOffset = pop(); | 516 int charOffset = pop(); |
| 517 String name = pop(); | 517 String name = pop(); |
| 518 pop(); // Return type. | 518 pop(); // Return type. |
| 519 push(NullValue.Type); | 519 push(NullValue.Type); |
| 520 push(name); | 520 push(name); |
| 521 push(charOffset); | 521 push(charOffset); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 533 // case, however, then [beginOptionalFormalParameters] wouldn't always be | 533 // case, however, then [beginOptionalFormalParameters] wouldn't always be |
| 534 // matched by this method. | 534 // matched by this method. |
| 535 List parameters = popList(count) ?? []; | 535 List parameters = popList(count) ?? []; |
| 536 for (FormalParameterBuilder parameter in parameters) { | 536 for (FormalParameterBuilder parameter in parameters) { |
| 537 parameter.kind = kind; | 537 parameter.kind = kind; |
| 538 } | 538 } |
| 539 push(parameters); | 539 push(parameters); |
| 540 } | 540 } |
| 541 | 541 |
| 542 @override | 542 @override |
| 543 void endFormalParameters(int count, Token beginToken, Token endToken) { | 543 void endFormalParameters( |
| 544 int count, Token beginToken, Token endToken, MemberKind kind) { |
| 544 debugEvent("FormalParameters"); | 545 debugEvent("FormalParameters"); |
| 545 List formals = popList(count); | 546 List formals = popList(count); |
| 546 if (formals != null && formals.isNotEmpty) { | 547 if (formals != null && formals.isNotEmpty) { |
| 547 var last = formals.last; | 548 var last = formals.last; |
| 548 if (last is List) { | 549 if (last is List) { |
| 549 // TODO(sigmund): change `List newList` back to `var` (this is a | 550 // TODO(sigmund): change `List newList` back to `var` (this is a |
| 550 // workaround for issue #28651). Eventually, make optional | 551 // workaround for issue #28651). Eventually, make optional |
| 551 // formals a separate stack entry (#28673). | 552 // formals a separate stack entry (#28673). |
| 552 List newList = | 553 List newList = |
| 553 new List<FormalParameterBuilder>(formals.length - 1 + last.length); | 554 new List<FormalParameterBuilder>(formals.length - 1 + last.length); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 565 internalError(formals); | 566 internalError(formals); |
| 566 } | 567 } |
| 567 } | 568 } |
| 568 formals = new List<FormalParameterBuilder>.from(formals); | 569 formals = new List<FormalParameterBuilder>.from(formals); |
| 569 } | 570 } |
| 570 push(beginToken.charOffset); | 571 push(beginToken.charOffset); |
| 571 push(formals ?? NullValue.FormalParameters); | 572 push(formals ?? NullValue.FormalParameters); |
| 572 } | 573 } |
| 573 | 574 |
| 574 @override | 575 @override |
| 575 void handleNoFormalParameters(Token token) { | 576 void handleNoFormalParameters(Token token, MemberKind kind) { |
| 576 push(token.charOffset); | 577 push(token.charOffset); |
| 577 super.handleNoFormalParameters(token); | 578 super.handleNoFormalParameters(token, kind); |
| 578 } | 579 } |
| 579 | 580 |
| 580 @override | 581 @override |
| 581 void endEnum(Token enumKeyword, Token endBrace, int count) { | 582 void endEnum(Token enumKeyword, Token endBrace, int count) { |
| 582 List constantNamesAndOffsets = popList(count * 2); | 583 List constantNamesAndOffsets = popList(count * 2); |
| 583 int charOffset = pop(); | 584 int charOffset = pop(); |
| 584 String name = pop(); | 585 String name = pop(); |
| 585 List<MetadataBuilder> metadata = pop(); | 586 List<MetadataBuilder> metadata = pop(); |
| 586 library.addEnum(metadata, name, constantNamesAndOffsets, charOffset, | 587 library.addEnum(metadata, name, constantNamesAndOffsets, charOffset, |
| 587 endBrace.charOffset); | 588 endBrace.charOffset); |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 650 debugEvent("endTopLevelFields"); | 651 debugEvent("endTopLevelFields"); |
| 651 List namesOffsetsAndInitializers = popList(count * 4); | 652 List namesOffsetsAndInitializers = popList(count * 4); |
| 652 TypeBuilder type = pop(); | 653 TypeBuilder type = pop(); |
| 653 int modifiers = Modifier.validate(pop()); | 654 int modifiers = Modifier.validate(pop()); |
| 654 List<MetadataBuilder> metadata = pop(); | 655 List<MetadataBuilder> metadata = pop(); |
| 655 library.addFields(metadata, modifiers, type, namesOffsetsAndInitializers); | 656 library.addFields(metadata, modifiers, type, namesOffsetsAndInitializers); |
| 656 checkEmpty(beginToken.charOffset); | 657 checkEmpty(beginToken.charOffset); |
| 657 } | 658 } |
| 658 | 659 |
| 659 @override | 660 @override |
| 660 void endFields( | 661 void endFields(int count, Token beginToken, Token endToken) { |
| 661 int count, Token covariantToken, Token beginToken, Token endToken) { | |
| 662 debugEvent("Fields"); | 662 debugEvent("Fields"); |
| 663 List namesOffsetsAndInitializers = popList(count * 4); | 663 List namesOffsetsAndInitializers = popList(count * 4); |
| 664 TypeBuilder type = pop(); | 664 TypeBuilder type = pop(); |
| 665 int modifiers = Modifier.validate(pop()); | 665 int modifiers = Modifier.validate(pop()); |
| 666 List<MetadataBuilder> metadata = pop(); | 666 List<MetadataBuilder> metadata = pop(); |
| 667 library.addFields(metadata, modifiers, type, namesOffsetsAndInitializers); | 667 library.addFields(metadata, modifiers, type, namesOffsetsAndInitializers); |
| 668 } | 668 } |
| 669 | 669 |
| 670 @override | 670 @override |
| 671 void endTypeVariable(Token token, Token extendsOrSuper) { | 671 void endTypeVariable(Token token, Token extendsOrSuper) { |
| (...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 817 Link<Token> handleMemberName(Link<Token> identifiers) { | 817 Link<Token> handleMemberName(Link<Token> identifiers) { |
| 818 if (!isDartLibrary || identifiers.isEmpty) return identifiers; | 818 if (!isDartLibrary || identifiers.isEmpty) return identifiers; |
| 819 return removeNativeClause(identifiers); | 819 return removeNativeClause(identifiers); |
| 820 } | 820 } |
| 821 | 821 |
| 822 @override | 822 @override |
| 823 void debugEvent(String name) { | 823 void debugEvent(String name) { |
| 824 // printEvent(name); | 824 // printEvent(name); |
| 825 } | 825 } |
| 826 } | 826 } |
| OLD | NEW |