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

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

Issue 1167773002: Record SourceKind.UNKNOWN for not existing sources. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 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/src/task/dart_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) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, 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.task.dart; 5 library analyzer.src.task.dart;
6 6
7 import 'dart:collection'; 7 import 'dart:collection';
8 import 'dart:math' as math; 8 import 'dart:math' as math;
9 9
10 import 'package:analyzer/src/context/cache.dart'; 10 import 'package:analyzer/src/context/cache.dart';
(...skipping 2561 matching lines...) Expand 10 before | Expand all | Expand 10 after
2572 * A task that parses the content of a Dart file, producing an AST structure. 2572 * A task that parses the content of a Dart file, producing an AST structure.
2573 */ 2573 */
2574 class ParseDartTask extends SourceBasedAnalysisTask { 2574 class ParseDartTask extends SourceBasedAnalysisTask {
2575 /** 2575 /**
2576 * The name of the input whose value is the line information produced for the 2576 * The name of the input whose value is the line information produced for the
2577 * file. 2577 * file.
2578 */ 2578 */
2579 static const String LINE_INFO_INPUT_NAME = 'LINE_INFO_INPUT_NAME'; 2579 static const String LINE_INFO_INPUT_NAME = 'LINE_INFO_INPUT_NAME';
2580 2580
2581 /** 2581 /**
2582 * The name of the input whose value is the modification time of the file.
2583 */
2584 static const String MODIFICATION_TIME_INPUT_NAME =
2585 'MODIFICATION_TIME_INPUT_NAME';
2586
2587 /**
2582 * The name of the input whose value is the token stream produced for the file . 2588 * The name of the input whose value is the token stream produced for the file .
2583 */ 2589 */
2584 static const String TOKEN_STREAM_INPUT_NAME = 'TOKEN_STREAM_INPUT_NAME'; 2590 static const String TOKEN_STREAM_INPUT_NAME = 'TOKEN_STREAM_INPUT_NAME';
2585 2591
2586 /** 2592 /**
2587 * The task descriptor describing this kind of task. 2593 * The task descriptor describing this kind of task.
2588 */ 2594 */
2589 static final TaskDescriptor DESCRIPTOR = new TaskDescriptor('ParseDartTask', 2595 static final TaskDescriptor DESCRIPTOR = new TaskDescriptor('ParseDartTask',
2590 createTask, buildInputs, <ResultDescriptor>[ 2596 createTask, buildInputs, <ResultDescriptor>[
2591 EXPLICITLY_IMPORTED_LIBRARIES, 2597 EXPLICITLY_IMPORTED_LIBRARIES,
(...skipping 13 matching lines...) Expand all
2605 ParseDartTask(InternalAnalysisContext context, AnalysisTarget target) 2611 ParseDartTask(InternalAnalysisContext context, AnalysisTarget target)
2606 : super(context, target); 2612 : super(context, target);
2607 2613
2608 @override 2614 @override
2609 TaskDescriptor get descriptor => DESCRIPTOR; 2615 TaskDescriptor get descriptor => DESCRIPTOR;
2610 2616
2611 @override 2617 @override
2612 void internalPerform() { 2618 void internalPerform() {
2613 Source source = getRequiredSource(); 2619 Source source = getRequiredSource();
2614 LineInfo lineInfo = getRequiredInput(LINE_INFO_INPUT_NAME); 2620 LineInfo lineInfo = getRequiredInput(LINE_INFO_INPUT_NAME);
2621 int modificationTime = getRequiredInput(MODIFICATION_TIME_INPUT_NAME);
2615 Token tokenStream = getRequiredInput(TOKEN_STREAM_INPUT_NAME); 2622 Token tokenStream = getRequiredInput(TOKEN_STREAM_INPUT_NAME);
2616 2623
2617 RecordingErrorListener errorListener = new RecordingErrorListener(); 2624 RecordingErrorListener errorListener = new RecordingErrorListener();
2618 Parser parser = new Parser(source, errorListener); 2625 Parser parser = new Parser(source, errorListener);
2619 AnalysisOptions options = context.analysisOptions; 2626 AnalysisOptions options = context.analysisOptions;
2620 parser.parseFunctionBodies = options.analyzeFunctionBodiesPredicate(source); 2627 parser.parseFunctionBodies = options.analyzeFunctionBodiesPredicate(source);
2621 CompilationUnit unit = parser.parseCompilationUnit(tokenStream); 2628 CompilationUnit unit = parser.parseCompilationUnit(tokenStream);
2622 unit.lineInfo = lineInfo; 2629 unit.lineInfo = lineInfo;
2623 2630
2624 bool hasNonPartOfDirective = false; 2631 bool hasNonPartOfDirective = false;
(...skipping 30 matching lines...) Expand all
2655 // Always include "dart:core" source. 2662 // Always include "dart:core" source.
2656 // 2663 //
2657 HashSet<Source> importedSourceSet = 2664 HashSet<Source> importedSourceSet =
2658 new HashSet.from(explicitlyImportedSourceSet); 2665 new HashSet.from(explicitlyImportedSourceSet);
2659 Source coreLibrarySource = context.sourceFactory.forUri(DartSdk.DART_CORE); 2666 Source coreLibrarySource = context.sourceFactory.forUri(DartSdk.DART_CORE);
2660 importedSourceSet.add(coreLibrarySource); 2667 importedSourceSet.add(coreLibrarySource);
2661 // 2668 //
2662 // Compute kind. 2669 // Compute kind.
2663 // 2670 //
2664 SourceKind sourceKind = SourceKind.LIBRARY; 2671 SourceKind sourceKind = SourceKind.LIBRARY;
2665 if (!hasNonPartOfDirective && hasPartOfDirective) { 2672 if (modificationTime == -1) {
2673 sourceKind = SourceKind.UNKNOWN;
2674 } else if (!hasNonPartOfDirective && hasPartOfDirective) {
2666 sourceKind = SourceKind.PART; 2675 sourceKind = SourceKind.PART;
2667 } 2676 }
2668 // 2677 //
2669 // Record outputs. 2678 // Record outputs.
2670 // 2679 //
2671 List<Source> explicitlyImportedSources = 2680 List<Source> explicitlyImportedSources =
2672 explicitlyImportedSourceSet.toList(); 2681 explicitlyImportedSourceSet.toList();
2673 List<Source> exportedSources = exportedSourceSet.toList(); 2682 List<Source> exportedSources = exportedSourceSet.toList();
2674 List<Source> importedSources = importedSourceSet.toList(); 2683 List<Source> importedSources = importedSourceSet.toList();
2675 List<Source> includedSources = includedSourceSet.toList(); 2684 List<Source> includedSources = includedSourceSet.toList();
(...skipping 10 matching lines...) Expand all
2686 } 2695 }
2687 2696
2688 /** 2697 /**
2689 * Return a map from the names of the inputs of this kind of task to the task 2698 * Return a map from the names of the inputs of this kind of task to the task
2690 * input descriptors describing those inputs for a task with the given 2699 * input descriptors describing those inputs for a task with the given
2691 * [source]. 2700 * [source].
2692 */ 2701 */
2693 static Map<String, TaskInput> buildInputs(Source source) { 2702 static Map<String, TaskInput> buildInputs(Source source) {
2694 return <String, TaskInput>{ 2703 return <String, TaskInput>{
2695 LINE_INFO_INPUT_NAME: LINE_INFO.of(source), 2704 LINE_INFO_INPUT_NAME: LINE_INFO.of(source),
2705 MODIFICATION_TIME_INPUT_NAME: MODIFICATION_TIME.of(source),
2696 TOKEN_STREAM_INPUT_NAME: TOKEN_STREAM.of(source) 2706 TOKEN_STREAM_INPUT_NAME: TOKEN_STREAM.of(source)
2697 }; 2707 };
2698 } 2708 }
2699 2709
2700 /** 2710 /**
2701 * Create a [ParseDartTask] based on the given [target] in the given 2711 * Create a [ParseDartTask] based on the given [target] in the given
2702 * [context]. 2712 * [context].
2703 */ 2713 */
2704 static ParseDartTask createTask( 2714 static ParseDartTask createTask(
2705 AnalysisContext context, AnalysisTarget target) { 2715 AnalysisContext context, AnalysisTarget target) {
(...skipping 658 matching lines...) Expand 10 before | Expand all | Expand 10 after
3364 @override 3374 @override
3365 bool moveNext() { 3375 bool moveNext() {
3366 if (_newSources.isEmpty) { 3376 if (_newSources.isEmpty) {
3367 return false; 3377 return false;
3368 } 3378 }
3369 currentTarget = _newSources.first; 3379 currentTarget = _newSources.first;
3370 _newSources.remove(currentTarget); 3380 _newSources.remove(currentTarget);
3371 return true; 3381 return true;
3372 } 3382 }
3373 } 3383 }
OLDNEW
« no previous file with comments | « no previous file | pkg/analyzer/test/src/task/dart_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698