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

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

Issue 2913043002: fix fasta scanner adapter lineStarts (Closed)
Patch Set: 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
« no previous file with comments | « no previous file | pkg/analyzer/test/generated/scanner_test.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
163 // fasta pretends there is an additional line at EOF 163 // fasta pretends there is an additional line at EOF
164 result.lineStarts.removeLast(); 164 result.lineStarts.removeLast();
165 165
166 // for compatibility, there is already a first entry in lineStarts
167 result.lineStarts.removeAt(0);
168
166 lineStarts.addAll(result.lineStarts); 169 lineStarts.addAll(result.lineStarts);
167 fasta.Token token = result.tokens; 170 fasta.Token token = result.tokens;
168 // The default recovery strategy used by scanString 171 // The default recovery strategy used by scanString
169 // places all error tokens at the head of the stream. 172 // places all error tokens at the head of the stream.
170 while (token.type == TokenType.BAD_INPUT) { 173 while (token.type == TokenType.BAD_INPUT) {
171 translateErrorToken(token, reportError); 174 translateErrorToken(token, reportError);
172 token = token.next; 175 token = token.next;
173 } 176 }
174 firstToken = token; 177 firstToken = token;
175 // Update all token offsets based upon the reader's starting offset 178 // Update all token offsets based upon the reader's starting offset
176 if (_readerOffset != -1) { 179 if (_readerOffset != -1) {
177 final int delta = _readerOffset + 1; 180 final int delta = _readerOffset + 1;
178 do { 181 do {
179 token.offset += delta; 182 token.offset += delta;
180 token = token.next; 183 token = token.next;
181 } while (!token.isEof); 184 } while (!token.isEof);
182 } 185 }
183 return firstToken; 186 return firstToken;
184 } 187 }
185 188
186 @override 189 @override
187 set preserveComments(bool preserveComments) { 190 set preserveComments(bool preserveComments) {
188 this._preserveComments = preserveComments; 191 this._preserveComments = preserveComments;
189 } 192 }
190 } 193 }
OLDNEW
« no previous file with comments | « no previous file | pkg/analyzer/test/generated/scanner_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698