| 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 '../fasta_codes.dart' show FastaMessage, codeExpectedBlockToSkip; | 9 import '../fasta_codes.dart' show FastaMessage, codeExpectedBlockToSkip; |
| 10 | 10 |
| (...skipping 609 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 620 } | 620 } |
| 621 List<MetadataBuilder> metadata = pop(); | 621 List<MetadataBuilder> metadata = pop(); |
| 622 library.addFunctionTypeAlias( | 622 library.addFunctionTypeAlias( |
| 623 metadata, returnType, name, typeVariables, formals, charOffset); | 623 metadata, returnType, name, typeVariables, formals, charOffset); |
| 624 checkEmpty(typedefKeyword.charOffset); | 624 checkEmpty(typedefKeyword.charOffset); |
| 625 } | 625 } |
| 626 | 626 |
| 627 @override | 627 @override |
| 628 void endTopLevelFields(int count, Token beginToken, Token endToken) { | 628 void endTopLevelFields(int count, Token beginToken, Token endToken) { |
| 629 debugEvent("endTopLevelFields"); | 629 debugEvent("endTopLevelFields"); |
| 630 List namesOffsetsAndInitializers = popList(count * 4); | 630 List fieldsInfo = popList(count * 4); |
| 631 TypeBuilder type = pop(); | 631 TypeBuilder type = pop(); |
| 632 int modifiers = Modifier.validate(pop()); | 632 int modifiers = Modifier.validate(pop()); |
| 633 List<MetadataBuilder> metadata = pop(); | 633 List<MetadataBuilder> metadata = pop(); |
| 634 library.addFields(metadata, modifiers, type, namesOffsetsAndInitializers); | 634 library.addFields(metadata, modifiers, type, fieldsInfo); |
| 635 checkEmpty(beginToken.charOffset); | 635 checkEmpty(beginToken.charOffset); |
| 636 } | 636 } |
| 637 | 637 |
| 638 @override | 638 @override |
| 639 void endFields(int count, Token beginToken, Token endToken) { | 639 void endFields(int count, Token beginToken, Token endToken) { |
| 640 debugEvent("Fields"); | 640 debugEvent("Fields"); |
| 641 List namesOffsetsAndInitializers = popList(count * 4); | 641 List fieldsInfo = popList(count * 4); |
| 642 TypeBuilder type = pop(); | 642 TypeBuilder type = pop(); |
| 643 int modifiers = Modifier.validate(pop()); | 643 int modifiers = Modifier.validate(pop()); |
| 644 List<MetadataBuilder> metadata = pop(); | 644 List<MetadataBuilder> metadata = pop(); |
| 645 library.addFields(metadata, modifiers, type, namesOffsetsAndInitializers); | 645 library.addFields(metadata, modifiers, type, fieldsInfo); |
| 646 } | 646 } |
| 647 | 647 |
| 648 @override | 648 @override |
| 649 void endTypeVariable(Token token, Token extendsOrSuper) { | 649 void endTypeVariable(Token token, Token extendsOrSuper) { |
| 650 debugEvent("endTypeVariable"); | 650 debugEvent("endTypeVariable"); |
| 651 TypeBuilder bound = pop(); | 651 TypeBuilder bound = pop(); |
| 652 int charOffset = pop(); | 652 int charOffset = pop(); |
| 653 String name = pop(); | 653 String name = pop(); |
| 654 // TODO(paulberry): type variable metadata should not be ignored. See | 654 // TODO(paulberry): type variable metadata should not be ignored. See |
| 655 // dartbug.com/28981. | 655 // dartbug.com/28981. |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 717 | 717 |
| 718 @override | 718 @override |
| 719 void endRedirectingFactoryBody(Token beginToken, Token endToken) { | 719 void endRedirectingFactoryBody(Token beginToken, Token endToken) { |
| 720 debugEvent("RedirectingFactoryBody"); | 720 debugEvent("RedirectingFactoryBody"); |
| 721 push(MethodBody.RedirectingFactoryBody); | 721 push(MethodBody.RedirectingFactoryBody); |
| 722 } | 722 } |
| 723 | 723 |
| 724 @override | 724 @override |
| 725 void endFieldInitializer(Token assignmentOperator, Token token) { | 725 void endFieldInitializer(Token assignmentOperator, Token token) { |
| 726 debugEvent("FieldInitializer"); | 726 debugEvent("FieldInitializer"); |
| 727 Token beforeLast = assignmentOperator.next; |
| 728 Token next = beforeLast.next; |
| 729 while (next != token && !next.isEof) { |
| 730 // To avoid storing the rest of the token stream, we need to identify the |
| 731 // token before [token]. That token will be the last token of the |
| 732 // initializer expression and by setting its tail to EOF we only store |
| 733 // the tokens for the expression. |
| 734 // TODO(ahe): Might be clearer if this search was moved to |
| 735 // `library.addFields`. |
| 736 beforeLast = next; |
| 737 next = next.next; |
| 738 } |
| 727 push(assignmentOperator.next); | 739 push(assignmentOperator.next); |
| 728 push(token); | 740 push(beforeLast); |
| 729 } | 741 } |
| 730 | 742 |
| 731 @override | 743 @override |
| 732 void handleNoFieldInitializer(Token token) { | 744 void handleNoFieldInitializer(Token token) { |
| 733 debugEvent("NoFieldInitializer"); | 745 debugEvent("NoFieldInitializer"); |
| 734 push(NullValue.FieldInitializer); | 746 push(NullValue.FieldInitializer); |
| 735 push(NullValue.FieldInitializer); | 747 push(NullValue.FieldInitializer); |
| 736 } | 748 } |
| 737 | 749 |
| 738 @override | 750 @override |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 798 Link<Token> handleMemberName(Link<Token> identifiers) { | 810 Link<Token> handleMemberName(Link<Token> identifiers) { |
| 799 if (!enableNative || identifiers.isEmpty) return identifiers; | 811 if (!enableNative || identifiers.isEmpty) return identifiers; |
| 800 return removeNativeClause(identifiers); | 812 return removeNativeClause(identifiers); |
| 801 } | 813 } |
| 802 | 814 |
| 803 @override | 815 @override |
| 804 void debugEvent(String name) { | 816 void debugEvent(String name) { |
| 805 // printEvent(name); | 817 // printEvent(name); |
| 806 } | 818 } |
| 807 } | 819 } |
| OLD | NEW |