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

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

Issue 1177963002: Build LIBRARY_ELEMENT after RESOLVED_UNIT6 for all units in the closure of a library. (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
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 test.src.task.dart_test; 5 library test.src.task.dart_test;
6 6
7 import 'package:analyzer/src/context/cache.dart'; 7 import 'package:analyzer/src/context/cache.dart';
8 import 'package:analyzer/src/generated/ast.dart'; 8 import 'package:analyzer/src/generated/ast.dart';
9 import 'package:analyzer/src/generated/constant.dart'; 9 import 'package:analyzer/src/generated/constant.dart';
10 import 'package:analyzer/src/generated/element.dart'; 10 import 'package:analyzer/src/generated/element.dart';
(...skipping 711 matching lines...) Expand 10 before | Expand all | Expand 10 after
722 class B { 722 class B {
723 B(int i); 723 B(int i);
724 } 724 }
725 class M1 {} 725 class M1 {}
726 class M2 {} 726 class M2 {}
727 727
728 class C2 = C1 with M2; 728 class C2 = C1 with M2;
729 class C1 = B with M1; 729 class C1 = B with M1;
730 class C3 = B with M2; 730 class C3 = B with M2;
731 '''); 731 ''');
732 _computeResult(source, LIBRARY_ELEMENT); 732 _computeResult(source, LIBRARY_ELEMENT6);
733 expect(task, new isInstanceOf<BuildLibraryConstructorsTask>()); 733 expect(task, new isInstanceOf<BuildLibraryConstructorsTask>());
734 LibraryElement libraryElement = outputs[LIBRARY_ELEMENT]; 734 LibraryElement libraryElement = outputs[LIBRARY_ELEMENT6];
735 // C1 735 // C1
736 { 736 {
737 ClassElement classElement = libraryElement.getType('C2'); 737 ClassElement classElement = libraryElement.getType('C2');
738 List<ConstructorElement> constructors = classElement.constructors; 738 List<ConstructorElement> constructors = classElement.constructors;
739 expect(constructors, hasLength(1)); 739 expect(constructors, hasLength(1));
740 expect(constructors[0].parameters, hasLength(1)); 740 expect(constructors[0].parameters, hasLength(1));
741 } 741 }
742 // C3 742 // C3
743 { 743 {
744 ClassElement classElement = libraryElement.getType('C3'); 744 ClassElement classElement = libraryElement.getType('C3');
(...skipping 1639 matching lines...) Expand 10 before | Expand all | Expand 10 after
2384 '''); 2384 ''');
2385 LibrarySpecificUnit target = new LibrarySpecificUnit(source, source); 2385 LibrarySpecificUnit target = new LibrarySpecificUnit(source, source);
2386 // prepare unit and "a.m()" invocation 2386 // prepare unit and "a.m()" invocation
2387 _computeResult(target, RESOLVED_UNIT6); 2387 _computeResult(target, RESOLVED_UNIT6);
2388 CompilationUnit unit = outputs[RESOLVED_UNIT6]; 2388 CompilationUnit unit = outputs[RESOLVED_UNIT6];
2389 // walk the AST 2389 // walk the AST
2390 FunctionDeclaration function = unit.declarations[1]; 2390 FunctionDeclaration function = unit.declarations[1];
2391 BlockFunctionBody body = function.functionExpression.body; 2391 BlockFunctionBody body = function.functionExpression.body;
2392 ExpressionStatement statement = body.block.statements[0]; 2392 ExpressionStatement statement = body.block.statements[0];
2393 MethodInvocation invocation = statement.expression; 2393 MethodInvocation invocation = statement.expression;
2394 expect(task, new isInstanceOf<ResolveReferencesTask>()); 2394 expect(task, new isInstanceOf<ResolveUnitReferencesTask>());
2395 expect(unit, same(outputs[RESOLVED_UNIT6])); 2395 expect(unit, same(outputs[RESOLVED_UNIT6]));
2396 // a.m() is resolved now 2396 // a.m() is resolved now
2397 expect(invocation.methodName.staticElement, isNotNull); 2397 expect(invocation.methodName.staticElement, isNotNull);
2398 } 2398 }
2399 2399
2400 test_perform_errors() { 2400 test_perform_errors() {
2401 Source source = newSource('/test.dart', ''' 2401 Source source = newSource('/test.dart', '''
2402 class A { 2402 class A {
2403 } 2403 }
2404 main(A a) { 2404 main(A a) {
2405 a.unknownMethod(); 2405 a.unknownMethod();
2406 } 2406 }
2407 '''); 2407 ''');
2408 LibrarySpecificUnit target = new LibrarySpecificUnit(source, source); 2408 LibrarySpecificUnit target = new LibrarySpecificUnit(source, source);
2409 _computeResult(target, RESOLVED_UNIT6); 2409 _computeResult(target, RESOLVED_UNIT6);
2410 expect(task, new isInstanceOf<ResolveReferencesTask>()); 2410 expect(task, new isInstanceOf<ResolveUnitReferencesTask>());
2411 // validate 2411 // validate
2412 _fillErrorListener(RESOLVE_REFERENCES_ERRORS); 2412 _fillErrorListener(RESOLVE_REFERENCES_ERRORS);
2413 errorListener.assertErrorsWithCodes( 2413 errorListener.assertErrorsWithCodes(
2414 <ErrorCode>[StaticTypeWarningCode.UNDEFINED_METHOD]); 2414 <ErrorCode>[StaticTypeWarningCode.UNDEFINED_METHOD]);
2415 } 2415 }
2416 2416
2417 test_perform_importExport() { 2417 test_perform_importExport() {
2418 newSource('/a.dart', ''' 2418 newSource('/a.dart', '''
2419 library a; 2419 library a;
2420 class A<T> { 2420 class A<T> {
2421 T m() {} 2421 T m() {}
2422 } 2422 }
2423 '''); 2423 ''');
2424 newSource('/b.dart', ''' 2424 newSource('/b.dart', '''
2425 library b; 2425 library b;
2426 export 'a.dart'; 2426 export 'a.dart';
2427 '''); 2427 ''');
2428 Source sourceC = newSource('/c.dart', ''' 2428 Source sourceC = newSource('/c.dart', '''
2429 library c; 2429 library c;
2430 import 'b.dart'; 2430 import 'b.dart';
2431 main() { 2431 main() {
2432 new A<int>().m(); 2432 new A<int>().m();
2433 } 2433 }
2434 '''); 2434 ''');
2435 _computeResult(new LibrarySpecificUnit(sourceC, sourceC), RESOLVED_UNIT6); 2435 _computeResult(new LibrarySpecificUnit(sourceC, sourceC), RESOLVED_UNIT6);
2436 expect(task, new isInstanceOf<ResolveReferencesTask>()); 2436 expect(task, new isInstanceOf<ResolveUnitReferencesTask>());
2437 // validate 2437 // validate
2438 CompilationUnit unit = outputs[RESOLVED_UNIT6]; 2438 CompilationUnit unit = outputs[RESOLVED_UNIT6];
2439 expect(unit, isNotNull); 2439 expect(unit, isNotNull);
2440 { 2440 {
2441 FunctionDeclaration functionDeclaration = unit.declarations[0]; 2441 FunctionDeclaration functionDeclaration = unit.declarations[0];
2442 BlockFunctionBody body = functionDeclaration.functionExpression.body; 2442 BlockFunctionBody body = functionDeclaration.functionExpression.body;
2443 List<Statement> statements = body.block.statements; 2443 List<Statement> statements = body.block.statements;
2444 ExpressionStatement statement = statements[0]; 2444 ExpressionStatement statement = statements[0];
2445 MethodInvocation invocation = statement.expression; 2445 MethodInvocation invocation = statement.expression;
2446 MethodElement methodElement = invocation.methodName.staticElement; 2446 MethodElement methodElement = invocation.methodName.staticElement;
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
2507 } 2507 }
2508 2508
2509 test_perform_buildClosureLibraryElements() { 2509 test_perform_buildClosureLibraryElements() {
2510 Source source = newSource('/test.dart', ''' 2510 Source source = newSource('/test.dart', '''
2511 main() { 2511 main() {
2512 } 2512 }
2513 '''); 2513 ''');
2514 LibrarySpecificUnit target = new LibrarySpecificUnit(source, source); 2514 LibrarySpecificUnit target = new LibrarySpecificUnit(source, source);
2515 _computeResult(target, RESOLVED_UNIT5); 2515 _computeResult(target, RESOLVED_UNIT5);
2516 expect(task, new isInstanceOf<ResolveVariableReferencesTask>()); 2516 expect(task, new isInstanceOf<ResolveVariableReferencesTask>());
2517 // dart:core LIBRARY_ELEMENT is built
2518 expect(analysisCache.getState(
2519 context.sourceFactory.resolveUri(null, 'dart:core'),
2520 LIBRARY_ELEMENT), CacheState.VALID);
2521 } 2517 }
2522 2518
2523 test_perform_local() { 2519 test_perform_local() {
2524 Source source = newSource('/test.dart', ''' 2520 Source source = newSource('/test.dart', '''
2525 main() { 2521 main() {
2526 var v1 = 1; 2522 var v1 = 1;
2527 var v2 = 1; 2523 var v2 = 1;
2528 var v3 = 1; 2524 var v3 = 1;
2529 var v4 = 1; 2525 var v4 = 1;
2530 v2 = 2; 2526 v2 = 2;
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
2717 /** 2713 /**
2718 * Fill [errorListener] with [result] errors in the current [task]. 2714 * Fill [errorListener] with [result] errors in the current [task].
2719 */ 2715 */
2720 void _fillErrorListener(ResultDescriptor<List<AnalysisError>> result) { 2716 void _fillErrorListener(ResultDescriptor<List<AnalysisError>> result) {
2721 List<AnalysisError> errors = task.outputs[result]; 2717 List<AnalysisError> errors = task.outputs[result];
2722 expect(errors, isNotNull, reason: result.name); 2718 expect(errors, isNotNull, reason: result.name);
2723 errorListener = new GatheringErrorListener(); 2719 errorListener = new GatheringErrorListener();
2724 errorListener.addAll(errors); 2720 errorListener.addAll(errors);
2725 } 2721 }
2726 } 2722 }
OLDNEW
« pkg/analyzer/lib/src/task/dart.dart ('K') | « pkg/analyzer/lib/src/task/dart.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698