| OLD | NEW |
| 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 import 'package:analyzer/dart/element/type.dart'; | 5 import 'package:analyzer/dart/element/type.dart'; |
| 6 import 'package:analyzer/src/dart/element/element.dart'; | 6 import 'package:analyzer/src/dart/element/element.dart'; |
| 7 import 'package:analyzer/src/summary/format.dart'; | 7 import 'package:analyzer/src/summary/format.dart'; |
| 8 import 'package:analyzer/src/summary/idl.dart'; | 8 import 'package:analyzer/src/summary/idl.dart'; |
| 9 import 'package:analyzer/src/summary/link.dart'; | 9 import 'package:analyzer/src/summary/link.dart'; |
| 10 import 'package:test/test.dart'; | 10 import 'package:test/test.dart'; |
| (...skipping 498 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 509 import 'a.dart'; | 509 import 'a.dart'; |
| 510 class D { | 510 class D { |
| 511 var g = new C().f; // Inferred type: dynamic | 511 var g = new C().f; // Inferred type: dynamic |
| 512 } | 512 } |
| 513 '''); | 513 '''); |
| 514 LibraryElementForLink library = linker.getLibrary(linkerInputs.testDartUri); | 514 LibraryElementForLink library = linker.getLibrary(linkerInputs.testDartUri); |
| 515 ClassElementForLink_Class classD = library.getContainedName('D'); | 515 ClassElementForLink_Class classD = library.getContainedName('D'); |
| 516 expect(classD.fields[0].inferredType.toString(), 'dynamic'); | 516 expect(classD.fields[0].inferredType.toString(), 'dynamic'); |
| 517 } | 517 } |
| 518 | 518 |
| 519 void test_inferredTypeFromOutsideBuildUnit_methodParamType_viaGeneric() { | |
| 520 var bundle = createPackageBundle( | |
| 521 ''' | |
| 522 class B { | |
| 523 T f<T>(T t) => t; | |
| 524 } | |
| 525 class C extends B { | |
| 526 f<T>(t) => t; // Inferred param type: T | |
| 527 } | |
| 528 ''', | |
| 529 path: '/a.dart'); | |
| 530 addBundle('/a.ds', bundle); | |
| 531 createLinker(''' | |
| 532 import 'a.dart'; | |
| 533 var x = new C().f(0); // Inferred type: int | |
| 534 '''); | |
| 535 LibraryElementForLink library = linker.getLibrary(linkerInputs.testDartUri); | |
| 536 expect(_getVariable(library.getContainedName('x')).inferredType.toString(), | |
| 537 'int'); | |
| 538 } | |
| 539 | |
| 540 void test_inferredTypeFromOutsideBuildUnit_methodParamType_viaInheritance() { | 519 void test_inferredTypeFromOutsideBuildUnit_methodParamType_viaInheritance() { |
| 541 var bundle = createPackageBundle( | 520 var bundle = createPackageBundle( |
| 542 ''' | 521 ''' |
| 543 class B { | 522 class B { |
| 544 void f(int i) {} | 523 void f(int i) {} |
| 545 } | 524 } |
| 546 class C extends B { | 525 class C extends B { |
| 547 f(i) {} // Inferred param type: int | 526 f(i) {} // Inferred param type: int |
| 548 } | 527 } |
| 549 ''', | 528 ''', |
| (...skipping 415 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 965 */ | 944 */ |
| 966 EntityRef _lookupInferredType(LinkedUnit unit, int slot) { | 945 EntityRef _lookupInferredType(LinkedUnit unit, int slot) { |
| 967 for (EntityRef ref in unit.types) { | 946 for (EntityRef ref in unit.types) { |
| 968 if (ref.slot == slot) { | 947 if (ref.slot == slot) { |
| 969 return ref; | 948 return ref; |
| 970 } | 949 } |
| 971 } | 950 } |
| 972 return null; | 951 return null; |
| 973 } | 952 } |
| 974 } | 953 } |
| OLD | NEW |