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

Side by Side Diff: pkg/analyzer/test/src/task/dart_test.dart

Issue 2229603003: Extract unresolved AST parsing (PARSED_UNIT1) from full parsing, which includes UriBasedDirective(s… (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Update task graph. Created 4 years, 4 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
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.test.src.task.dart_test; 5 library analyzer.test.src.task.dart_test;
6 6
7 import 'package:analyzer/dart/ast/ast.dart'; 7 import 'package:analyzer/dart/ast/ast.dart';
8 import 'package:analyzer/dart/ast/token.dart'; 8 import 'package:analyzer/dart/ast/token.dart';
9 import 'package:analyzer/dart/ast/visitor.dart'; 9 import 'package:analyzer/dart/ast/visitor.dart';
10 import 'package:analyzer/dart/element/element.dart'; 10 import 'package:analyzer/dart/element/element.dart';
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 runReflectiveTests(InferInstanceMembersInUnitTaskTest); 60 runReflectiveTests(InferInstanceMembersInUnitTaskTest);
61 runReflectiveTests(InferStaticVariableTypesInUnitTaskTest); 61 runReflectiveTests(InferStaticVariableTypesInUnitTaskTest);
62 runReflectiveTests(InferStaticVariableTypeTaskTest); 62 runReflectiveTests(InferStaticVariableTypeTaskTest);
63 runReflectiveTests(LibraryErrorsReadyTaskTest); 63 runReflectiveTests(LibraryErrorsReadyTaskTest);
64 runReflectiveTests(LibraryUnitErrorsTaskTest); 64 runReflectiveTests(LibraryUnitErrorsTaskTest);
65 runReflectiveTests(ParseDartTaskTest); 65 runReflectiveTests(ParseDartTaskTest);
66 runReflectiveTests(PartiallyResolveUnitReferencesTaskTest); 66 runReflectiveTests(PartiallyResolveUnitReferencesTaskTest);
67 runReflectiveTests(PropagateVariableTypesInUnitTaskTest); 67 runReflectiveTests(PropagateVariableTypesInUnitTaskTest);
68 runReflectiveTests(PropagateVariableTypeTaskTest); 68 runReflectiveTests(PropagateVariableTypeTaskTest);
69 runReflectiveTests(ReferencedNamesBuilderTest); 69 runReflectiveTests(ReferencedNamesBuilderTest);
70 runReflectiveTests(ResolveDirectivesTaskTest);
70 runReflectiveTests(ResolveDirectiveElementsTaskTest); 71 runReflectiveTests(ResolveDirectiveElementsTaskTest);
71 runReflectiveTests(ResolveInstanceFieldsInUnitTaskTest); 72 runReflectiveTests(ResolveInstanceFieldsInUnitTaskTest);
72 runReflectiveTests(ResolveLibraryTaskTest); 73 runReflectiveTests(ResolveLibraryTaskTest);
73 runReflectiveTests(ResolveLibraryTypeNamesTaskTest); 74 runReflectiveTests(ResolveLibraryTypeNamesTaskTest);
74 runReflectiveTests(ResolveTopLevelUnitTypeBoundsTaskTest); 75 runReflectiveTests(ResolveTopLevelUnitTypeBoundsTaskTest);
75 runReflectiveTests(ResolveUnitTaskTest); 76 runReflectiveTests(ResolveUnitTaskTest);
76 runReflectiveTests(ResolveUnitTypeNamesTaskTest); 77 runReflectiveTests(ResolveUnitTypeNamesTaskTest);
77 runReflectiveTests(ResolveVariableReferencesTaskTest); 78 runReflectiveTests(ResolveVariableReferencesTaskTest);
78 runReflectiveTests(ScanDartTaskTest); 79 runReflectiveTests(ScanDartTaskTest);
79 runReflectiveTests(StrongModeInferenceTest); 80 runReflectiveTests(StrongModeInferenceTest);
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
128 new isInstanceOf<LibraryUnitErrorsTask>(); 129 new isInstanceOf<LibraryUnitErrorsTask>();
129 isInstanceOf isParseDartTask = new isInstanceOf<ParseDartTask>(); 130 isInstanceOf isParseDartTask = new isInstanceOf<ParseDartTask>();
130 isInstanceOf isPartiallyResolveUnitReferencesTask = 131 isInstanceOf isPartiallyResolveUnitReferencesTask =
131 new isInstanceOf<PartiallyResolveUnitReferencesTask>(); 132 new isInstanceOf<PartiallyResolveUnitReferencesTask>();
132 isInstanceOf isPropagateVariableTypesInUnitTask = 133 isInstanceOf isPropagateVariableTypesInUnitTask =
133 new isInstanceOf<PropagateVariableTypesInUnitTask>(); 134 new isInstanceOf<PropagateVariableTypesInUnitTask>();
134 isInstanceOf isPropagateVariableTypeTask = 135 isInstanceOf isPropagateVariableTypeTask =
135 new isInstanceOf<PropagateVariableTypeTask>(); 136 new isInstanceOf<PropagateVariableTypeTask>();
136 isInstanceOf isResolveDirectiveElementsTask = 137 isInstanceOf isResolveDirectiveElementsTask =
137 new isInstanceOf<ResolveDirectiveElementsTask>(); 138 new isInstanceOf<ResolveDirectiveElementsTask>();
139 isInstanceOf isResolveDirectivesTask =
140 new isInstanceOf<ResolveDirectivesTask>();
138 isInstanceOf isResolveLibraryReferencesTask = 141 isInstanceOf isResolveLibraryReferencesTask =
139 new isInstanceOf<ResolveLibraryReferencesTask>(); 142 new isInstanceOf<ResolveLibraryReferencesTask>();
140 isInstanceOf isResolveLibraryTask = new isInstanceOf<ResolveLibraryTask>(); 143 isInstanceOf isResolveLibraryTask = new isInstanceOf<ResolveLibraryTask>();
141 isInstanceOf isResolveLibraryTypeNamesTask = 144 isInstanceOf isResolveLibraryTypeNamesTask =
142 new isInstanceOf<ResolveLibraryTypeNamesTask>(); 145 new isInstanceOf<ResolveLibraryTypeNamesTask>();
143 isInstanceOf isResolveTopLevelUnitTypeBoundsTask = 146 isInstanceOf isResolveTopLevelUnitTypeBoundsTask =
144 new isInstanceOf<ResolveTopLevelUnitTypeBoundsTask>(); 147 new isInstanceOf<ResolveTopLevelUnitTypeBoundsTask>();
145 isInstanceOf isResolveUnitTask = new isInstanceOf<ResolveUnitTask>(); 148 isInstanceOf isResolveUnitTask = new isInstanceOf<ResolveUnitTask>();
146 isInstanceOf isResolveUnitTypeNamesTask = 149 isInstanceOf isResolveUnitTypeNamesTask =
147 new isInstanceOf<ResolveUnitTypeNamesTask>(); 150 new isInstanceOf<ResolveUnitTypeNamesTask>();
(...skipping 3062 matching lines...) Expand 10 before | Expand all | Expand 10 after
3210 List<AnalysisError> errors = getLibraryUnitErrors(outputs); 3213 List<AnalysisError> errors = getLibraryUnitErrors(outputs);
3211 expect(errors, hasLength(0)); 3214 expect(errors, hasLength(0));
3212 } 3215 }
3213 } 3216 }
3214 3217
3215 @reflectiveTest 3218 @reflectiveTest
3216 class ParseDartTaskTest extends _AbstractDartTaskTest { 3219 class ParseDartTaskTest extends _AbstractDartTaskTest {
3217 Source source; 3220 Source source;
3218 3221
3219 test_perform() { 3222 test_perform() {
3220 _performParseTask(r''' 3223 _performTask(r'''
3221 part of lib; 3224 part of lib;
3222 class B {}'''); 3225 class B {}''');
3223 expect(outputs, hasLength(11)); 3226 expect(outputs, hasLength(4));
3224 expect(outputs[EXPLICITLY_IMPORTED_LIBRARIES], hasLength(0));
3225 expect(outputs[EXPORTED_LIBRARIES], hasLength(0));
3226 _assertHasCore(outputs[IMPORTED_LIBRARIES], 1);
3227 expect(outputs[INCLUDED_PARTS], hasLength(0));
3228 expect(outputs[LIBRARY_SPECIFIC_UNITS], hasLength(1));
3229 expect(outputs[PARSE_ERRORS], hasLength(0)); 3227 expect(outputs[PARSE_ERRORS], hasLength(0));
3230 expect(outputs[PARSED_UNIT], isNotNull); 3228 expect(outputs[PARSED_UNIT1], isNotNull);
3231 expect(outputs[REFERENCED_NAMES], isNotNull); 3229 expect(outputs[REFERENCED_NAMES], isNotNull);
3232 expect(outputs[REFERENCED_SOURCES], hasLength(2));
3233 expect(outputs[SOURCE_KIND], SourceKind.PART); 3230 expect(outputs[SOURCE_KIND], SourceKind.PART);
3234 expect(outputs[UNITS], hasLength(1));
3235 } 3231 }
3236 3232
3237 test_perform_computeSourceKind_noDirectives_hasContainingLibrary() { 3233 test_perform_computeSourceKind_noDirectives_hasContainingLibrary() {
3238 // Parse "lib.dart" to let the context know that "test.dart" is included. 3234 // Parse "lib.dart" to let the context know that "test.dart" is included.
3239 computeResult( 3235 computeResult(
3240 newSource( 3236 newSource(
3241 '/lib.dart', 3237 '/lib.dart',
3242 r''' 3238 r'''
3243 library lib; 3239 library lib;
3244 part 'test.dart'; 3240 part 'test.dart';
3245 '''), 3241 '''),
3246 PARSED_UNIT); 3242 PARSED_UNIT1);
3247 // If there are no the "part of" directive, then it is not a part. 3243 // If there are no the "part of" directive, then it is not a part.
3248 _performParseTask(''); 3244 _performTask('');
3249 expect(outputs[SOURCE_KIND], SourceKind.LIBRARY); 3245 expect(outputs[SOURCE_KIND], SourceKind.LIBRARY);
3250 } 3246 }
3251 3247
3252 test_perform_computeSourceKind_noDirectives_noContainingLibrary() { 3248 test_perform_computeSourceKind_noDirectives_noContainingLibrary() {
3253 _performParseTask(''); 3249 _performTask('');
3254 expect(outputs[SOURCE_KIND], SourceKind.LIBRARY); 3250 expect(outputs[SOURCE_KIND], SourceKind.LIBRARY);
3255 } 3251 }
3256 3252
3257 test_perform_doesNotExist() { 3253 test_perform_doesNotExist() {
3258 _performParseTask(null); 3254 _performTask(null);
3259 expect(outputs, hasLength(11)); 3255 expect(outputs, hasLength(4));
3260 expect(outputs[EXPLICITLY_IMPORTED_LIBRARIES], hasLength(0));
3261 expect(outputs[EXPORTED_LIBRARIES], hasLength(0));
3262 _assertHasCore(outputs[IMPORTED_LIBRARIES], 1);
3263 expect(outputs[INCLUDED_PARTS], hasLength(0));
3264 expect(outputs[LIBRARY_SPECIFIC_UNITS], hasLength(1));
3265 expect(outputs[PARSE_ERRORS], hasLength(0)); 3256 expect(outputs[PARSE_ERRORS], hasLength(0));
3266 expect(outputs[PARSED_UNIT], isNotNull); 3257 expect(outputs[PARSED_UNIT1], isNotNull);
3267 expect(outputs[REFERENCED_NAMES], isNotNull); 3258 expect(outputs[REFERENCED_NAMES], isNotNull);
3268 expect(outputs[REFERENCED_SOURCES], hasLength(2));
3269 expect(outputs[SOURCE_KIND], SourceKind.LIBRARY); 3259 expect(outputs[SOURCE_KIND], SourceKind.LIBRARY);
3270 expect(outputs[UNITS], hasLength(1));
3271 } 3260 }
3272 3261
3273 test_perform_enableAsync_false() { 3262 test_perform_enableAsync_false() {
3274 AnalysisOptionsImpl options = new AnalysisOptionsImpl(); 3263 AnalysisOptionsImpl options = new AnalysisOptionsImpl();
3275 options.enableAsync = false; 3264 options.enableAsync = false;
3276 prepareAnalysisContext(options); 3265 prepareAnalysisContext(options);
3277 _performParseTask(r''' 3266 _performTask(r'''
3278 import 'dart:async'; 3267 import 'dart:async';
3279 class B {void foo() async {}}'''); 3268 class B {void foo() async {}}''');
3280 expect(outputs, hasLength(11)); 3269 expect(outputs, hasLength(4));
3281 expect(outputs[EXPLICITLY_IMPORTED_LIBRARIES], hasLength(1));
3282 expect(outputs[EXPORTED_LIBRARIES], hasLength(0));
3283 _assertHasCore(outputs[IMPORTED_LIBRARIES], 2);
3284 expect(outputs[INCLUDED_PARTS], hasLength(0));
3285 expect(outputs[LIBRARY_SPECIFIC_UNITS], hasLength(1));
3286 expect(outputs[PARSE_ERRORS], hasLength(1)); 3270 expect(outputs[PARSE_ERRORS], hasLength(1));
3287 expect(outputs[PARSED_UNIT], isNotNull); 3271 expect(outputs[PARSED_UNIT1], isNotNull);
3288 expect(outputs[REFERENCED_NAMES], isNotNull); 3272 expect(outputs[REFERENCED_NAMES], isNotNull);
3289 expect(outputs[REFERENCED_SOURCES], hasLength(3));
3290 expect(outputs[SOURCE_KIND], SourceKind.LIBRARY); 3273 expect(outputs[SOURCE_KIND], SourceKind.LIBRARY);
3291 expect(outputs[UNITS], hasLength(1));
3292 } 3274 }
3293 3275
3294 test_perform_enableAsync_true() { 3276 test_perform_enableAsync_true() {
3295 _performParseTask(r''' 3277 _performTask(r'''
3296 import 'dart:async'; 3278 import 'dart:async';
3297 class B {void foo() async {}}'''); 3279 class B {void foo() async {}}''');
3298 expect(outputs, hasLength(11)); 3280 expect(outputs, hasLength(4));
3299 expect(outputs[EXPLICITLY_IMPORTED_LIBRARIES], hasLength(1));
3300 expect(outputs[EXPORTED_LIBRARIES], hasLength(0));
3301 _assertHasCore(outputs[IMPORTED_LIBRARIES], 2);
3302 expect(outputs[INCLUDED_PARTS], hasLength(0));
3303 expect(outputs[LIBRARY_SPECIFIC_UNITS], hasLength(1));
3304 expect(outputs[PARSE_ERRORS], hasLength(0)); 3281 expect(outputs[PARSE_ERRORS], hasLength(0));
3305 expect(outputs[PARSED_UNIT], isNotNull); 3282 expect(outputs[PARSED_UNIT1], isNotNull);
3306 expect(outputs[REFERENCED_NAMES], isNotNull); 3283 expect(outputs[REFERENCED_NAMES], isNotNull);
3307 expect(outputs[REFERENCED_SOURCES], hasLength(3));
3308 expect(outputs[SOURCE_KIND], SourceKind.LIBRARY); 3284 expect(outputs[SOURCE_KIND], SourceKind.LIBRARY);
3309 expect(outputs[UNITS], hasLength(1));
3310 } 3285 }
3311 3286
3312 test_perform_flushTokenStream() { 3287 test_perform_flushTokenStream() {
3313 _performParseTask(r''' 3288 _performTask(r'''
3314 class Test {} 3289 class Test {}
3315 '''); 3290 ''');
3316 expect(analysisCache.getState(source, TOKEN_STREAM), CacheState.FLUSHED); 3291 expect(analysisCache.getState(source, TOKEN_STREAM), CacheState.FLUSHED);
3317 } 3292 }
3318 3293
3319 test_perform_invalidDirectives() { 3294 test_perform_invalidDirectives() {
3320 _performParseTask(r''' 3295 _performTask(r'''
3321 library lib; 3296 library lib;
3322 import '/does/not/exist.dart'; 3297 import '/does/not/exist.dart';
3323 import '://invaliduri.dart'; 3298 import '://invaliduri.dart';
3324 export '${a}lib3.dart'; 3299 export '${a}lib3.dart';
3325 part 'part.dart'; 3300 part 'part.dart';
3326 class A {}'''); 3301 class A {}''');
3327 expect(outputs, hasLength(11)); 3302 expect(outputs, hasLength(4));
3328 expect(outputs[EXPLICITLY_IMPORTED_LIBRARIES], hasLength(1)); 3303 expect(outputs[PARSE_ERRORS], hasLength(0));
3329 expect(outputs[EXPORTED_LIBRARIES], hasLength(0)); 3304 expect(outputs[PARSED_UNIT1], isNotNull);
3330 _assertHasCore(outputs[IMPORTED_LIBRARIES], 2);
3331 expect(outputs[INCLUDED_PARTS], hasLength(1));
3332 expect(outputs[LIBRARY_SPECIFIC_UNITS], hasLength(2));
3333 expect(outputs[PARSE_ERRORS], hasLength(2));
3334 expect(outputs[PARSED_UNIT], isNotNull);
3335 expect(outputs[REFERENCED_NAMES], isNotNull); 3305 expect(outputs[REFERENCED_NAMES], isNotNull);
3336 expect(outputs[REFERENCED_SOURCES], hasLength(4));
3337 expect(outputs[SOURCE_KIND], SourceKind.LIBRARY); 3306 expect(outputs[SOURCE_KIND], SourceKind.LIBRARY);
3338 expect(outputs[UNITS], hasLength(2));
3339 } 3307 }
3340 3308
3341 test_perform_library() { 3309 test_perform_library() {
3342 _performParseTask(r''' 3310 _performTask(r'''
3343 library lib; 3311 library lib;
3344 import 'lib2.dart'; 3312 import 'lib2.dart';
3345 export 'lib3.dart'; 3313 export 'lib3.dart';
3346 part 'part.dart'; 3314 part 'part.dart';
3347 class A {'''); 3315 class A {''');
3348 expect(outputs, hasLength(11)); 3316 expect(outputs, hasLength(4));
3349 expect(outputs[EXPLICITLY_IMPORTED_LIBRARIES], hasLength(1));
3350 expect(outputs[EXPORTED_LIBRARIES], hasLength(1));
3351 _assertHasCore(outputs[IMPORTED_LIBRARIES], 2);
3352 expect(outputs[INCLUDED_PARTS], hasLength(1));
3353 expect(outputs[LIBRARY_SPECIFIC_UNITS], hasLength(2));
3354 expect(outputs[PARSE_ERRORS], hasLength(1)); 3317 expect(outputs[PARSE_ERRORS], hasLength(1));
3355 expect(outputs[PARSED_UNIT], isNotNull); 3318 expect(outputs[PARSED_UNIT1], isNotNull);
3356 expect(outputs[REFERENCED_NAMES], isNotNull); 3319 expect(outputs[REFERENCED_NAMES], isNotNull);
3357 expect(outputs[REFERENCED_SOURCES], hasLength(5));
3358 expect(outputs[SOURCE_KIND], SourceKind.LIBRARY); 3320 expect(outputs[SOURCE_KIND], SourceKind.LIBRARY);
3359 expect(outputs[UNITS], hasLength(2));
3360 }
3361
3362 test_perform_library_selfReferenceAsPart() {
3363 _performParseTask(r'''
3364 library lib;
3365 part 'test.dart';
3366 ''');
3367 expect(outputs[INCLUDED_PARTS], unorderedEquals(<Source>[source]));
3368 } 3321 }
3369 3322
3370 test_perform_part() { 3323 test_perform_part() {
3371 _performParseTask(r''' 3324 _performTask(r'''
3372 part of lib; 3325 part of lib;
3373 class B {}'''); 3326 class B {}''');
3374 expect(outputs, hasLength(11)); 3327 expect(outputs, hasLength(4));
3375 expect(outputs[EXPLICITLY_IMPORTED_LIBRARIES], hasLength(0));
3376 expect(outputs[EXPORTED_LIBRARIES], hasLength(0));
3377 _assertHasCore(outputs[IMPORTED_LIBRARIES], 1);
3378 expect(outputs[INCLUDED_PARTS], hasLength(0));
3379 expect(outputs[LIBRARY_SPECIFIC_UNITS], hasLength(1));
3380 expect(outputs[PARSE_ERRORS], hasLength(0)); 3328 expect(outputs[PARSE_ERRORS], hasLength(0));
3381 expect(outputs[PARSED_UNIT], isNotNull); 3329 expect(outputs[PARSED_UNIT1], isNotNull);
3382 expect(outputs[REFERENCED_NAMES], isNotNull); 3330 expect(outputs[REFERENCED_NAMES], isNotNull);
3383 expect(outputs[REFERENCED_SOURCES], hasLength(2));
3384 expect(outputs[SOURCE_KIND], SourceKind.PART); 3331 expect(outputs[SOURCE_KIND], SourceKind.PART);
3385 expect(outputs[UNITS], hasLength(1));
3386 } 3332 }
3387 3333
3388 void _performParseTask(String content) { 3334 void _performTask(String content) {
3389 if (content == null) { 3335 if (content == null) {
3390 source = resourceProvider.getFile('/test.dart').createSource(); 3336 source = resourceProvider.getFile('/test.dart').createSource();
3391 } else { 3337 } else {
3392 source = newSource('/test.dart', content); 3338 source = newSource('/test.dart', content);
3393 } 3339 }
3394 computeResult(source, PARSED_UNIT, matcher: isParseDartTask); 3340 computeResult(source, PARSED_UNIT1, matcher: isParseDartTask);
3395 } 3341 }
3396 3342
3397 static void _assertHasCore(dynamic sourceList, int lenght) { 3343 static void _assertHasCore(dynamic sourceList, int length) {
3398 List<Source> sources = sourceList as List<Source>; 3344 List<Source> sources = sourceList as List<Source>;
3399 expect(sources, hasLength(lenght)); 3345 expect(sources, hasLength(length));
3400 expect(sources, contains(predicate((Source s) { 3346 expect(sources, contains(predicate((Source s) {
3401 return s.fullName.endsWith('core.dart'); 3347 return s.fullName.endsWith('core.dart');
3402 }))); 3348 })));
3403 } 3349 }
3404 } 3350 }
3405 3351
3406 @reflectiveTest 3352 @reflectiveTest
3407 class PartiallyResolveUnitReferencesTaskTest extends _AbstractDartTaskTest { 3353 class PartiallyResolveUnitReferencesTaskTest extends _AbstractDartTaskTest {
3408 test_perform_propagable() { 3354 test_perform_propagable() {
3409 enableStrongMode(); 3355 enableStrongMode();
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
3537 computeResult(target, RESOLVED_UNIT7, 3483 computeResult(target, RESOLVED_UNIT7,
3538 matcher: isPartiallyResolveUnitReferencesTask); 3484 matcher: isPartiallyResolveUnitReferencesTask);
3539 CompilationUnit unit = outputs[RESOLVED_UNIT7]; 3485 CompilationUnit unit = outputs[RESOLVED_UNIT7];
3540 NodeList<CompilationUnitMember> declarations = unit.declarations; 3486 NodeList<CompilationUnitMember> declarations = unit.declarations;
3541 3487
3542 void expectReference(BlockFunctionBody body, bool isResolved) { 3488 void expectReference(BlockFunctionBody body, bool isResolved) {
3543 ExpressionStatement statement = body.block.statements[0]; 3489 ExpressionStatement statement = body.block.statements[0];
3544 SimpleIdentifier reference = statement.expression; 3490 SimpleIdentifier reference = statement.expression;
3545 expect(reference.staticElement, isResolved ? isNotNull : isNull); 3491 expect(reference.staticElement, isResolved ? isNotNull : isNull);
3546 } 3492 }
3493
3547 // 3494 //
3548 // The reference to 'A' in 'f1' should not be resolved. 3495 // The reference to 'A' in 'f1' should not be resolved.
3549 // 3496 //
3550 FunctionDeclaration f1 = declarations[1]; 3497 FunctionDeclaration f1 = declarations[1];
3551 expectReference(f1.functionExpression.body, false); 3498 expectReference(f1.functionExpression.body, false);
3552 // 3499 //
3553 // The references to 'A' in 'f2' should be resolved. 3500 // The references to 'A' in 'f2' should be resolved.
3554 // 3501 //
3555 TopLevelVariableDeclaration f2 = declarations[2]; 3502 TopLevelVariableDeclaration f2 = declarations[2];
3556 FunctionExpression expression2 = f2.variables.variables[0].initializer; 3503 FunctionExpression expression2 = f2.variables.variables[0].initializer;
(...skipping 657 matching lines...) Expand 10 before | Expand all | Expand 10 after
4214 { 4161 {
4215 ExportDirective exportNode = unitA.directives[2]; 4162 ExportDirective exportNode = unitA.directives[2];
4216 ExportElement exportElement = exportNode.element; 4163 ExportElement exportElement = exportNode.element;
4217 expect(exportElement, isNotNull); 4164 expect(exportElement, isNotNull);
4218 expect(exportElement.exportedLibrary, libraryElementC); 4165 expect(exportElement.exportedLibrary, libraryElementC);
4219 } 4166 }
4220 } 4167 }
4221 } 4168 }
4222 4169
4223 @reflectiveTest 4170 @reflectiveTest
4171 class ResolveDirectivesTaskTest extends _AbstractDartTaskTest {
4172 Source source;
4173
4174 test_perform() {
4175 _performTask(r'''
4176 part of lib;
4177 class B {}''');
4178 expect(outputs, hasLength(9));
4179 expect(outputs[EXPLICITLY_IMPORTED_LIBRARIES], hasLength(0));
4180 expect(outputs[EXPORTED_LIBRARIES], hasLength(0));
4181 _assertHasCore(outputs[IMPORTED_LIBRARIES], 1);
4182 expect(outputs[INCLUDED_PARTS], hasLength(0));
4183 expect(outputs[LIBRARY_SPECIFIC_UNITS], hasLength(1));
4184 expect(outputs[PARSED_UNIT], isNotNull);
4185 expect(outputs[REFERENCED_SOURCES], hasLength(2));
4186 expect(outputs[RESOLVE_DIRECTIVES_ERRORS], hasLength(0));
4187 expect(outputs[UNITS], hasLength(1));
4188 }
4189
4190 test_perform_doesNotExist() {
4191 _performTask(null);
4192 expect(outputs, hasLength(9));
4193 expect(outputs[EXPLICITLY_IMPORTED_LIBRARIES], hasLength(0));
4194 expect(outputs[EXPORTED_LIBRARIES], hasLength(0));
4195 _assertHasCore(outputs[IMPORTED_LIBRARIES], 1);
4196 expect(outputs[INCLUDED_PARTS], hasLength(0));
4197 expect(outputs[LIBRARY_SPECIFIC_UNITS], hasLength(1));
4198 expect(outputs[PARSED_UNIT], isNotNull);
4199 expect(outputs[REFERENCED_SOURCES], hasLength(2));
4200 expect(outputs[RESOLVE_DIRECTIVES_ERRORS], hasLength(0));
4201 expect(outputs[UNITS], hasLength(1));
4202 }
4203
4204 test_perform_enableAsync_false() {
4205 AnalysisOptionsImpl options = new AnalysisOptionsImpl();
4206 options.enableAsync = false;
4207 prepareAnalysisContext(options);
4208 _performTask(r'''
4209 import 'dart:async';
4210 class B {void foo() async {}}''');
4211 expect(outputs, hasLength(9));
4212 expect(outputs[EXPLICITLY_IMPORTED_LIBRARIES], hasLength(1));
4213 expect(outputs[EXPORTED_LIBRARIES], hasLength(0));
4214 _assertHasCore(outputs[IMPORTED_LIBRARIES], 2);
4215 expect(outputs[INCLUDED_PARTS], hasLength(0));
4216 expect(outputs[LIBRARY_SPECIFIC_UNITS], hasLength(1));
4217 expect(outputs[PARSED_UNIT], isNotNull);
4218 expect(outputs[REFERENCED_SOURCES], hasLength(3));
4219 expect(outputs[RESOLVE_DIRECTIVES_ERRORS], hasLength(0));
4220 expect(outputs[UNITS], hasLength(1));
4221 }
4222
4223 test_perform_enableAsync_true() {
4224 _performTask(r'''
4225 import 'dart:async';
4226 class B {void foo() async {}}''');
4227 expect(outputs, hasLength(9));
4228 expect(outputs[EXPLICITLY_IMPORTED_LIBRARIES], hasLength(1));
4229 expect(outputs[EXPORTED_LIBRARIES], hasLength(0));
4230 _assertHasCore(outputs[IMPORTED_LIBRARIES], 2);
4231 expect(outputs[INCLUDED_PARTS], hasLength(0));
4232 expect(outputs[LIBRARY_SPECIFIC_UNITS], hasLength(1));
4233 expect(outputs[PARSED_UNIT], isNotNull);
4234 expect(outputs[REFERENCED_SOURCES], hasLength(3));
4235 expect(outputs[RESOLVE_DIRECTIVES_ERRORS], hasLength(0));
4236 expect(outputs[UNITS], hasLength(1));
4237 }
4238
4239 test_perform_flushParsedUnit1() {
4240 _performTask(r'''
4241 class Test {}
4242 ''');
4243 expect(analysisCache.getState(source, PARSED_UNIT1), CacheState.FLUSHED);
4244 }
4245
4246 test_perform_invalidDirectives() {
4247 _performTask(r'''
4248 library lib;
4249 import '/does/not/exist.dart';
4250 import '://invaliduri.dart';
4251 export '${a}lib3.dart';
4252 part 'part.dart';
4253 class A {}''');
4254 expect(outputs, hasLength(9));
4255 expect(outputs[EXPLICITLY_IMPORTED_LIBRARIES], hasLength(1));
4256 expect(outputs[EXPORTED_LIBRARIES], hasLength(0));
4257 _assertHasCore(outputs[IMPORTED_LIBRARIES], 2);
4258 expect(outputs[INCLUDED_PARTS], hasLength(1));
4259 expect(outputs[LIBRARY_SPECIFIC_UNITS], hasLength(2));
4260 expect(outputs[PARSED_UNIT], isNotNull);
4261 expect(outputs[REFERENCED_SOURCES], hasLength(4));
4262 expect(outputs[RESOLVE_DIRECTIVES_ERRORS], hasLength(2));
4263 expect(outputs[UNITS], hasLength(2));
4264 }
4265
4266 test_perform_library() {
4267 _performTask(r'''
4268 library lib;
4269 import 'lib2.dart';
4270 export 'lib3.dart';
4271 part 'part.dart';
4272 class A {''');
4273 expect(outputs, hasLength(9));
4274 expect(outputs[EXPLICITLY_IMPORTED_LIBRARIES], hasLength(1));
4275 expect(outputs[EXPORTED_LIBRARIES], hasLength(1));
4276 _assertHasCore(outputs[IMPORTED_LIBRARIES], 2);
4277 expect(outputs[INCLUDED_PARTS], hasLength(1));
4278 expect(outputs[LIBRARY_SPECIFIC_UNITS], hasLength(2));
4279 expect(outputs[PARSED_UNIT], isNotNull);
4280 expect(outputs[REFERENCED_SOURCES], hasLength(5));
4281 expect(outputs[RESOLVE_DIRECTIVES_ERRORS], hasLength(0));
4282 expect(outputs[UNITS], hasLength(2));
4283 }
4284
4285 test_perform_library_selfReferenceAsPart() {
4286 _performTask(r'''
4287 library lib;
4288 part 'test.dart';
4289 ''');
4290 expect(outputs[INCLUDED_PARTS], unorderedEquals(<Source>[source]));
4291 }
4292
4293 test_perform_part() {
4294 _performTask(r'''
4295 part of lib;
4296 class B {}''');
4297 expect(outputs, hasLength(9));
4298 expect(outputs[EXPLICITLY_IMPORTED_LIBRARIES], hasLength(0));
4299 expect(outputs[EXPORTED_LIBRARIES], hasLength(0));
4300 _assertHasCore(outputs[IMPORTED_LIBRARIES], 1);
4301 expect(outputs[INCLUDED_PARTS], hasLength(0));
4302 expect(outputs[LIBRARY_SPECIFIC_UNITS], hasLength(1));
4303 expect(outputs[PARSED_UNIT], isNotNull);
4304 expect(outputs[REFERENCED_SOURCES], hasLength(2));
4305 expect(outputs[RESOLVE_DIRECTIVES_ERRORS], hasLength(0));
4306 expect(outputs[UNITS], hasLength(1));
4307 }
4308
4309 void _performTask(String content) {
4310 if (content == null) {
4311 source = resourceProvider.getFile('/test.dart').createSource();
4312 } else {
4313 source = newSource('/test.dart', content);
4314 }
4315 computeResult(source, PARSED_UNIT, matcher: isResolveDirectivesTask);
4316 }
4317
4318 static void _assertHasCore(dynamic sourceList, int length) {
4319 List<Source> sources = sourceList as List<Source>;
4320 expect(sources, hasLength(length));
4321 expect(sources, contains(predicate((Source s) {
4322 return s.fullName.endsWith('core.dart');
4323 })));
4324 }
4325 }
4326
4327 @reflectiveTest
4224 class ResolveInstanceFieldsInUnitTaskTest extends _AbstractDartTaskTest { 4328 class ResolveInstanceFieldsInUnitTaskTest extends _AbstractDartTaskTest {
4225 @override 4329 @override
4226 void setUp() { 4330 void setUp() {
4227 super.setUp(); 4331 super.setUp();
4228 enableStrongMode(); 4332 enableStrongMode();
4229 } 4333 }
4230 4334
4231 test_created_resolved_unit() { 4335 test_created_resolved_unit() {
4232 Source source = newSource( 4336 Source source = newSource(
4233 '/test.dart', 4337 '/test.dart',
(...skipping 1544 matching lines...) Expand 10 before | Expand all | Expand 10 after
5778 } 5882 }
5779 5883
5780 List<dynamic> computeLibraryResults( 5884 List<dynamic> computeLibraryResults(
5781 List<Source> sources, ResultDescriptor result, 5885 List<Source> sources, ResultDescriptor result,
5782 {isInstanceOf matcher: null}) { 5886 {isInstanceOf matcher: null}) {
5783 dynamic compute(Source source) { 5887 dynamic compute(Source source) {
5784 computeResult(new LibrarySpecificUnit(source, source), result, 5888 computeResult(new LibrarySpecificUnit(source, source), result,
5785 matcher: matcher); 5889 matcher: matcher);
5786 return outputs[result]; 5890 return outputs[result];
5787 } 5891 }
5892
5788 return sources.map(compute).toList(); 5893 return sources.map(compute).toList();
5789 } 5894 }
5790 5895
5791 List<Map<ResultDescriptor, dynamic>> computeLibraryResultsMap( 5896 List<Map<ResultDescriptor, dynamic>> computeLibraryResultsMap(
5792 List<Source> sources, ResultDescriptor result, 5897 List<Source> sources, ResultDescriptor result,
5793 {isInstanceOf matcher: null}) { 5898 {isInstanceOf matcher: null}) {
5794 Map<ResultDescriptor, dynamic> compute(Source source) { 5899 Map<ResultDescriptor, dynamic> compute(Source source) {
5795 computeResult(source, result, matcher: matcher); 5900 computeResult(source, result, matcher: matcher);
5796 return outputs; 5901 return outputs;
5797 } 5902 }
5903
5798 return sources.map(compute).toList(); 5904 return sources.map(compute).toList();
5799 } 5905 }
5800 5906
5801 /** 5907 /**
5802 * Create a script object with a single fragment containing the given 5908 * Create a script object with a single fragment containing the given
5803 * [scriptContent]. 5909 * [scriptContent].
5804 */ 5910 */
5805 DartScript createScript(String scriptContent) { 5911 DartScript createScript(String scriptContent) {
5806 String htmlContent = ''' 5912 String htmlContent = '''
5807 <!DOCTYPE html> 5913 <!DOCTYPE html>
(...skipping 27 matching lines...) Expand all
5835 /** 5941 /**
5836 * Fill [errorListener] with [result] errors in the current [task]. 5942 * Fill [errorListener] with [result] errors in the current [task].
5837 */ 5943 */
5838 void _fillErrorListener(ResultDescriptor<List<AnalysisError>> result) { 5944 void _fillErrorListener(ResultDescriptor<List<AnalysisError>> result) {
5839 List<AnalysisError> errors = task.outputs[result] as List<AnalysisError>; 5945 List<AnalysisError> errors = task.outputs[result] as List<AnalysisError>;
5840 expect(errors, isNotNull, reason: result.name); 5946 expect(errors, isNotNull, reason: result.name);
5841 errorListener = new GatheringErrorListener(); 5947 errorListener = new GatheringErrorListener();
5842 errorListener.addAll(errors); 5948 errorListener.addAll(errors);
5843 } 5949 }
5844 } 5950 }
OLDNEW
« no previous file with comments | « pkg/analyzer/test/src/context/context_test.dart ('k') | pkg/analyzer/test/src/task/dart_work_manager_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698