Chromium Code Reviews| Index: pkg/compiler/lib/src/inferrer/kernel_inferrer_engine.dart |
| diff --git a/pkg/compiler/lib/src/inferrer/kernel_inferrer_engine.dart b/pkg/compiler/lib/src/inferrer/kernel_inferrer_engine.dart |
| index 21dc8ec5febd9714aea9159227b132f695edc948..8327443352d67e924b4bb50c27577a3cb42d31ef 100644 |
| --- a/pkg/compiler/lib/src/inferrer/kernel_inferrer_engine.dart |
| +++ b/pkg/compiler/lib/src/inferrer/kernel_inferrer_engine.dart |
| @@ -205,7 +205,7 @@ class KernelInferrerEngine extends InferrerEngineImpl<ir.Node> { |
| @override |
| GlobalTypeInferenceElementData<ir.Node> createElementData() { |
| - throw new UnimplementedError('KernelInferrerEngine.createElementData'); |
| + return new KernelGlobalTypeInferenceElementData(); |
| } |
| } |
| @@ -343,3 +343,80 @@ class KernelTypeSystemStrategy implements TypeSystemStrategy<ir.Node> { |
| } |
| } |
| } |
| + |
| +class KernelGlobalTypeInferenceElementData |
| + extends GlobalTypeInferenceElementData<ir.Node> { |
| + Map<ir.Node, TypeMask> _sendMap; |
|
Siggi Cherem (dart-lang)
2017/09/05 19:20:39
nit: TODO to rename? (I guess we also intend to re
Johnni Winther
2017/09/07 08:08:52
Done.
|
| + |
| + @override |
| + TypeMask typeOfSend(ir.Node node) { |
| + if (_sendMap == null) return null; |
| + return _sendMap[node]; |
| + } |
| + |
| + @override |
| + void setCurrentTypeMask(ir.Node node, TypeMask mask) { |
| + throw new UnsupportedError( |
| + 'KernelGlobalTypeInferenceElementData.setCurrentTypeMask'); |
| + } |
| + |
| + @override |
| + void setMoveNextTypeMask(ir.Node node, TypeMask mask) { |
| + throw new UnsupportedError( |
| + 'KernelGlobalTypeInferenceElementData.setMoveNextTypeMask'); |
| + } |
| + |
| + @override |
| + void setIteratorTypeMask(ir.Node node, TypeMask mask) { |
| + throw new UnsupportedError( |
| + 'KernelGlobalTypeInferenceElementData.setIteratorTypeMask'); |
| + } |
| + |
| + @override |
| + TypeMask typeOfIteratorCurrent(ir.Node node) { |
| + throw new UnsupportedError( |
| + 'KernelGlobalTypeInferenceElementData.typeOfIteratorCurrent'); |
| + } |
| + |
| + @override |
| + TypeMask typeOfIteratorMoveNext(ir.Node node) { |
| + throw new UnsupportedError( |
| + 'KernelGlobalTypeInferenceElementData.typeOfIteratorMoveNext'); |
| + } |
| + |
| + @override |
| + TypeMask typeOfIterator(ir.Node node) { |
| + throw new UnsupportedError( |
| + 'KernelGlobalTypeInferenceElementData.typeOfIterator'); |
| + } |
| + |
| + @override |
| + void setOperatorTypeMaskInComplexSendSet(ir.Node node, TypeMask mask) { |
| + throw new UnsupportedError( |
| + 'KernelGlobalTypeInferenceElementData.setOperatorTypeMaskInComplexSendSet'); |
| + } |
| + |
| + @override |
| + void setGetterTypeMaskInComplexSendSet(ir.Node node, TypeMask mask) { |
| + throw new UnsupportedError( |
| + 'KernelGlobalTypeInferenceElementData.setGetterTypeMaskInComplexSendSet'); |
| + } |
| + |
| + @override |
| + void setTypeMask(ir.Node node, TypeMask mask) { |
| + _sendMap ??= <ir.Node, TypeMask>{}; |
| + _sendMap[node] = mask; |
| + } |
| + |
| + @override |
| + TypeMask typeOfOperator(ir.Node node) { |
| + throw new UnsupportedError( |
| + 'KernelGlobalTypeInferenceElementData.typeOfOperator'); |
| + } |
| + |
| + @override |
| + TypeMask typeOfGetter(ir.Node node) { |
| + throw new UnsupportedError( |
| + 'KernelGlobalTypeInferenceElementData.typeOfGetter'); |
| + } |
| +} |