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

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

Issue 1417143003: Remove IMPORT_EXPORT_SOURCE_CLOSURE and IS_CLIENT results. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 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/plugin/engine_plugin.dart ('k') | pkg/analyzer/lib/src/task/driver.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 8
9 import 'package:analyzer/src/context/cache.dart'; 9 import 'package:analyzer/src/context/cache.dart';
10 import 'package:analyzer/src/generated/ast.dart'; 10 import 'package:analyzer/src/generated/ast.dart';
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
146 * 146 *
147 * The list will be empty if there were no errors, but will not be `null`. 147 * The list will be empty if there were no errors, but will not be `null`.
148 * 148 *
149 * The result is only available for [LibrarySpecificUnit]s. 149 * The result is only available for [LibrarySpecificUnit]s.
150 */ 150 */
151 final ListResultDescriptor<AnalysisError> HINTS = 151 final ListResultDescriptor<AnalysisError> HINTS =
152 new ListResultDescriptor<AnalysisError>( 152 new ListResultDescriptor<AnalysisError>(
153 'HINT_ERRORS', AnalysisError.NO_ERRORS); 153 'HINT_ERRORS', AnalysisError.NO_ERRORS);
154 154
155 /** 155 /**
156 * The sources representing the combined import/export closure of a library.
157 * The [Source]s include only library sources, not their units.
158 *
159 * The result is only available for [Source]s representing a library.
160 */
161 final ListResultDescriptor<Source> IMPORT_EXPORT_SOURCE_CLOSURE =
162 new ListResultDescriptor<Source>('IMPORT_EXPORT_SOURCE_CLOSURE', null);
163
164 /**
165 * A list of the [VariableElement]s whose type should be inferred that another 156 * A list of the [VariableElement]s whose type should be inferred that another
166 * inferable static variable (the target) depends on. 157 * inferable static variable (the target) depends on.
167 * 158 *
168 * The result is only available for [VariableElement]s, and only when strong 159 * The result is only available for [VariableElement]s, and only when strong
169 * mode is enabled. 160 * mode is enabled.
170 */ 161 */
171 final ListResultDescriptor< 162 final ListResultDescriptor<
172 VariableElement> INFERABLE_STATIC_VARIABLE_DEPENDENCIES = 163 VariableElement> INFERABLE_STATIC_VARIABLE_DEPENDENCIES =
173 new ListResultDescriptor<VariableElement>( 164 new ListResultDescriptor<VariableElement>(
174 'INFERABLE_STATIC_VARIABLE_DEPENDENCIES', null); 165 'INFERABLE_STATIC_VARIABLE_DEPENDENCIES', null);
(...skipping 1302 matching lines...) Expand 10 before | Expand all | Expand 10 after
1477 * Create a [BuildSourceExportClosureTask] based on the given [target] in 1468 * Create a [BuildSourceExportClosureTask] based on the given [target] in
1478 * the given [context]. 1469 * the given [context].
1479 */ 1470 */
1480 static BuildSourceExportClosureTask createTask( 1471 static BuildSourceExportClosureTask createTask(
1481 AnalysisContext context, AnalysisTarget target) { 1472 AnalysisContext context, AnalysisTarget target) {
1482 return new BuildSourceExportClosureTask(context, target); 1473 return new BuildSourceExportClosureTask(context, target);
1483 } 1474 }
1484 } 1475 }
1485 1476
1486 /** 1477 /**
1487 * A task that builds [IMPORT_EXPORT_SOURCE_CLOSURE] of a library, and also
1488 * sets [IS_CLIENT].
1489 */
1490 class BuildSourceImportExportClosureTask extends SourceBasedAnalysisTask {
1491 /**
1492 * The name of the import/export closure.
1493 */
1494 static const String IMPORT_EXPORT_INPUT = 'IMPORT_EXPORT_INPUT';
1495
1496 /**
1497 * The task descriptor describing this kind of task.
1498 */
1499 static final TaskDescriptor DESCRIPTOR = new TaskDescriptor(
1500 'BuildSourceImportExportClosureTask',
1501 createTask,
1502 buildInputs,
1503 <ResultDescriptor>[IMPORT_EXPORT_SOURCE_CLOSURE, IS_CLIENT]);
1504
1505 BuildSourceImportExportClosureTask(
1506 InternalAnalysisContext context, AnalysisTarget target)
1507 : super(context, target);
1508
1509 @override
1510 TaskDescriptor get descriptor => DESCRIPTOR;
1511
1512 @override
1513 void internalPerform() {
1514 List<Source> importExportClosure = getRequiredInput(IMPORT_EXPORT_INPUT);
1515 Source htmlSource = context.sourceFactory.forUri(DartSdk.DART_HTML);
1516 //
1517 // Record outputs.
1518 //
1519 outputs[IMPORT_EXPORT_SOURCE_CLOSURE] = importExportClosure;
1520 outputs[IS_CLIENT] = importExportClosure.contains(htmlSource);
1521 }
1522
1523 /**
1524 * Return a map from the names of the inputs of this kind of task to the task
1525 * input descriptors describing those inputs for a task with the
1526 * given library [target].
1527 */
1528 static Map<String, TaskInput> buildInputs(AnalysisTarget target) {
1529 Source source = target;
1530 return <String, TaskInput>{
1531 IMPORT_EXPORT_INPUT:
1532 new _ImportExportSourceClosureTaskInput(source, LIBRARY_ELEMENT2)
1533 };
1534 }
1535
1536 /**
1537 * Create a [BuildSourceImportExportClosureTask] based on the given [target]
1538 * in the given [context].
1539 */
1540 static BuildSourceImportExportClosureTask createTask(
1541 AnalysisContext context, AnalysisTarget target) {
1542 return new BuildSourceImportExportClosureTask(context, target);
1543 }
1544 }
1545
1546 /**
1547 * A task that builds [TYPE_PROVIDER] for a context. 1478 * A task that builds [TYPE_PROVIDER] for a context.
1548 */ 1479 */
1549 class BuildTypeProviderTask extends SourceBasedAnalysisTask { 1480 class BuildTypeProviderTask extends SourceBasedAnalysisTask {
1550 /** 1481 /**
1551 * The [PUBLIC_NAMESPACE] input of the `dart:core` library. 1482 * The [PUBLIC_NAMESPACE] input of the `dart:core` library.
1552 */ 1483 */
1553 static const String CORE_INPUT = 'CORE_INPUT'; 1484 static const String CORE_INPUT = 'CORE_INPUT';
1554 1485
1555 /** 1486 /**
1556 * The [PUBLIC_NAMESPACE] input of the `dart:async` library. 1487 * The [PUBLIC_NAMESPACE] input of the `dart:async` library.
(...skipping 2002 matching lines...) Expand 10 before | Expand all | Expand 10 after
3559 compilationUnit.functionTypeAliases.forEach(_addIfPublic); 3490 compilationUnit.functionTypeAliases.forEach(_addIfPublic);
3560 compilationUnit.types.forEach(_addIfPublic); 3491 compilationUnit.types.forEach(_addIfPublic);
3561 } 3492 }
3562 } 3493 }
3563 3494
3564 /** 3495 /**
3565 * A task that ensures that [LIBRARY_ELEMENT2] is ready for the target library 3496 * A task that ensures that [LIBRARY_ELEMENT2] is ready for the target library
3566 * source and its import/export closure. 3497 * source and its import/export closure.
3567 */ 3498 */
3568 class ReadyLibraryElement2Task extends SourceBasedAnalysisTask { 3499 class ReadyLibraryElement2Task extends SourceBasedAnalysisTask {
3569 static const String IS_CLIENT_LIST_INPUT1 = 'IS_CLIENT_LIST_INPUT1';
3570 static const String IS_CLIENT_LIST_INPUT2 = 'IS_CLIENT_LIST_INPUT2';
3571
3572 static final TaskDescriptor DESCRIPTOR = new TaskDescriptor( 3500 static final TaskDescriptor DESCRIPTOR = new TaskDescriptor(
3573 'ReadyLibraryElement2Task', 3501 'ReadyLibraryElement2Task',
3574 createTask, 3502 createTask,
3575 buildInputs, 3503 buildInputs,
3576 <ResultDescriptor>[READY_LIBRARY_ELEMENT2, IS_CLIENT]); 3504 <ResultDescriptor>[READY_LIBRARY_ELEMENT2]);
3577 3505
3578 ReadyLibraryElement2Task( 3506 ReadyLibraryElement2Task(
3579 InternalAnalysisContext context, AnalysisTarget target) 3507 InternalAnalysisContext context, AnalysisTarget target)
3580 : super(context, target); 3508 : super(context, target);
3581 3509
3582 @override 3510 @override
3583 TaskDescriptor get descriptor => DESCRIPTOR; 3511 TaskDescriptor get descriptor => DESCRIPTOR;
3584 3512
3585 @override 3513 @override
3586 bool get handlesDependencyCycles => true; 3514 bool get handlesDependencyCycles => true;
3587 3515
3588 @override 3516 @override
3589 void internalPerform() { 3517 void internalPerform() {
3590 bool isClient = _isClient();
3591 outputs[READY_LIBRARY_ELEMENT2] = true; 3518 outputs[READY_LIBRARY_ELEMENT2] = true;
3592 outputs[IS_CLIENT] = isClient;
3593 }
3594
3595 bool _isClient() {
3596 Source htmlSource = context.sourceFactory.forUri(DartSdk.DART_HTML);
3597 Source source = getRequiredSource();
3598 if (source == htmlSource) {
3599 return true;
3600 }
3601 if (_hasTrueElement(getRequiredInput(IS_CLIENT_LIST_INPUT1))) {
3602 return true;
3603 }
3604 if (_hasTrueElement(getRequiredInput(IS_CLIENT_LIST_INPUT2))) {
3605 return true;
3606 }
3607 return false;
3608 } 3519 }
3609 3520
3610 static Map<String, TaskInput> buildInputs(AnalysisTarget target) { 3521 static Map<String, TaskInput> buildInputs(AnalysisTarget target) {
3611 Source source = target; 3522 Source source = target;
3612 return <String, TaskInput>{ 3523 return <String, TaskInput>{
3613 'thisLibraryElementReady': LIBRARY_ELEMENT2.of(source), 3524 'thisLibraryElementReady': LIBRARY_ELEMENT2.of(source),
3614 IS_CLIENT_LIST_INPUT1: IMPORTED_LIBRARIES.of(source).toListOf(IS_CLIENT),
3615 IS_CLIENT_LIST_INPUT2: EXPORTED_LIBRARIES.of(source).toListOf(IS_CLIENT),
3616 'directlyImportedLibrariesReady': 3525 'directlyImportedLibrariesReady':
3617 IMPORTED_LIBRARIES.of(source).toListOf(READY_LIBRARY_ELEMENT2), 3526 IMPORTED_LIBRARIES.of(source).toListOf(READY_LIBRARY_ELEMENT2),
3618 'directlyExportedLibrariesReady': 3527 'directlyExportedLibrariesReady':
3619 EXPORTED_LIBRARIES.of(source).toListOf(READY_LIBRARY_ELEMENT2), 3528 EXPORTED_LIBRARIES.of(source).toListOf(READY_LIBRARY_ELEMENT2),
3620 }; 3529 };
3621 } 3530 }
3622 3531
3623 static ReadyLibraryElement2Task createTask( 3532 static ReadyLibraryElement2Task createTask(
3624 AnalysisContext context, AnalysisTarget target) { 3533 AnalysisContext context, AnalysisTarget target) {
3625 return new ReadyLibraryElement2Task(context, target); 3534 return new ReadyLibraryElement2Task(context, target);
3626 } 3535 }
3627
3628 static bool _hasTrueElement(List<bool> elements) {
3629 if (elements != null) {
3630 for (bool isClient in elements) {
3631 if (isClient == true) {
3632 return true;
3633 }
3634 }
3635 }
3636 return false;
3637 }
3638 } 3536 }
3639 3537
3640 /** 3538 /**
3641 * A task that ensures that [LIBRARY_ELEMENT5] is ready for the target library 3539 * A task that ensures that [LIBRARY_ELEMENT5] is ready for the target library
3642 * source and its import/export closure. 3540 * source and its import/export closure.
3643 */ 3541 */
3644 class ReadyLibraryElement5Task extends SourceBasedAnalysisTask { 3542 class ReadyLibraryElement5Task extends SourceBasedAnalysisTask {
3645 static final TaskDescriptor DESCRIPTOR = new TaskDescriptor( 3543 static final TaskDescriptor DESCRIPTOR = new TaskDescriptor(
3646 'ReadyLibraryElement5Task', 3544 'ReadyLibraryElement5Task',
3647 createTask, 3545 createTask,
(...skipping 1225 matching lines...) Expand 10 before | Expand all | Expand 10 after
4873 4771
4874 @override 4772 @override
4875 bool moveNext() { 4773 bool moveNext() {
4876 if (_newSources.isEmpty) { 4774 if (_newSources.isEmpty) {
4877 return false; 4775 return false;
4878 } 4776 }
4879 currentTarget = _newSources.removeLast(); 4777 currentTarget = _newSources.removeLast();
4880 return true; 4778 return true;
4881 } 4779 }
4882 } 4780 }
OLDNEW
« no previous file with comments | « pkg/analyzer/lib/src/plugin/engine_plugin.dart ('k') | pkg/analyzer/lib/src/task/driver.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698