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

Unified Diff: pkg/analyzer/lib/src/fasta/token_utils.dart

Issue 2890523002: merge fasta.Token into analyzer.Token (Closed)
Patch Set: Created 3 years, 7 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/analyzer/lib/src/fasta/ast_builder.dart ('k') | pkg/analyzer/lib/src/summary/fasta/stack_listener.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analyzer/lib/src/fasta/token_utils.dart
diff --git a/pkg/analyzer/lib/src/fasta/token_utils.dart b/pkg/analyzer/lib/src/fasta/token_utils.dart
index c30ed29e9cfe99c89263d5c570f0674c0af86ea9..f5964ba791f55a61b457d34f2ece1d44f5257bc3 100644
--- a/pkg/analyzer/lib/src/fasta/token_utils.dart
+++ b/pkg/analyzer/lib/src/fasta/token_utils.dart
@@ -6,17 +6,10 @@ library fasta.analyzer.token_utils;
import 'package:front_end/src/fasta/scanner/error_token.dart' show ErrorToken;
-import 'package:front_end/src/scanner/token.dart' show Keyword;
+import 'package:front_end/src/scanner/token.dart' show Keyword, Token;
import 'package:front_end/src/fasta/scanner/token.dart'
- show
- BeginGroupToken,
- CommentToken,
- DartDocToken,
- KeywordToken,
- StringToken,
- SymbolToken,
- Token;
+ show BeginGroupToken, CommentToken, DartDocToken, StringToken, SymbolToken;
import 'package:front_end/src/fasta/scanner/token_constants.dart';
@@ -232,26 +225,19 @@ Token fromAnalyzerTokenStream(analyzer.Token analyzerToken) {
}
}
- analyzer.Token translateComments(analyzer.Token token) {
- if (token == null) {
- return null;
- }
- Token head = fromAnalyzerToken(token);
- Token tail = head;
- token = token.next;
- while (token != null) {
- tail.next = fromAnalyzerToken(token);
- tail.next.previous = tail; // ignore: deprecated_member_use
- tail = tail.next;
- token = token.next;
- }
- return head;
- }
-
analyzer.Token translateAndAppend(analyzer.Token analyzerToken) {
var token = fromAnalyzerToken(analyzerToken);
- token.precedingComments =
- translateComments(analyzerToken.precedingComments);
+ // Sanity check
+ if (analyzerToken.precedingComments != null) {
+ if (token.precedingComments == null) {
+ return internalError(
+ 'expected translated token $token to have preceedingComments');
+ }
+ } else {
+ if (token.precedingComments != null) {
+ return internalError('token $token has unexpected preceedingComments');
+ }
+ }
tokenTail.next = token;
tokenTail.next.previous = tokenTail; // ignore: deprecated_member_use
tokenTail = token;
@@ -266,7 +252,7 @@ Token fromAnalyzerTokenStream(analyzer.Token analyzerToken) {
tokenTail.next = eof;
eof.previous = tokenTail; // ignore: deprecated_member_use
eof.precedingComments =
- translateComments(analyzerToken.precedingComments);
+ _translateComments(analyzerToken.precedingComments);
eof.next = eof;
return tokenHead.next;
}
@@ -276,14 +262,18 @@ Token fromAnalyzerTokenStream(analyzer.Token analyzerToken) {
/// Converts a single analyzer token into a Fasta token.
Token fromAnalyzerToken(analyzer.Token token) {
- Token beginGroup(TokenType type) => new BeginGroupToken(type, token.offset);
+ Token comments = _translateComments(token.precedingComments);
+ Token beginGroup(TokenType type) =>
+ new BeginGroupToken(type, token.offset, comments);
Token string(TokenType type) =>
- new StringToken.fromString(type, token.lexeme, token.offset);
- Token symbol(TokenType type) => new SymbolToken(type, token.offset);
+ new StringToken.fromString(type, token.lexeme, token.offset,
+ precedingComments: comments);
+ Token symbol(TokenType type) => new SymbolToken(type, token.offset, comments);
if (token.type.isKeyword) {
var keyword = Keyword.keywords[token.lexeme];
if (keyword != null) {
- return new KeywordToken(keyword, token.offset);
+ return new analyzer.KeywordTokenWithComment(
+ keyword, token.offset, comments);
} else {
return internalError("Unrecognized keyword: '${token.lexeme}'.");
}
@@ -301,7 +291,8 @@ Token fromAnalyzerToken(analyzer.Token token) {
var keyword = Keyword.keywords[token.lexeme];
if (keyword != null) {
assert(keyword.isPseudo);
- return new KeywordToken(keyword, token.offset);
+ return new analyzer.KeywordTokenWithComment(
+ keyword, token.offset, comments);
} else {
return string(TokenType.IDENTIFIER);
}
@@ -491,8 +482,7 @@ analyzer.Token toAnalyzerToken(Token token,
return makeStringToken(TokenType.INT);
case KEYWORD_TOKEN:
- KeywordToken keywordToken = token;
- var syntax = keywordToken.keyword.lexeme;
+ var syntax = token.type.lexeme;
// TODO(paulberry): if the map lookup proves to be too slow, consider
// using a switch statement, or perhaps a string of
// "if (identical(syntax, "foo"))" checks. (Note that identical checks
@@ -531,6 +521,22 @@ analyzer.Token toAnalyzerToken(Token token,
}
}
+analyzer.Token _translateComments(analyzer.Token token) {
+ if (token == null) {
+ return null;
+ }
+ Token head = fromAnalyzerToken(token);
+ Token tail = head;
+ token = token.next;
+ while (token != null) {
+ tail.next = fromAnalyzerToken(token);
+ tail.next.previous = tail; // ignore: deprecated_member_use
+ tail = tail.next;
+ token = token.next;
+ }
+ return head;
+}
+
final _keywordMap = {
"assert": analyzer.Keyword.ASSERT,
"break": analyzer.Keyword.BREAK,
« no previous file with comments | « pkg/analyzer/lib/src/fasta/ast_builder.dart ('k') | pkg/analyzer/lib/src/summary/fasta/stack_listener.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698