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

Side by Side Diff: pkg/analyzer/lib/src/dart/analysis/file_state.dart

Issue 2473003003: Implement 'Sort Members' for the new analysis driver. (Closed)
Patch Set: Created 4 years, 1 month 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 | « pkg/analyzer/lib/src/dart/analysis/driver.dart ('k') | no next file » | 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) 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 import 'dart:convert'; 5 import 'dart:convert';
6 import 'dart:typed_data'; 6 import 'dart:typed_data';
7 7
8 import 'package:analyzer/dart/ast/ast.dart'; 8 import 'package:analyzer/dart/ast/ast.dart';
9 import 'package:analyzer/dart/ast/token.dart'; 9 import 'package:analyzer/dart/ast/token.dart';
10 import 'package:analyzer/error/listener.dart'; 10 import 'package:analyzer/error/listener.dart';
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
133 * The list of files this library file references as parts. 133 * The list of files this library file references as parts.
134 */ 134 */
135 List<FileState> get partedFiles => _partedFiles; 135 List<FileState> get partedFiles => _partedFiles;
136 136
137 /** 137 /**
138 * The [UnlinkedUnit] of the file. 138 * The [UnlinkedUnit] of the file.
139 */ 139 */
140 UnlinkedUnit get unlinked => _unlinked; 140 UnlinkedUnit get unlinked => _unlinked;
141 141
142 /** 142 /**
143 * Return a new parsed unresolved [CompilationUnit].
144 */
145 CompilationUnit parse(AnalysisErrorListener errorListener) {
146 AnalysisOptions analysisOptions = _fsState._analysisOptions;
147
148 CharSequenceReader reader = new CharSequenceReader(content);
149 Scanner scanner = new Scanner(source, reader, errorListener);
150 scanner.scanGenericMethodComments = analysisOptions.strongMode;
151 Token token = scanner.tokenize();
152 LineInfo lineInfo = new LineInfo(scanner.lineStarts);
153
154 Parser parser = new Parser(source, errorListener);
155 parser.parseGenericMethodComments = analysisOptions.strongMode;
156 CompilationUnit unit = parser.parseCompilationUnit(token);
157 unit.lineInfo = lineInfo;
158 return unit;
159 }
160
161 /**
143 * Read the file content and ensure that all of the file properties are 162 * Read the file content and ensure that all of the file properties are
144 * consistent with the read content, including API signature. 163 * consistent with the read content, including API signature.
145 * 164 *
146 * Return `true` if the API signature changed since the last refresh. 165 * Return `true` if the API signature changed since the last refresh.
147 */ 166 */
148 bool refresh() { 167 bool refresh() {
149 // Read the content. 168 // Read the content.
150 try { 169 try {
151 _content = _fsState._contentOverlay[path]; 170 _content = _fsState._contentOverlay[path];
152 _content ??= _fsState._resourceProvider.getFile(path).readAsStringSync(); 171 _content ??= _fsState._resourceProvider.getFile(path).readAsStringSync();
(...skipping 22 matching lines...) Expand all
175 signature.addUint32List(_fsState._salt); 194 signature.addUint32List(_fsState._salt);
176 signature.addBytes(contentBytes); 195 signature.addBytes(contentBytes);
177 unlinkedKey = '${signature.toHex()}.unlinked'; 196 unlinkedKey = '${signature.toHex()}.unlinked';
178 } 197 }
179 198
180 // Prepare bytes of the unlinked bundle - existing or new. 199 // Prepare bytes of the unlinked bundle - existing or new.
181 List<int> bytes; 200 List<int> bytes;
182 { 201 {
183 bytes = _fsState._byteStore.get(unlinkedKey); 202 bytes = _fsState._byteStore.get(unlinkedKey);
184 if (bytes == null) { 203 if (bytes == null) {
185 CompilationUnit unit = 204 CompilationUnit unit = parse(AnalysisErrorListener.NULL_LISTENER);
186 _parse(source, _content, _fsState._analysisOptions);
187 _fsState._logger.run('Create unlinked for $path', () { 205 _fsState._logger.run('Create unlinked for $path', () {
188 UnlinkedUnitBuilder unlinkedUnit = serializeAstUnlinked(unit); 206 UnlinkedUnitBuilder unlinkedUnit = serializeAstUnlinked(unit);
189 bytes = unlinkedUnit.toBuffer(); 207 bytes = unlinkedUnit.toBuffer();
190 _fsState._byteStore.put(unlinkedKey, bytes); 208 _fsState._byteStore.put(unlinkedKey, bytes);
191 }); 209 });
192 } 210 }
193 } 211 }
194 212
195 // Read the unlinked bundle. 213 // Read the unlinked bundle.
196 _unlinked = new UnlinkedUnit.fromBuffer(bytes); 214 _unlinked = new UnlinkedUnit.fromBuffer(bytes);
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
271 if (a[i] != b[i]) { 289 if (a[i] != b[i]) {
272 return false; 290 return false;
273 } 291 }
274 } 292 }
275 return true; 293 return true;
276 } 294 }
277 295
278 static bool _isDartUri(String uri) { 296 static bool _isDartUri(String uri) {
279 return uri.startsWith('dart:'); 297 return uri.startsWith('dart:');
280 } 298 }
281
282 /**
283 * Return the parsed unresolved [CompilationUnit] for the given [content].
284 */
285 static CompilationUnit _parse(
286 Source source, String content, AnalysisOptions analysisOptions) {
287 AnalysisErrorListener errorListener = AnalysisErrorListener.NULL_LISTENER;
288
289 CharSequenceReader reader = new CharSequenceReader(content);
290 Scanner scanner = new Scanner(source, reader, errorListener);
291 scanner.scanGenericMethodComments = analysisOptions.strongMode;
292 Token token = scanner.tokenize();
293 LineInfo lineInfo = new LineInfo(scanner.lineStarts);
294
295 Parser parser = new Parser(source, errorListener);
296 parser.parseGenericMethodComments = analysisOptions.strongMode;
297 CompilationUnit unit = parser.parseCompilationUnit(token);
298 unit.lineInfo = lineInfo;
299 return unit;
300 }
301 } 299 }
302 300
303 /** 301 /**
304 * Information about known file system state. 302 * Information about known file system state.
305 */ 303 */
306 class FileSystemState { 304 class FileSystemState {
307 final PerformanceLog _logger; 305 final PerformanceLog _logger;
308 final ResourceProvider _resourceProvider; 306 final ResourceProvider _resourceProvider;
309 final ByteStore _byteStore; 307 final ByteStore _byteStore;
310 final FileContentOverlay _contentOverlay; 308 final FileContentOverlay _contentOverlay;
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
400 FileState canonicalFile = getFileForPath(path); 398 FileState canonicalFile = getFileForPath(path);
401 List<FileState> allFiles = _pathToFiles[path].toList(); 399 List<FileState> allFiles = _pathToFiles[path].toList();
402 if (allFiles.length == 1) { 400 if (allFiles.length == 1) {
403 return allFiles; 401 return allFiles;
404 } 402 }
405 return allFiles 403 return allFiles
406 ..remove(canonicalFile) 404 ..remove(canonicalFile)
407 ..insert(0, canonicalFile); 405 ..insert(0, canonicalFile);
408 } 406 }
409 } 407 }
OLDNEW
« no previous file with comments | « pkg/analyzer/lib/src/dart/analysis/driver.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698