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 List<FormalParameterBuilder> formals = pop(); | 513 List<FormalParameterBuilder> formals = pop(); |
514 int formalsOffset = pop(); | 514 int formalsOffset = pop(); |
515 List<TypeVariableBuilder> typeVariables = pop(); | 515 List<TypeVariableBuilder> typeVariables = pop(); |
516 int charOffset = pop(); | 516 int charOffset = pop(); |
517 String name = pop(); | 517 String name = pop(); |
518 TypeBuilder returnType = pop(); | 518 TypeBuilder returnType = pop(); |
519 push(library.addFunctionType( | 519 push(library.addFunctionType( |
520 returnType, typeVariables, formals, formalsOffset)); | 520 returnType, typeVariables, formals, formalsOffset)); |
521 push(name); | 521 push(name); |
(...skipping 12 matching lines...) Expand all Loading... |
534 // case, however, then [beginOptionalFormalParameters] wouldn't always be | 534 // case, however, then [beginOptionalFormalParameters] wouldn't always be |
535 // matched by this method. | 535 // matched by this method. |
536 List parameters = popList(count) ?? []; | 536 List parameters = popList(count) ?? []; |
537 for (FormalParameterBuilder parameter in parameters) { | 537 for (FormalParameterBuilder parameter in parameters) { |
538 parameter.kind = kind; | 538 parameter.kind = kind; |
539 } | 539 } |
540 push(parameters); | 540 push(parameters); |
541 } | 541 } |
542 | 542 |
543 @override | 543 @override |
544 void endFormalParameters(int count, Token beginToken, Token endToken) { | 544 void endFormalParameters( |
| 545 int count, Token beginToken, Token endToken, MemberKind kind) { |
545 debugEvent("FormalParameters"); | 546 debugEvent("FormalParameters"); |
546 List formals = popList(count); | 547 List formals = popList(count); |
547 if (formals != null && formals.isNotEmpty) { | 548 if (formals != null && formals.isNotEmpty) { |
548 var last = formals.last; | 549 var last = formals.last; |
549 if (last is List) { | 550 if (last is List) { |
550 // TODO(sigmund): change `List newList` back to `var` (this is a | 551 // TODO(sigmund): change `List newList` back to `var` (this is a |
551 // workaround for issue #28651). Eventually, make optional | 552 // workaround for issue #28651). Eventually, make optional |
552 // formals a separate stack entry (#28673). | 553 // formals a separate stack entry (#28673). |
553 List newList = | 554 List newList = |
554 new List<FormalParameterBuilder>(formals.length - 1 + last.length); | 555 new List<FormalParameterBuilder>(formals.length - 1 + last.length); |
(...skipping 11 matching lines...) Expand all Loading... |
566 internalError(formals); | 567 internalError(formals); |
567 } | 568 } |
568 } | 569 } |
569 formals = new List<FormalParameterBuilder>.from(formals); | 570 formals = new List<FormalParameterBuilder>.from(formals); |
570 } | 571 } |
571 push(beginToken.charOffset); | 572 push(beginToken.charOffset); |
572 push(formals ?? NullValue.FormalParameters); | 573 push(formals ?? NullValue.FormalParameters); |
573 } | 574 } |
574 | 575 |
575 @override | 576 @override |
576 void handleNoFormalParameters(Token token) { | 577 void handleNoFormalParameters(Token token, MemberKind kind) { |
577 push(token.charOffset); | 578 push(token.charOffset); |
578 super.handleNoFormalParameters(token); | 579 super.handleNoFormalParameters(token, kind); |
579 } | 580 } |
580 | 581 |
581 @override | 582 @override |
582 void endEnum(Token enumKeyword, Token endBrace, int count) { | 583 void endEnum(Token enumKeyword, Token endBrace, int count) { |
583 List constantNamesAndOffsets = popList(count * 2); | 584 List constantNamesAndOffsets = popList(count * 2); |
584 int charOffset = pop(); | 585 int charOffset = pop(); |
585 String name = pop(); | 586 String name = pop(); |
586 List<MetadataBuilder> metadata = pop(); | 587 List<MetadataBuilder> metadata = pop(); |
587 library.addEnum(metadata, name, constantNamesAndOffsets, charOffset, | 588 library.addEnum(metadata, name, constantNamesAndOffsets, charOffset, |
588 endBrace.charOffset); | 589 endBrace.charOffset); |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
651 debugEvent("endTopLevelFields"); | 652 debugEvent("endTopLevelFields"); |
652 List namesOffsetsAndInitializers = popList(count * 4); | 653 List namesOffsetsAndInitializers = popList(count * 4); |
653 TypeBuilder type = pop(); | 654 TypeBuilder type = pop(); |
654 int modifiers = Modifier.validate(pop()); | 655 int modifiers = Modifier.validate(pop()); |
655 List<MetadataBuilder> metadata = pop(); | 656 List<MetadataBuilder> metadata = pop(); |
656 library.addFields(metadata, modifiers, type, namesOffsetsAndInitializers); | 657 library.addFields(metadata, modifiers, type, namesOffsetsAndInitializers); |
657 checkEmpty(beginToken.charOffset); | 658 checkEmpty(beginToken.charOffset); |
658 } | 659 } |
659 | 660 |
660 @override | 661 @override |
661 void endFields( | 662 void endFields(int count, Token beginToken, Token endToken) { |
662 int count, Token covariantToken, Token beginToken, Token endToken) { | |
663 debugEvent("Fields"); | 663 debugEvent("Fields"); |
664 List namesOffsetsAndInitializers = popList(count * 4); | 664 List namesOffsetsAndInitializers = popList(count * 4); |
665 TypeBuilder type = pop(); | 665 TypeBuilder type = pop(); |
666 int modifiers = Modifier.validate(pop()); | 666 int modifiers = Modifier.validate(pop()); |
667 List<MetadataBuilder> metadata = pop(); | 667 List<MetadataBuilder> metadata = pop(); |
668 library.addFields(metadata, modifiers, type, namesOffsetsAndInitializers); | 668 library.addFields(metadata, modifiers, type, namesOffsetsAndInitializers); |
669 } | 669 } |
670 | 670 |
671 @override | 671 @override |
672 void endTypeVariable(Token token, Token extendsOrSuper) { | 672 void endTypeVariable(Token token, Token extendsOrSuper) { |
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
818 Link<Token> handleMemberName(Link<Token> identifiers) { | 818 Link<Token> handleMemberName(Link<Token> identifiers) { |
819 if (!isDartLibrary || identifiers.isEmpty) return identifiers; | 819 if (!isDartLibrary || identifiers.isEmpty) return identifiers; |
820 return removeNativeClause(identifiers); | 820 return removeNativeClause(identifiers); |
821 } | 821 } |
822 | 822 |
823 @override | 823 @override |
824 void debugEvent(String name) { | 824 void debugEvent(String name) { |
825 // printEvent(name); | 825 // printEvent(name); |
826 } | 826 } |
827 } | 827 } |
OLD | NEW |