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 |