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

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

Issue 2983293002: Remove toplevel inference restriction hints, and restore as much (Closed)
Patch Set: Keep error filter Created 3 years, 5 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/standard_resolution_map.dart'; 8 import 'package:analyzer/dart/ast/standard_resolution_map.dart';
9 import 'package:analyzer/dart/ast/token.dart'; 9 import 'package:analyzer/dart/ast/token.dart';
10 import 'package:analyzer/dart/ast/visitor.dart'; 10 import 'package:analyzer/dart/ast/visitor.dart';
(...skipping 3460 matching lines...) Expand 10 before | Expand all | Expand 10 after
3471 3471
3472 // A.a2 should now be resolved on the rhs, but not yet inferred. 3472 // A.a2 should now be resolved on the rhs, but not yet inferred.
3473 assertVariableDeclarationTypes( 3473 assertVariableDeclarationTypes(
3474 AstFinder.getFieldInClass(unit0, "A", "a2"), dynamicType, intType); 3474 AstFinder.getFieldInClass(unit0, "A", "a2"), dynamicType, intType);
3475 3475
3476 computeResult( 3476 computeResult(
3477 new LibrarySpecificUnit(sources[2], sources[2]), RESOLVED_UNIT9); 3477 new LibrarySpecificUnit(sources[2], sources[2]), RESOLVED_UNIT9);
3478 3478
3479 // A.a2 should now be fully resolved and inferred. 3479 // A.a2 should now be fully resolved and inferred.
3480 assertVariableDeclarationTypes( 3480 assertVariableDeclarationTypes(
3481 AstFinder.getFieldInClass(unit0, "A", "a2"), dynamicType, intType); 3481 AstFinder.getFieldInClass(unit0, "A", "a2"), intType, intType);
3482 3482
3483 assertVariableDeclarationTypes( 3483 assertVariableDeclarationTypes(
3484 AstFinder.getFieldInClass(unit1, "B", "b2"), intType, intType); 3484 AstFinder.getFieldInClass(unit1, "B", "b2"), intType, intType);
3485 } 3485 }
3486 3486
3487 /** 3487 /**
3488 * Test inference of instance fields across units 3488 * Test inference of instance fields across units
3489 */ 3489 */
3490 void test_perform_inference_cross_unit_instance_cyclic() { 3490 void test_perform_inference_cross_unit_instance_cyclic() {
3491 List<Source> sources = newSources({ 3491 List<Source> sources = newSources({
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
3582 AstFinder.getFieldInClass(unit1, "B", "b1"), intType, intType); 3582 AstFinder.getFieldInClass(unit1, "B", "b1"), intType, intType);
3583 assertVariableDeclarationTypes( 3583 assertVariableDeclarationTypes(
3584 AstFinder.getFieldInClass(unit1, "B", "b2"), intType, intType); 3584 AstFinder.getFieldInClass(unit1, "B", "b2"), intType, intType);
3585 3585
3586 computeResult( 3586 computeResult(
3587 new LibrarySpecificUnit(sources[2], sources[2]), RESOLVED_UNIT9); 3587 new LibrarySpecificUnit(sources[2], sources[2]), RESOLVED_UNIT9);
3588 3588
3589 assertVariableDeclarationTypes( 3589 assertVariableDeclarationTypes(
3590 AstFinder.getFieldInClass(unit0, "A", "a1"), intType, intType); 3590 AstFinder.getFieldInClass(unit0, "A", "a1"), intType, intType);
3591 assertVariableDeclarationTypes( 3591 assertVariableDeclarationTypes(
3592 AstFinder.getFieldInClass(unit0, "A", "a2"), dynamicType, intType); 3592 AstFinder.getFieldInClass(unit0, "A", "a2"), intType, intType);
3593 3593
3594 assertVariableDeclarationTypes( 3594 assertVariableDeclarationTypes(
3595 AstFinder.getFieldInClass(unit1, "B", "b1"), intType, intType); 3595 AstFinder.getFieldInClass(unit1, "B", "b1"), intType, intType);
3596 assertVariableDeclarationTypes( 3596 assertVariableDeclarationTypes(
3597 AstFinder.getFieldInClass(unit1, "B", "b2"), intType, intType); 3597 AstFinder.getFieldInClass(unit1, "B", "b2"), intType, intType);
3598 } 3598 }
3599 3599
3600 /** 3600 /**
3601 * Test inference between static and instance fields 3601 * Test inference between static and instance fields
3602 */ 3602 */
(...skipping 682 matching lines...) Expand 10 before | Expand all | Expand 10 after
4285 } 4285 }
4286 ''' 4286 '''
4287 }); 4287 });
4288 List<dynamic> units = 4288 List<dynamic> units =
4289 computeLibraryResults(sources, RESOLVED_UNIT11).toList(); 4289 computeLibraryResults(sources, RESOLVED_UNIT11).toList();
4290 CompilationUnit unit0 = units[0]; 4290 CompilationUnit unit0 = units[0];
4291 CompilationUnit unit1 = units[1]; 4291 CompilationUnit unit1 = units[1];
4292 CompilationUnit unit2 = units[2]; 4292 CompilationUnit unit2 = units[2];
4293 4293
4294 InterfaceType intType = context.typeProvider.intType; 4294 InterfaceType intType = context.typeProvider.intType;
4295 DartType dynamicType = context.typeProvider.dynamicType;
4296 4295
4297 assertVariableDeclarationTypes( 4296 assertVariableDeclarationTypes(
4298 AstFinder.getFieldInClass(unit0, "A", "a2"), dynamicType, intType); 4297 AstFinder.getFieldInClass(unit0, "A", "a2"), intType, intType);
4299 4298
4300 assertVariableDeclarationTypes( 4299 assertVariableDeclarationTypes(
4301 AstFinder.getFieldInClass(unit1, "B", "b2"), intType, intType); 4300 AstFinder.getFieldInClass(unit1, "B", "b2"), intType, intType);
4302 4301
4303 List<Statement> statements = 4302 List<Statement> statements =
4304 AstFinder.getStatementsInTopLevelFunction(unit2, "test1"); 4303 AstFinder.getStatementsInTopLevelFunction(unit2, "test1");
4305 4304
4306 assertAssignmentStatementTypes(statements[1], intType, dynamicType); 4305 assertAssignmentStatementTypes(statements[1], intType, intType);
4307 } 4306 }
4308 4307
4309 // Test inference interactions between local variables and fields 4308 // Test inference interactions between local variables and fields
4310 void test_perform_inference_cross_unit_instance_member() { 4309 void test_perform_inference_cross_unit_instance_member() {
4311 List<Source> sources = newSources({ 4310 List<Source> sources = newSources({
4312 '/a.dart': ''' 4311 '/a.dart': '''
4313 import 'b.dart'; 4312 import 'b.dart';
4314 var bar = new B(); 4313 var bar = new B();
4315 void foo() { 4314 void foo() {
4316 String x = bar.f.z; 4315 String x = bar.f.z;
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
4424 } 4423 }
4425 ''' 4424 '''
4426 }); 4425 });
4427 List<dynamic> units = 4426 List<dynamic> units =
4428 computeLibraryResults(sources, RESOLVED_UNIT11).toList(); 4427 computeLibraryResults(sources, RESOLVED_UNIT11).toList();
4429 CompilationUnit unit0 = units[0]; 4428 CompilationUnit unit0 = units[0];
4430 CompilationUnit unit1 = units[1]; 4429 CompilationUnit unit1 = units[1];
4431 CompilationUnit unit2 = units[2]; 4430 CompilationUnit unit2 = units[2];
4432 4431
4433 InterfaceType intType = context.typeProvider.intType; 4432 InterfaceType intType = context.typeProvider.intType;
4434 DartType dynamicType = context.typeProvider.dynamicType;
4435 4433
4436 assertVariableDeclarationTypes( 4434 assertVariableDeclarationTypes(
4437 AstFinder.getFieldInClass(unit0, "A", "a1"), intType, intType); 4435 AstFinder.getFieldInClass(unit0, "A", "a1"), intType, intType);
4438 assertVariableDeclarationTypes( 4436 assertVariableDeclarationTypes(
4439 AstFinder.getFieldInClass(unit0, "A", "a2"), dynamicType, intType); 4437 AstFinder.getFieldInClass(unit0, "A", "a2"), intType, intType);
4440 4438
4441 assertVariableDeclarationTypes( 4439 assertVariableDeclarationTypes(
4442 AstFinder.getFieldInClass(unit1, "B", "b1"), intType, intType); 4440 AstFinder.getFieldInClass(unit1, "B", "b1"), intType, intType);
4443 assertVariableDeclarationTypes( 4441 assertVariableDeclarationTypes(
4444 AstFinder.getFieldInClass(unit1, "B", "b2"), intType, intType); 4442 AstFinder.getFieldInClass(unit1, "B", "b2"), intType, intType);
4445 4443
4446 List<Statement> statements = 4444 List<Statement> statements =
4447 AstFinder.getStatementsInTopLevelFunction(unit2, "test1"); 4445 AstFinder.getStatementsInTopLevelFunction(unit2, "test1");
4448 4446
4449 assertAssignmentStatementTypes(statements[1], intType, intType); 4447 assertAssignmentStatementTypes(statements[1], intType, intType);
4450 assertAssignmentStatementTypes(statements[2], intType, dynamicType); 4448 assertAssignmentStatementTypes(statements[2], intType, intType);
4451 } 4449 }
4452 4450
4453 // Test inference across units (non-cyclic) 4451 // Test inference across units (non-cyclic)
4454 void test_perform_inference_local_variables() { 4452 void test_perform_inference_local_variables() {
4455 AnalysisTarget source = newSource('/test.dart', ''' 4453 AnalysisTarget source = newSource('/test.dart', '''
4456 test() { 4454 test() {
4457 int x = 3; 4455 int x = 3;
4458 x = "hi"; 4456 x = "hi";
4459 var y = 3; 4457 var y = 3;
4460 y = "hi"; 4458 y = "hi";
(...skipping 522 matching lines...) Expand 10 before | Expand all | Expand 10 after
4983 /** 4981 /**
4984 * Fill [errorListener] with [result] errors in the current [task]. 4982 * Fill [errorListener] with [result] errors in the current [task].
4985 */ 4983 */
4986 void _fillErrorListener(ResultDescriptor<List<AnalysisError>> result) { 4984 void _fillErrorListener(ResultDescriptor<List<AnalysisError>> result) {
4987 List<AnalysisError> errors = task.outputs[result] as List<AnalysisError>; 4985 List<AnalysisError> errors = task.outputs[result] as List<AnalysisError>;
4988 expect(errors, isNotNull, reason: result.name); 4986 expect(errors, isNotNull, reason: result.name);
4989 errorListener = new GatheringErrorListener(); 4987 errorListener = new GatheringErrorListener();
4990 errorListener.addAll(errors); 4988 errorListener.addAll(errors);
4991 } 4989 }
4992 } 4990 }
OLDNEW
« no previous file with comments | « pkg/analyzer/test/src/summary/top_level_inference_test.dart ('k') | pkg/analyzer/test/src/task/strong/inferred_type_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698