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

Side by Side Diff: pkg/analyzer/test/generated/strong_mode_test.dart

Issue 1906413004: Fix missing downwards inference on fields, report more inference (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 8 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) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, 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.generated.strong_mode_test; 5 library analyzer.test.generated.strong_mode_test;
6 6
7 import 'package:analyzer/dart/ast/ast.dart'; 7 import 'package:analyzer/dart/ast/ast.dart';
8 import 'package:analyzer/dart/element/element.dart'; 8 import 'package:analyzer/dart/element/element.dart';
9 import 'package:analyzer/dart/element/type.dart'; 9 import 'package:analyzer/dart/element/type.dart';
10 import 'package:analyzer/src/dart/element/element.dart'; 10 import 'package:analyzer/src/dart/element/element.dart';
(...skipping 663 matching lines...) Expand 10 before | Expand all | Expand 10 after
674 void main () { 674 void main () {
675 var x = 3; 675 var x = 3;
676 List<int> l0 = []; 676 List<int> l0 = [];
677 } 677 }
678 '''); 678 ''');
679 resolve2(source); 679 resolve2(source);
680 assertNoErrors(source); 680 assertNoErrors(source);
681 verify([source]); 681 verify([source]);
682 } 682 }
683 683
684 void test_inferredFieldDeclaration_propagation() {
685 // Regression test for https://github.com/dart-lang/sdk/issues/25546
686 String code = r'''
687 abstract class A {
688 Map<int, List<int>> get map;
689 }
690 class B extends A {
691 var map = { 42: [] };
692 }
693 class C extends A {
694 get map => { 43: [] };
695 }
696 ''';
697 CompilationUnit unit = resolveSource(code);
698
699 Asserter<InterfaceType> assertListOfInt = _isListOf(_isInt);
700 Asserter<InterfaceType> assertMapOfIntToListOfInt =
701 _isMapOf(_isInt, assertListOfInt);
702
703 VariableDeclaration mapB = AstFinder.getFieldInClass(unit, "B", "map");
704 MethodDeclaration mapC = AstFinder.getMethodInClass(unit, "C", "map");
705 assertMapOfIntToListOfInt(mapB.element.type);
706 assertMapOfIntToListOfInt(mapC.element.returnType);
707
708 MapLiteral mapLiteralB = mapB.initializer;
709 MapLiteral mapLiteralC = (mapC.body as ExpressionFunctionBody).expression;
710 assertMapOfIntToListOfInt(mapLiteralB.staticType);
711 assertMapOfIntToListOfInt(mapLiteralC.staticType);
712
713 ListLiteral listLiteralB = mapLiteralB.entries[0].value;
714 ListLiteral listLiteralC = mapLiteralC.entries[0].value;
715 assertListOfInt(listLiteralB.staticType);
716 assertListOfInt(listLiteralC.staticType);
717 }
718
684 void test_instanceCreation() { 719 void test_instanceCreation() {
685 String code = r''' 720 String code = r'''
686 class A<S, T> { 721 class A<S, T> {
687 S x; 722 S x;
688 T y; 723 T y;
689 A(this.x, this.y); 724 A(this.x, this.y);
690 A.named(this.x, this.y); 725 A.named(this.x, this.y);
691 } 726 }
692 727
693 class B<S, T> extends A<T, S> { 728 class B<S, T> extends A<T, S> {
(...skipping 1574 matching lines...) Expand 10 before | Expand all | Expand 10 after
2268 main() { 2303 main() {
2269 var v = x; 2304 var v = x;
2270 v; // marker 2305 v; // marker
2271 } 2306 }
2272 int x = 3; 2307 int x = 3;
2273 '''; 2308 ''';
2274 assertPropagatedAssignedType(code, typeProvider.intType, null); 2309 assertPropagatedAssignedType(code, typeProvider.intType, null);
2275 assertTypeOfMarkedExpression(code, typeProvider.intType, null); 2310 assertTypeOfMarkedExpression(code, typeProvider.intType, null);
2276 } 2311 }
2277 } 2312 }
OLDNEW
« no previous file with comments | « pkg/analyzer/lib/src/generated/static_type_analyzer.dart ('k') | pkg/analyzer/test/src/task/strong/checker_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698