Chromium Code Reviews| OLD | NEW |
|---|---|
| 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:async'; | 5 import 'dart:async'; |
| 6 import 'dart:convert'; | 6 import 'dart:convert'; |
| 7 import 'dart:typed_data'; | 7 import 'dart:typed_data'; |
| 8 | 8 |
| 9 import 'package:analyzer/dart/ast/ast.dart'; | 9 import 'package:analyzer/dart/ast/ast.dart'; |
| 10 import 'package:analyzer/dart/ast/token.dart'; | 10 import 'package:analyzer/dart/ast/token.dart'; |
| (...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 378 } | 378 } |
| 379 | 379 |
| 380 /** | 380 /** |
| 381 * Return a new parsed unresolved [CompilationUnit]. | 381 * Return a new parsed unresolved [CompilationUnit]. |
| 382 */ | 382 */ |
| 383 CompilationUnit parse(AnalysisErrorListener errorListener) { | 383 CompilationUnit parse(AnalysisErrorListener errorListener) { |
| 384 AnalysisOptions analysisOptions = _fsState._analysisOptions; | 384 AnalysisOptions analysisOptions = _fsState._analysisOptions; |
| 385 | 385 |
| 386 if (USE_FASTA_PARSER) { | 386 if (USE_FASTA_PARSER) { |
| 387 try { | 387 try { |
| 388 fasta.ScannerResult scanResult = fasta.scan(_contentBytes, | 388 fasta.ScannerResult scanResult = |
| 389 PerformanceStatistics.scan.makeCurrentWhile(() { | |
| 390 return fasta.scan( | |
| 391 _contentBytes, | |
| 389 includeComments: true, | 392 includeComments: true, |
| 390 scanGenericMethodComments: analysisOptions.strongMode); | 393 scanGenericMethodComments: analysisOptions.strongMode, |
| 394 ); | |
| 395 }); | |
| 391 | 396 |
| 392 var astBuilder = new fasta.AstBuilder( | 397 var astBuilder = new fasta.AstBuilder( |
| 393 new ErrorReporter(errorListener, source), | 398 new ErrorReporter(errorListener, source), |
| 394 null, | 399 null, |
| 395 null, | 400 null, |
| 396 new _FastaElementStoreProxy(), | 401 new _FastaElementStoreProxy(), |
| 397 new fasta.Scope.top(isModifiable: true), | 402 new fasta.Scope.top(isModifiable: true), |
| 398 uri); | 403 uri); |
| 399 astBuilder.parseGenericMethodComments = analysisOptions.strongMode; | 404 astBuilder.parseGenericMethodComments = analysisOptions.strongMode; |
| 400 | 405 |
| 401 var parser = new fasta.Parser(astBuilder); | 406 var parser = new fasta.Parser(astBuilder); |
| 402 astBuilder.parser = parser; | 407 astBuilder.parser = parser; |
| 403 parser.parseUnit(scanResult.tokens); | 408 parser.parseUnit(scanResult.tokens); |
| 404 var unit = astBuilder.pop() as CompilationUnit; | 409 var unit = astBuilder.pop() as CompilationUnit; |
| 405 | 410 |
| 406 LineInfo lineInfo = new LineInfo(scanResult.lineStarts); | 411 LineInfo lineInfo = new LineInfo(scanResult.lineStarts); |
| 407 unit.lineInfo = lineInfo; | 412 unit.lineInfo = lineInfo; |
| 408 return unit; | 413 return unit; |
| 409 } catch (e, st) { | 414 } catch (e, st) { |
| 415 // TODO(devoncarew): We likely shouldn't be doing raw prints here. | |
|
Brian Wilkerson
2017/06/03 23:16:37
You're right. We should minimally use the instrume
scheglov
2017/06/04 00:30:44
This branch does not work yet for anyone but us, a
devoncarew
2017/06/04 01:45:52
Removed the TODO: - I expect this will get cleaned
| |
| 410 print(e); | 416 print(e); |
| 411 print(st); | 417 print(st); |
| 412 rethrow; | 418 rethrow; |
| 413 } | 419 } |
| 414 } else { | 420 } else { |
| 415 CharSequenceReader reader = new CharSequenceReader(content); | 421 CharSequenceReader reader = new CharSequenceReader(content); |
| 416 Scanner scanner = new Scanner(source, reader, errorListener); | 422 Scanner scanner = new Scanner(source, reader, errorListener); |
| 417 scanner.scanGenericMethodComments = analysisOptions.strongMode; | 423 scanner.scanGenericMethodComments = analysisOptions.strongMode; |
| 418 Token token = scanner.tokenize(); | 424 Token token = PerformanceStatistics.scan.makeCurrentWhile(() { |
| 425 return scanner.tokenize(); | |
| 426 }); | |
| 419 LineInfo lineInfo = new LineInfo(scanner.lineStarts); | 427 LineInfo lineInfo = new LineInfo(scanner.lineStarts); |
| 420 | 428 |
| 421 Parser parser = new Parser(source, errorListener); | 429 Parser parser = new Parser(source, errorListener); |
| 422 parser.enableAssertInitializer = analysisOptions.enableAssertInitializer; | 430 parser.enableAssertInitializer = analysisOptions.enableAssertInitializer; |
| 423 parser.parseGenericMethodComments = analysisOptions.strongMode; | 431 parser.parseGenericMethodComments = analysisOptions.strongMode; |
| 424 CompilationUnit unit = parser.parseCompilationUnit(token); | 432 CompilationUnit unit = parser.parseCompilationUnit(token); |
|
scheglov
2017/06/04 00:30:44
Instrument parsing here.
This will cover parsing f
devoncarew
2017/06/04 01:45:52
I instrumented the whole (enclosing) method with t
| |
| 425 unit.lineInfo = lineInfo; | 433 unit.lineInfo = lineInfo; |
| 426 return unit; | 434 return unit; |
| 427 } | 435 } |
| 428 } | 436 } |
| 429 | 437 |
| 430 /** | 438 /** |
| 431 * Read the file content and ensure that all of the file properties are | 439 * Read the file content and ensure that all of the file properties are |
| 432 * consistent with the read content, including API signature. | 440 * consistent with the read content, including API signature. |
| 433 * | 441 * |
| 434 * Return `true` if the API signature changed since the last refresh. | 442 * Return `true` if the API signature changed since the last refresh. |
| (...skipping 496 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 931 _FastaElementProxy operator [](fasta.Builder builder) => | 939 _FastaElementProxy operator [](fasta.Builder builder) => |
| 932 _elements.putIfAbsent(builder, () => new _FastaElementProxy()); | 940 _elements.putIfAbsent(builder, () => new _FastaElementProxy()); |
| 933 | 941 |
| 934 @override | 942 @override |
| 935 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); | 943 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); |
| 936 } | 944 } |
| 937 | 945 |
| 938 class _FastaInterfaceTypeProxy implements fasta.KernelInterfaceType { | 946 class _FastaInterfaceTypeProxy implements fasta.KernelInterfaceType { |
| 939 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); | 947 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); |
| 940 } | 948 } |
| OLD | NEW |