Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(634)

Side by Side Diff: pkg/front_end/lib/src/scanner/token.dart

Issue 2915093002: improve fasta unterminated string recovery (Closed)
Patch Set: fix dartdoc Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 /** 5 /**
6 * Defines the tokens that are produced by the scanner, used by the parser, and 6 * Defines the tokens that are produced by the scanner, used by the parser, and
7 * referenced from the [AST structure](ast.dart). 7 * referenced from the [AST structure](ast.dart).
8 */ 8 */
9 import 'dart:collection'; 9 import 'dart:collection';
10 10
(...skipping 698 matching lines...) Expand 10 before | Expand all | Expand 10 after
709 int get length => 0; 709 int get length => 0;
710 710
711 @override 711 @override
712 Token copy() => new SyntheticKeywordToken(keyword, offset); 712 Token copy() => new SyntheticKeywordToken(keyword, offset);
713 } 713 }
714 714
715 /** 715 /**
716 * A token whose value is independent of it's type. 716 * A token whose value is independent of it's type.
717 */ 717 */
718 class SyntheticStringToken extends StringToken { 718 class SyntheticStringToken extends StringToken {
719 final int _length;
720
719 /** 721 /**
720 * Initialize a newly created token to represent a token of the given [type] 722 * Initialize a newly created token to represent a token of the given [type]
721 * with the given [value] at the given [offset]. 723 * with the given [value] at the given [offset]. If the [length] is
724 * not specified, then it defaults to the length of [value].
722 */ 725 */
723 SyntheticStringToken(TokenType type, String value, int offset) 726 SyntheticStringToken(TokenType type, String value, int offset, [this._length])
724 : super(type, value, offset); 727 : super(type, value, offset);
725 728
726 @override 729 @override
727 bool get isSynthetic => true; 730 bool get isSynthetic => true;
728 731
729 @override 732 @override
733 int get length => _length ?? super.length;
734
735 @override
730 Token copy() => new SyntheticStringToken(type, _value, offset); 736 Token copy() => new SyntheticStringToken(type, _value, offset);
731 } 737 }
732 738
733 /** 739 /**
734 * A synthetic token. 740 * A synthetic token.
735 */ 741 */
736 class SyntheticToken extends SimpleToken { 742 class SyntheticToken extends SimpleToken {
737 SyntheticToken(TokenType type, int offset) : super(type, offset); 743 SyntheticToken(TokenType type, int offset) : super(type, offset);
738 744
739 @override 745 @override
(...skipping 940 matching lines...) Expand 10 before | Expand all | Expand 10 after
1680 1686
1681 void set precedingComments(CommentToken comment) { 1687 void set precedingComments(CommentToken comment) {
1682 _precedingComment = comment; 1688 _precedingComment = comment;
1683 _setCommentParent(_precedingComment); 1689 _setCommentParent(_precedingComment);
1684 } 1690 }
1685 1691
1686 @override 1692 @override
1687 Token copy() => 1693 Token copy() =>
1688 new TokenWithComment(type, offset, copyComments(precedingComments)); 1694 new TokenWithComment(type, offset, copyComments(precedingComments));
1689 } 1695 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698