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

Unified Diff: pkg/compiler/lib/src/types/types.dart

Issue 2991313002: Split ast based parts from InferrerEngineImpl (Closed)
Patch Set: Created 3 years, 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/compiler/lib/src/inferrer/type_graph_nodes.dart ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/compiler/lib/src/types/types.dart
diff --git a/pkg/compiler/lib/src/types/types.dart b/pkg/compiler/lib/src/types/types.dart
index 3234a6d07ead063ee41025d26a46314ba86885a6..2a132f12b7e6a509f2283f2508455994da95f6c6 100644
--- a/pkg/compiler/lib/src/types/types.dart
+++ b/pkg/compiler/lib/src/types/types.dart
@@ -145,7 +145,32 @@ class GlobalTypeInferenceParameterResult
/// Internal data used during type-inference to store intermediate results about
/// a single element.
-class GlobalTypeInferenceElementData {
+abstract class GlobalTypeInferenceElementData<T> {
+ TypeMask typeOfSend(T node);
+ TypeMask typeOfGetter(T node);
+ TypeMask typeOfOperator(T node);
+
+ void setTypeMask(T node, TypeMask mask);
+
+ void setGetterTypeMaskInComplexSendSet(T node, TypeMask mask);
+
+ void setOperatorTypeMaskInComplexSendSet(T node, TypeMask mask);
+
+ TypeMask typeOfIterator(T node);
+
+ TypeMask typeOfIteratorMoveNext(T node);
+
+ TypeMask typeOfIteratorCurrent(T node);
+
+ void setIteratorTypeMask(T node, TypeMask mask);
+
+ void setMoveNextTypeMask(T node, TypeMask mask);
+
+ void setCurrentTypeMask(T node, TypeMask mask);
+}
+
+class AstGlobalTypeInferenceElementData
+ extends GlobalTypeInferenceElementData<Node> {
Map<Object, TypeMask> _typeMasks;
TypeMask _get(Object node) => _typeMasks != null ? _typeMasks[node] : null;
@@ -154,19 +179,22 @@ class GlobalTypeInferenceElementData {
_typeMasks[node] = mask;
}
- TypeMask typeOfSend(Send node) => _get(node);
- TypeMask typeOfGetter(SendSet node) => _get(node.selector);
- TypeMask typeOfOperator(SendSet node) => _get(node.assignmentOperator);
+ TypeMask typeOfSend(covariant Send node) => _get(node);
+ TypeMask typeOfGetter(covariant SendSet node) => _get(node.selector);
+ TypeMask typeOfOperator(covariant SendSet node) =>
+ _get(node.assignmentOperator);
- void setTypeMask(Send node, TypeMask mask) {
+ void setTypeMask(covariant Send node, TypeMask mask) {
_set(node, mask);
}
- void setGetterTypeMaskInComplexSendSet(SendSet node, TypeMask mask) {
+ void setGetterTypeMaskInComplexSendSet(
+ covariant SendSet node, TypeMask mask) {
_set(node.selector, mask);
}
- void setOperatorTypeMaskInComplexSendSet(SendSet node, TypeMask mask) {
+ void setOperatorTypeMaskInComplexSendSet(
+ covariant SendSet node, TypeMask mask) {
_set(node.assignmentOperator, mask);
}
@@ -176,21 +204,21 @@ class GlobalTypeInferenceElementData {
// separate. The current implementation does this by using
// children of the for-in node (these children were picked arbitrarily).
- TypeMask typeOfIterator(ForIn node) => _get(node);
+ TypeMask typeOfIterator(covariant ForIn node) => _get(node);
- TypeMask typeOfIteratorMoveNext(ForIn node) => _get(node.forToken);
+ TypeMask typeOfIteratorMoveNext(covariant ForIn node) => _get(node.forToken);
- TypeMask typeOfIteratorCurrent(ForIn node) => _get(node.inToken);
+ TypeMask typeOfIteratorCurrent(covariant ForIn node) => _get(node.inToken);
- void setIteratorTypeMask(ForIn node, TypeMask mask) {
+ void setIteratorTypeMask(covariant ForIn node, TypeMask mask) {
_set(node, mask);
}
- void setMoveNextTypeMask(ForIn node, TypeMask mask) {
+ void setMoveNextTypeMask(covariant ForIn node, TypeMask mask) {
_set(node.forToken, mask);
}
- void setCurrentTypeMask(ForIn node, TypeMask mask) {
+ void setCurrentTypeMask(covariant ForIn node, TypeMask mask) {
_set(node.inToken, mask);
}
}
« no previous file with comments | « pkg/compiler/lib/src/inferrer/type_graph_nodes.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698