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

Side by Side Diff: pkg/compiler/lib/src/inferrer/inferrer_visitor.dart

Issue 1182053010: Revert "Split TypedSelector into Selector and TypeMask." (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 5 years, 6 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) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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 library inferrer_visitor; 5 library inferrer_visitor;
6 6
7 import '../constants/constant_system.dart'; 7 import '../constants/constant_system.dart';
8 import '../constants/expressions.dart'; 8 import '../constants/expressions.dart';
9 import '../dart2jslib.dart' hide Selector, TypedSelector; 9 import '../dart2jslib.dart' hide Selector, TypedSelector;
10 import '../dart_types.dart'; 10 import '../dart_types.dart';
(...skipping 29 matching lines...) Expand all
40 T get stringType; 40 T get stringType;
41 T get typeType; 41 T get typeType;
42 42
43 T stringLiteralType(DartString value); 43 T stringLiteralType(DartString value);
44 44
45 T nonNullSubtype(ClassElement type); 45 T nonNullSubtype(ClassElement type);
46 T nonNullSubclass(ClassElement type); 46 T nonNullSubclass(ClassElement type);
47 T nonNullExact(ClassElement type); 47 T nonNullExact(ClassElement type);
48 T nonNullEmpty(); 48 T nonNullEmpty();
49 bool isNull(T type); 49 bool isNull(T type);
50 TypeMask newTypedSelector(T receiver, TypeMask mask); 50 Selector newTypedSelector(T receiver, Selector selector);
51 51
52 T allocateList(T type, 52 T allocateList(T type,
53 Node node, 53 Node node,
54 Element enclosing, 54 Element enclosing,
55 [T elementType, int length]); 55 [T elementType, int length]);
56 56
57 T allocateMap(T type, Node node, Element element, [List<T> keyType, 57 T allocateMap(T type, Node node, Element element, [List<T> keyType,
58 List<T> valueType]); 58 List<T> valueType]);
59 59
60 T allocateClosure(Node node, Element element); 60 T allocateClosure(Node node, Element element);
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 103
104 /** 104 /**
105 * Adds [newType] as an input of [phiType]. 105 * Adds [newType] as an input of [phiType].
106 */ 106 */
107 T addPhiInput(Local variable, T phiType, T newType); 107 T addPhiInput(Local variable, T phiType, T newType);
108 108
109 /** 109 /**
110 * Returns `true` if `selector` should be updated to reflect the new 110 * Returns `true` if `selector` should be updated to reflect the new
111 * `receiverType`. 111 * `receiverType`.
112 */ 112 */
113 bool selectorNeedsUpdate(T receiverType, TypeMask mask); 113 bool selectorNeedsUpdate(T receiverType, Selector selector);
114 114
115 /** 115 /**
116 * Returns a new receiver type for this [selector] applied to 116 * Returns a new receiver type for this [selector] applied to
117 * [receiverType]. 117 * [receiverType].
118 * 118 *
119 * The option [isConditional] is true when [selector] was seen in a 119 * The option [isConditional] is true when [selector] was seen in a
120 * conditional send (e.g. `a?.selector`), in which case the returned type may 120 * conditional send (e.g. `a?.selector`), in which case the returned type may
121 * be null. 121 * be null.
122 */ 122 */
123 T refineReceiver(Selector selector, 123 T refineReceiver(Selector selector, T receiverType, bool isConditional);
124 TypeMask mask,
125 T receiverType,
126 bool isConditional);
127 124
128 /** 125 /**
129 * Returns the internal inferrer representation for [mask]. 126 * Returns the internal inferrer representation for [mask].
130 */ 127 */
131 T getConcreteTypeFor(TypeMask mask); 128 T getConcreteTypeFor(TypeMask mask);
132 } 129 }
133 130
134 /** 131 /**
135 * A variable scope holds types for variables. It has a link to a 132 * A variable scope holds types for variables. It has a link to a
136 * parent scope, but never changes the types in that parent. Instead, 133 * parent scope, but never changes the types in that parent. Instead,
(...skipping 1306 matching lines...) Expand 10 before | Expand all | Expand 10 after
1443 return type; 1440 return type;
1444 } 1441 }
1445 1442
1446 T visitCascade(Cascade node) { 1443 T visitCascade(Cascade node) {
1447 // Ignore the result of the cascade send and return the type of the cascade 1444 // Ignore the result of the cascade send and return the type of the cascade
1448 // receiver. 1445 // receiver.
1449 visit(node.expression); 1446 visit(node.expression);
1450 return cascadeReceiverStack.removeLast(); 1447 return cascadeReceiverStack.removeLast();
1451 } 1448 }
1452 } 1449 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/inferrer/concrete_types_inferrer.dart ('k') | pkg/compiler/lib/src/inferrer/simple_types_inferrer.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698