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

Side by Side Diff: pkg/analyzer/lib/src/dart/scanner/scanner.dart

Issue 2910583002: improve fasta interpolation recovery (Closed)
Patch Set: remove unnecessary label 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, 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 analyzer.src.dart.scanner.scanner; 5 library analyzer.src.dart.scanner.scanner;
6 6
7 import 'package:analyzer/error/error.dart'; 7 import 'package:analyzer/error/error.dart';
8 import 'package:analyzer/error/listener.dart'; 8 import 'package:analyzer/error/listener.dart';
9 import 'package:analyzer/src/dart/error/syntactic_errors.dart'; 9 import 'package:analyzer/src/dart/error/syntactic_errors.dart';
10 import 'package:analyzer/src/dart/scanner/reader.dart'; 10 import 'package:analyzer/src/dart/scanner/reader.dart';
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
152 Token get tail { 152 Token get tail {
153 throw 'unsupported operation'; 153 throw 'unsupported operation';
154 } 154 }
155 155
156 @override 156 @override
157 Token tokenize() { 157 Token tokenize() {
158 fasta.ScannerResult result = fasta.scanString(_contents, 158 fasta.ScannerResult result = fasta.scanString(_contents,
159 includeComments: _preserveComments, 159 includeComments: _preserveComments,
160 scanGenericMethodComments: scanGenericMethodComments, 160 scanGenericMethodComments: scanGenericMethodComments,
161 scanLazyAssignmentOperators: scanLazyAssignmentOperators); 161 scanLazyAssignmentOperators: scanLazyAssignmentOperators);
162
162 // fasta pretends there is an additional line at EOF 163 // fasta pretends there is an additional line at EOF
163 lineStarts 164 result.lineStarts.removeLast();
164 .addAll(result.lineStarts.sublist(1, result.lineStarts.length - 1)); 165
166 lineStarts.addAll(result.lineStarts);
165 fasta.Token token = result.tokens; 167 fasta.Token token = result.tokens;
166 // The default recovery strategy used by scanString 168 // The default recovery strategy used by scanString
167 // places all error tokens at the head of the stream. 169 // places all error tokens at the head of the stream.
168 while (token.type == TokenType.BAD_INPUT) { 170 while (token.type == TokenType.BAD_INPUT) {
169 translateErrorToken(token, reportError); 171 translateErrorToken(token, reportError);
170 token = token.next; 172 token = token.next;
171 } 173 }
172 firstToken = token; 174 firstToken = token;
173 // Update all token offsets based upon the reader's starting offset 175 // Update all token offsets based upon the reader's starting offset
174 if (_readerOffset != -1) { 176 if (_readerOffset != -1) {
175 final int delta = _readerOffset + 1; 177 final int delta = _readerOffset + 1;
176 do { 178 do {
177 token.offset += delta; 179 token.offset += delta;
178 token = token.next; 180 token = token.next;
179 } while (!token.isEof); 181 } while (!token.isEof);
180 } 182 }
181 return firstToken; 183 return firstToken;
182 } 184 }
183 185
184 @override 186 @override
185 set preserveComments(bool preserveComments) { 187 set preserveComments(bool preserveComments) {
186 this._preserveComments = preserveComments; 188 this._preserveComments = preserveComments;
187 } 189 }
188 } 190 }
OLDNEW
« no previous file with comments | « no previous file | pkg/analyzer/test/generated/scanner_test.dart » ('j') | pkg/analyzer/test/generated/scanner_test.dart » ('J')

Powered by Google App Engine
This is Rietveld 408576698