6
6
7
7
library dart2js.js_model.strategy;
8
8
9
- import 'package:kernel/ast.dart' as ir;
10
-
11
9
import '../common.dart' ;
12
10
import '../common/codegen.dart' ;
13
11
import '../common/elements.dart' show CommonElements, ElementEnvironment;
@@ -22,7 +20,6 @@ import '../enqueue.dart';
22
20
import '../io/kernel_source_information.dart'
23
21
show KernelSourceInformationStrategy;
24
22
import '../io/source_information.dart' ;
25
- import '../inferrer/abstract_value_domain.dart' ;
26
23
import '../inferrer/type_graph_inferrer.dart' ;
27
24
import '../inferrer/types.dart' ;
28
25
import '../inferrer_experimental/types.dart' as experimentalInferrer;
@@ -56,18 +53,15 @@ import '../js_model/js_world.dart' show JClosedWorld;
56
53
import '../js/js.dart' as js;
57
54
import '../kernel/kernel_strategy.dart' ;
58
55
import '../kernel/kernel_world.dart' ;
59
- import '../native/behavior.dart' ;
60
56
import '../native/enqueue.dart' ;
61
57
import '../options.dart' ;
62
58
import '../serialization/serialization.dart' ;
63
59
import '../ssa/builder.dart' ;
64
60
import '../ssa/metrics.dart' ;
65
61
import '../ssa/nodes.dart' ;
66
62
import '../ssa/ssa.dart' ;
67
- import '../ssa/types.dart' ;
68
63
import '../tracer.dart' ;
69
64
import '../universe/codegen_world_builder.dart' ;
70
- import '../universe/selector.dart' ;
71
65
import '../universe/world_impact.dart' ;
72
66
import 'closure.dart' ;
73
67
import 'element_map.dart' ;
@@ -556,103 +550,3 @@ class KernelSsaBuilder implements SsaBuilder {
556
550
});
557
551
}
558
552
}
559
-
560
- class KernelToTypeInferenceMapImpl implements KernelToTypeInferenceMap {
561
- final GlobalTypeInferenceResults _globalInferenceResults;
562
- GlobalTypeInferenceMemberResult _targetResults;
563
-
564
- KernelToTypeInferenceMapImpl (
565
- MemberEntity target, this ._globalInferenceResults) {
566
- _targetResults = _resultOf (target);
567
- }
568
-
569
- GlobalTypeInferenceMemberResult _resultOf (MemberEntity e) =>
570
- _globalInferenceResults
571
- .resultOfMember (e is ConstructorBodyEntity ? e.constructor : e);
572
-
573
- @override
574
- AbstractValue getReturnTypeOf (FunctionEntity function) {
575
- return AbstractValueFactory .inferredReturnTypeForElement (
576
- function, _globalInferenceResults);
577
- }
578
-
579
- @override
580
- AbstractValue receiverTypeOfInvocation (
581
- ir.Expression node, AbstractValueDomain abstractValueDomain) {
582
- return _targetResults.typeOfReceiver (node);
583
- }
584
-
585
- @override
586
- AbstractValue receiverTypeOfGet (ir.Expression node) {
587
- return _targetResults.typeOfReceiver (node);
588
- }
589
-
590
- @override
591
- AbstractValue receiverTypeOfSet (
592
- ir.Expression node, AbstractValueDomain abstractValueDomain) {
593
- return _targetResults.typeOfReceiver (node);
594
- }
595
-
596
- @override
597
- AbstractValue typeOfListLiteral (
598
- ir.ListLiteral listLiteral, AbstractValueDomain abstractValueDomain) {
599
- return _globalInferenceResults.typeOfListLiteral (listLiteral) ??
600
- abstractValueDomain.dynamicType;
601
- }
602
-
603
- @override
604
- AbstractValue typeOfIterator (ir.ForInStatement node) {
605
- return _targetResults.typeOfIterator (node);
606
- }
607
-
608
- @override
609
- AbstractValue typeOfIteratorCurrent (ir.ForInStatement node) {
610
- return _targetResults.typeOfIteratorCurrent (node);
611
- }
612
-
613
- @override
614
- AbstractValue typeOfIteratorMoveNext (ir.ForInStatement node) {
615
- return _targetResults.typeOfIteratorMoveNext (node);
616
- }
617
-
618
- @override
619
- bool isJsIndexableIterator (
620
- ir.ForInStatement node, AbstractValueDomain abstractValueDomain) {
621
- AbstractValue mask = typeOfIterator (node);
622
- // TODO(sra): Investigate why mask is sometimes null.
623
- if (mask == null ) return false ;
624
- return abstractValueDomain.isJsIndexableAndIterable (mask).isDefinitelyTrue;
625
- }
626
-
627
- @override
628
- AbstractValue inferredIndexType (ir.ForInStatement node) {
629
- return AbstractValueFactory .inferredResultTypeForSelector (
630
- Selector .index (), typeOfIterator (node), _globalInferenceResults);
631
- }
632
-
633
- @override
634
- AbstractValue getInferredTypeOf (MemberEntity member) {
635
- return AbstractValueFactory .inferredTypeForMember (
636
- member, _globalInferenceResults);
637
- }
638
-
639
- @override
640
- AbstractValue getInferredTypeOfParameter (Local parameter) {
641
- return AbstractValueFactory .inferredTypeForParameter (
642
- parameter, _globalInferenceResults);
643
- }
644
-
645
- @override
646
- AbstractValue resultTypeOfSelector (Selector selector, AbstractValue mask) {
647
- return AbstractValueFactory .inferredResultTypeForSelector (
648
- selector, mask, _globalInferenceResults);
649
- }
650
-
651
- @override
652
- AbstractValue typeFromNativeBehavior (
653
- // TODO(48820): remove covariant once interface and implementation match.
654
- NativeBehavior nativeBehavior,
655
- covariant JClosedWorld closedWorld) {
656
- return AbstractValueFactory .fromNativeBehavior (nativeBehavior, closedWorld);
657
- }
658
- }
0 commit comments