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

Side by Side Diff: pkg/analyzer/test/src/summary/linker_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) 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 320 matching lines...) Expand 10 before | Expand all | Expand 10 after
331 } 331 }
332 class E {} 332 class E {}
333 ''', path: '/a.dart'); 333 ''', path: '/a.dart');
334 addBundle('/a.ds', bundle); 334 addBundle('/a.ds', bundle);
335 createLinker(''' 335 createLinker('''
336 import 'a.dart'; 336 import 'a.dart';
337 var y = C.x; 337 var y = C.x;
338 '''); 338 ''');
339 LibraryElementForLink library = linker.getLibrary(linkerInputs.testDartUri); 339 LibraryElementForLink library = linker.getLibrary(linkerInputs.testDartUri);
340 expect(_getVariable(library.getContainedName('y')).inferredType.toString(), 340 expect(_getVariable(library.getContainedName('y')).inferredType.toString(),
341 '(D) → dynamic'); 341 '(D) → E');
342 } 342 }
343 343
344 void test_inferredType_implicitFunctionTypeIndices() { 344 void test_inferredType_implicitFunctionTypeIndices() {
345 var bundle = createPackageBundle(''' 345 var bundle = createPackageBundle('''
346 class A { 346 class A {
347 void foo(void bar(int arg)) {} 347 void foo(void bar(int arg)) {}
348 } 348 }
349 class B extends A { 349 class B extends A {
350 void foo(bar) {} 350 void foo(bar) {}
351 } 351 }
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
518 518
519 void test_inferredTypeFromOutsideBuildUnit_instanceField() { 519 void test_inferredTypeFromOutsideBuildUnit_instanceField() {
520 var bundle = createPackageBundle(''' 520 var bundle = createPackageBundle('''
521 class C { 521 class C {
522 var f = 0; // Inferred type: int 522 var f = 0; // Inferred type: int
523 } 523 }
524 ''', path: '/a.dart'); 524 ''', path: '/a.dart');
525 addBundle('/a.ds', bundle); 525 addBundle('/a.ds', bundle);
526 createLinker(''' 526 createLinker('''
527 import 'a.dart'; 527 import 'a.dart';
528 var x = new C().f; // Inferred type: dynamic 528 var x = new C().f; // Inferred type: int
529 '''); 529 ''');
530 LibraryElementForLink library = linker.getLibrary(linkerInputs.testDartUri); 530 LibraryElementForLink library = linker.getLibrary(linkerInputs.testDartUri);
531 expect(_getVariable(library.getContainedName('x')).inferredType.toString(), 531 expect(_getVariable(library.getContainedName('x')).inferredType.toString(),
532 'dynamic'); 532 'int');
533 } 533 }
534 534
535 void test_inferredTypeFromOutsideBuildUnit_instanceField_toInstanceField() { 535 void test_inferredTypeFromOutsideBuildUnit_instanceField_toInstanceField() {
536 var bundle = createPackageBundle(''' 536 var bundle = createPackageBundle('''
537 class C { 537 class C {
538 var f = 0; // Inferred type: int 538 var f = 0; // Inferred type: int
539 } 539 }
540 ''', path: '/a.dart'); 540 ''', path: '/a.dart');
541 addBundle('/a.ds', bundle); 541 addBundle('/a.ds', bundle);
542 createLinker(''' 542 createLinker('''
543 import 'a.dart'; 543 import 'a.dart';
544 class D { 544 class D {
545 var g = new C().f; // Inferred type: dynamic 545 var g = new C().f; // Inferred type: int
546 } 546 }
547 '''); 547 ''');
548 LibraryElementForLink library = linker.getLibrary(linkerInputs.testDartUri); 548 LibraryElementForLink library = linker.getLibrary(linkerInputs.testDartUri);
549 ClassElementForLink_Class classD = library.getContainedName('D'); 549 ClassElementForLink_Class classD = library.getContainedName('D');
550 expect(classD.fields[0].inferredType.toString(), 'dynamic'); 550 expect(classD.fields[0].inferredType.toString(), 'int');
551 } 551 }
552 552
553 void test_inferredTypeFromOutsideBuildUnit_methodParamType_viaInheritance() { 553 void test_inferredTypeFromOutsideBuildUnit_methodParamType_viaInheritance() {
554 var bundle = createPackageBundle(''' 554 var bundle = createPackageBundle('''
555 class B { 555 class B {
556 void f(int i) {} 556 void f(int i) {}
557 } 557 }
558 class C extends B { 558 class C extends B {
559 f(i) {} // Inferred param type: int 559 f(i) {} // Inferred param type: int
560 } 560 }
(...skipping 402 matching lines...) Expand 10 before | Expand all | Expand 10 after
963 */ 963 */
964 EntityRef _lookupInferredType(LinkedUnit unit, int slot) { 964 EntityRef _lookupInferredType(LinkedUnit unit, int slot) {
965 for (EntityRef ref in unit.types) { 965 for (EntityRef ref in unit.types) {
966 if (ref.slot == slot) { 966 if (ref.slot == slot) {
967 return ref; 967 return ref;
968 } 968 }
969 } 969 }
970 return null; 970 return null;
971 } 971 }
972 } 972 }
OLDNEW
« no previous file with comments | « pkg/analyzer/test/generated/hint_code_test.dart ('k') | pkg/analyzer/test/src/summary/resynthesize_ast_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698