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

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

Issue 1480603002: Revert "Ensure that a complete library element has constants evaluated (issue 24890)" (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 5 years 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
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 290 matching lines...) Expand 10 before | Expand all | Expand 10 after
301 * 301 *
302 * [LIBRARY_ELEMENT6] for the library and its import/export closure. 302 * [LIBRARY_ELEMENT6] for the library and its import/export closure.
303 * 303 *
304 * The result is only available for [Source]s representing a library. 304 * The result is only available for [Source]s representing a library.
305 */ 305 */
306 final ResultDescriptor<LibraryElement> LIBRARY_ELEMENT7 = 306 final ResultDescriptor<LibraryElement> LIBRARY_ELEMENT7 =
307 new ResultDescriptor<LibraryElement>('LIBRARY_ELEMENT7', null, 307 new ResultDescriptor<LibraryElement>('LIBRARY_ELEMENT7', null,
308 cachingPolicy: ELEMENT_CACHING_POLICY); 308 cachingPolicy: ELEMENT_CACHING_POLICY);
309 309
310 /** 310 /**
311 * The partial [LibraryElement] associated with a library.
312 *
313 * The same as a [LIBRARY_ELEMENT7].
314 *
315 * The result is only available for [Source]s representing a library.
316 */
317 final ResultDescriptor<LibraryElement> LIBRARY_ELEMENT8 =
318 new ResultDescriptor<LibraryElement>('LIBRARY_ELEMENT8', null,
319 cachingPolicy: ELEMENT_CACHING_POLICY);
320
321 /**
322 * The flag specifying whether all analysis errors are computed in a specific 311 * The flag specifying whether all analysis errors are computed in a specific
323 * library. 312 * library.
324 * 313 *
325 * The result is only available for [Source]s representing a library. 314 * The result is only available for [Source]s representing a library.
326 */ 315 */
327 final ResultDescriptor<bool> LIBRARY_ERRORS_READY = 316 final ResultDescriptor<bool> LIBRARY_ERRORS_READY =
328 new ResultDescriptor<bool>('LIBRARY_ERRORS_READY', false); 317 new ResultDescriptor<bool>('LIBRARY_ERRORS_READY', false);
329 318
330 /** 319 /**
331 * The [LibrarySpecificUnit]s that a library consists of. 320 * The [LibrarySpecificUnit]s that a library consists of.
(...skipping 2089 matching lines...) Expand 10 before | Expand all | Expand 10 after
2421 } 2410 }
2422 2411
2423 /** 2412 /**
2424 * Return a map from the names of the inputs of this kind of task to the task 2413 * Return a map from the names of the inputs of this kind of task to the task
2425 * input descriptors describing those inputs for a task with the 2414 * input descriptors describing those inputs for a task with the
2426 * given [target]. 2415 * given [target].
2427 */ 2416 */
2428 static Map<String, TaskInput> buildInputs(AnalysisTarget target) { 2417 static Map<String, TaskInput> buildInputs(AnalysisTarget target) {
2429 LibrarySpecificUnit unit = target; 2418 LibrarySpecificUnit unit = target;
2430 return <String, TaskInput>{ 2419 return <String, TaskInput>{
2431 'libraryElement': LIBRARY_ELEMENT8.of(unit.library), 2420 'libraryElement': LIBRARY_ELEMENT.of(unit.library),
2432 UNIT_INPUT: RESOLVED_UNIT10.of(unit), 2421 UNIT_INPUT: RESOLVED_UNIT10.of(unit),
2433 CONSTANT_VALUES: 2422 CONSTANT_VALUES:
2434 COMPILATION_UNIT_CONSTANTS.of(unit).toListOf(CONSTANT_VALUE) 2423 COMPILATION_UNIT_CONSTANTS.of(unit).toListOf(CONSTANT_VALUE)
2435 }; 2424 };
2436 } 2425 }
2437 2426
2438 /** 2427 /**
2439 * Create an [EvaluateUnitConstantsTask] based on the given [target] in 2428 * Create an [EvaluateUnitConstantsTask] based on the given [target] in
2440 * the given [context]. 2429 * the given [context].
2441 */ 2430 */
(...skipping 789 matching lines...) Expand 10 before | Expand all | Expand 10 after
3231 } 3220 }
3232 3221
3233 /** 3222 /**
3234 * Return a map from the names of the inputs of this kind of task to the task 3223 * Return a map from the names of the inputs of this kind of task to the task
3235 * input descriptors describing those inputs for a task with the 3224 * input descriptors describing those inputs for a task with the
3236 * given [target]. 3225 * given [target].
3237 */ 3226 */
3238 static Map<String, TaskInput> buildInputs(AnalysisTarget target) { 3227 static Map<String, TaskInput> buildInputs(AnalysisTarget target) {
3239 Source source = target; 3228 Source source = target;
3240 return <String, TaskInput>{ 3229 return <String, TaskInput>{
3241 'allErrors': UNITS.of(source).toListOf(DART_ERRORS), 3230 'allErrors': UNITS.of(source).toListOf(DART_ERRORS)
3242 'libraryElement': LIBRARY_ELEMENT.of(source)
3243 }; 3231 };
3244 } 3232 }
3245 3233
3246 /** 3234 /**
3247 * Create a [LibraryErrorsReadyTask] based on the given [target] in the given 3235 * Create a [LibraryErrorsReadyTask] based on the given [target] in the given
3248 * [context]. 3236 * [context].
3249 */ 3237 */
3250 static LibraryErrorsReadyTask createTask( 3238 static LibraryErrorsReadyTask createTask(
3251 AnalysisContext context, AnalysisTarget target) { 3239 AnalysisContext context, AnalysisTarget target) {
3252 return new LibraryErrorsReadyTask(context, target); 3240 return new LibraryErrorsReadyTask(context, target);
(...skipping 1210 matching lines...) Expand 10 before | Expand all | Expand 10 after
4463 * the given [context]. 4451 * the given [context].
4464 */ 4452 */
4465 static ResolveInstanceFieldsInUnitTask createTask( 4453 static ResolveInstanceFieldsInUnitTask createTask(
4466 AnalysisContext context, AnalysisTarget target) { 4454 AnalysisContext context, AnalysisTarget target) {
4467 return new ResolveInstanceFieldsInUnitTask(context, target); 4455 return new ResolveInstanceFieldsInUnitTask(context, target);
4468 } 4456 }
4469 } 4457 }
4470 4458
4471 /** 4459 /**
4472 * A task that finishes resolution by requesting [RESOLVED_UNIT10] for every 4460 * A task that finishes resolution by requesting [RESOLVED_UNIT10] for every
4473 * unit in the libraries closure and produces [LIBRARY_ELEMENT8]. 4461 * unit in the libraries closure and produces [LIBRARY_ELEMENT].
4474 */ 4462 */
4475 class ResolveLibraryReferencesTask extends SourceBasedAnalysisTask { 4463 class ResolveLibraryReferencesTask extends SourceBasedAnalysisTask {
4476 /** 4464 /**
4477 * The name of the [LIBRARY_ELEMENT7] input. 4465 * The name of the [LIBRARY_ELEMENT5] input.
4478 */ 4466 */
4479 static const String LIBRARY_INPUT = 'LIBRARY_INPUT'; 4467 static const String LIBRARY_INPUT = 'LIBRARY_INPUT';
4480 4468
4481 /** 4469 /**
4482 * The name of the list of [RESOLVED_UNIT10] input. 4470 * The name of the list of [RESOLVED_UNIT10] input.
4483 */ 4471 */
4484 static const String UNITS_INPUT = 'UNITS_INPUT'; 4472 static const String UNITS_INPUT = 'UNITS_INPUT';
4485 4473
4486 /** 4474 /**
4487 * The task descriptor describing this kind of task. 4475 * The task descriptor describing this kind of task.
4488 */ 4476 */
4489 static final TaskDescriptor DESCRIPTOR = new TaskDescriptor( 4477 static final TaskDescriptor DESCRIPTOR = new TaskDescriptor(
4490 'ResolveLibraryReferencesTask', 4478 'ResolveLibraryReferencesTask',
4491 createTask, 4479 createTask,
4492 buildInputs, 4480 buildInputs,
4493 <ResultDescriptor>[LIBRARY_ELEMENT8, REFERENCED_NAMES]); 4481 <ResultDescriptor>[LIBRARY_ELEMENT, REFERENCED_NAMES]);
4494 4482
4495 ResolveLibraryReferencesTask( 4483 ResolveLibraryReferencesTask(
4496 InternalAnalysisContext context, AnalysisTarget target) 4484 InternalAnalysisContext context, AnalysisTarget target)
4497 : super(context, target); 4485 : super(context, target);
4498 4486
4499 @override 4487 @override
4500 TaskDescriptor get descriptor => DESCRIPTOR; 4488 TaskDescriptor get descriptor => DESCRIPTOR;
4501 4489
4502 @override 4490 @override
4503 void internalPerform() { 4491 void internalPerform() {
4504 // 4492 //
4505 // Prepare inputs. 4493 // Prepare inputs.
4506 // 4494 //
4507 LibraryElement library = getRequiredInput(LIBRARY_INPUT); 4495 LibraryElement library = getRequiredInput(LIBRARY_INPUT);
4508 List<CompilationUnit> units = getRequiredInput(UNITS_INPUT); 4496 List<CompilationUnit> units = getRequiredInput(UNITS_INPUT);
4509 // Compute referenced names. 4497 // Compute referenced names.
4510 ReferencedNames referencedNames = new ReferencedNames(); 4498 ReferencedNames referencedNames = new ReferencedNames();
4511 for (CompilationUnit unit in units) { 4499 for (CompilationUnit unit in units) {
4512 new ReferencedNamesBuilder(referencedNames).build(unit); 4500 new ReferencedNamesBuilder(referencedNames).build(unit);
4513 } 4501 }
4514 // 4502 //
4515 // Record outputs. 4503 // Record outputs.
4516 // 4504 //
4517 outputs[LIBRARY_ELEMENT8] = library; 4505 outputs[LIBRARY_ELEMENT] = library;
4518 outputs[REFERENCED_NAMES] = referencedNames; 4506 outputs[REFERENCED_NAMES] = referencedNames;
4519 } 4507 }
4520 4508
4521 /** 4509 /**
4522 * Return a map from the names of the inputs of this kind of task to the task 4510 * Return a map from the names of the inputs of this kind of task to the task
4523 * input descriptors describing those inputs for a task with the 4511 * input descriptors describing those inputs for a task with the
4524 * given [target]. 4512 * given [target].
4525 */ 4513 */
4526 static Map<String, TaskInput> buildInputs(AnalysisTarget target) { 4514 static Map<String, TaskInput> buildInputs(AnalysisTarget target) {
4527 Source source = target; 4515 Source source = target;
4528 return <String, TaskInput>{ 4516 return <String, TaskInput>{
4529 LIBRARY_INPUT: LIBRARY_ELEMENT7.of(source), 4517 LIBRARY_INPUT: LIBRARY_ELEMENT5.of(source),
4530 UNITS_INPUT: LIBRARY_SPECIFIC_UNITS.of(source).toListOf(RESOLVED_UNIT10), 4518 UNITS_INPUT: LIBRARY_SPECIFIC_UNITS.of(source).toListOf(RESOLVED_UNIT10),
4531 'thisLibraryClosureIsReady': READY_RESOLVED_UNIT10.of(source), 4519 'thisLibraryClosureIsReady': READY_RESOLVED_UNIT10.of(source),
4532 }; 4520 };
4533 } 4521 }
4534 4522
4535 /** 4523 /**
4536 * Create a [ResolveLibraryReferencesTask] based on the given [target] in 4524 * Create a [ResolveLibraryReferencesTask] based on the given [target] in
4537 * the given [context]. 4525 * the given [context].
4538 */ 4526 */
4539 static ResolveLibraryReferencesTask createTask( 4527 static ResolveLibraryReferencesTask createTask(
4540 AnalysisContext context, AnalysisTarget target) { 4528 AnalysisContext context, AnalysisTarget target) {
4541 return new ResolveLibraryReferencesTask(context, target); 4529 return new ResolveLibraryReferencesTask(context, target);
4542 } 4530 }
4543 } 4531 }
4544 4532
4545 /** 4533 /**
4546 * A task that finishes resolution by requesting [RESOLVED_UNIT11] for every
4547 * unit in the libraries closure and produces [LIBRARY_ELEMENT].
4548 */
4549 class ResolveLibraryTask extends SourceBasedAnalysisTask {
4550 /**
4551 * The name of the [LIBRARY_ELEMENT8] input.
4552 */
4553 static const String LIBRARY_INPUT = 'LIBRARY_INPUT';
4554
4555 /**
4556 * The name of the list of [RESOLVED_UNIT11] input.
4557 */
4558 static const String UNITS_INPUT = 'UNITS_INPUT';
4559
4560 /**
4561 * The task descriptor describing this kind of task.
4562 */
4563 static final TaskDescriptor DESCRIPTOR = new TaskDescriptor(
4564 'ResolveLibraryTask',
4565 createTask,
4566 buildInputs,
4567 <ResultDescriptor>[LIBRARY_ELEMENT]);
4568
4569 ResolveLibraryTask(InternalAnalysisContext context, AnalysisTarget target)
4570 : super(context, target);
4571
4572 @override
4573 TaskDescriptor get descriptor => DESCRIPTOR;
4574
4575 @override
4576 void internalPerform() {
4577 //
4578 // Prepare inputs.
4579 //
4580 LibraryElement library = getRequiredInput(LIBRARY_INPUT);
4581 //
4582 // Record outputs.
4583 //
4584 outputs[LIBRARY_ELEMENT] = library;
4585 }
4586
4587 /**
4588 * Return a map from the names of the inputs of this kind of task to the task
4589 * input descriptors describing those inputs for a task with the
4590 * given [target].
4591 */
4592 static Map<String, TaskInput> buildInputs(AnalysisTarget target) {
4593 Source source = target;
4594 return <String, TaskInput>{
4595 LIBRARY_INPUT: LIBRARY_ELEMENT8.of(source),
4596 'thisLibraryClosureIsReady': READY_RESOLVED_UNIT.of(source),
4597 };
4598 }
4599
4600 /**
4601 * Create a [ResolveLibraryTask] based on the given [target] in the given
4602 * [context].
4603 */
4604 static ResolveLibraryTask createTask(
4605 AnalysisContext context, AnalysisTarget target) {
4606 return new ResolveLibraryTask(context, target);
4607 }
4608 }
4609
4610 /**
4611 * An artificial task that does nothing except to force type names resolution 4534 * An artificial task that does nothing except to force type names resolution
4612 * for the defining and part units of a library. 4535 * for the defining and part units of a library.
4613 */ 4536 */
4614 class ResolveLibraryTypeNamesTask extends SourceBasedAnalysisTask { 4537 class ResolveLibraryTypeNamesTask extends SourceBasedAnalysisTask {
4615 /** 4538 /**
4616 * The name of the [LIBRARY_ELEMENT4] input. 4539 * The name of the [LIBRARY_ELEMENT4] input.
4617 */ 4540 */
4618 static const String LIBRARY_INPUT = 'LIBRARY_INPUT'; 4541 static const String LIBRARY_INPUT = 'LIBRARY_INPUT';
4619 4542
4620 /** 4543 /**
(...skipping 738 matching lines...) Expand 10 before | Expand all | Expand 10 after
5359 5282
5360 @override 5283 @override
5361 bool moveNext() { 5284 bool moveNext() {
5362 if (_newSources.isEmpty) { 5285 if (_newSources.isEmpty) {
5363 return false; 5286 return false;
5364 } 5287 }
5365 currentTarget = _newSources.removeLast(); 5288 currentTarget = _newSources.removeLast();
5366 return true; 5289 return true;
5367 } 5290 }
5368 } 5291 }
OLDNEW
« no previous file with comments | « pkg/analyzer/lib/src/plugin/engine_plugin.dart ('k') | pkg/analyzer/test/src/context/context_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698