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

Side by Side Diff: pkg/compiler/lib/src/types/abstract_value_domain.dart

Issue 1859343004: dartfmt pkg/compiler (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 8 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
« no previous file with comments | « pkg/compiler/lib/src/typechecker.dart ('k') | pkg/compiler/lib/src/types/constants.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, 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 dart2js.abstract_value_domain; 5 library dart2js.abstract_value_domain;
6 6
7 import '../constants/values.dart'; 7 import '../constants/values.dart';
8 import '../dart_types.dart'; 8 import '../dart_types.dart';
9 import '../elements/elements.dart'; 9 import '../elements/elements.dart';
10 import '../universe/selector.dart' show Selector; 10 import '../universe/selector.dart' show Selector;
11 11
12 enum AbstractBool { 12 enum AbstractBool { True, False, Maybe, Nothing }
13 True, False, Maybe, Nothing
14 }
15 13
16 /// A value in an abstraction of runtime values. 14 /// A value in an abstraction of runtime values.
17 abstract class AbstractValue {} 15 abstract class AbstractValue {}
18 16
19 /// A system that implements an abstraction over runtime values and provides 17 /// A system that implements an abstraction over runtime values and provides
20 /// access to interprocedural analysis results. 18 /// access to interprocedural analysis results.
21 // TODO(johnniwinther): Consider extracting the inference result access from 19 // TODO(johnniwinther): Consider extracting the inference result access from
22 // this interface. 20 // this interface.
23 abstract class AbstractValueDomain { 21 abstract class AbstractValueDomain {
24 AbstractValue get dynamicType; 22 AbstractValue get dynamicType;
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 118
121 bool isDefinitelyFixedArray(AbstractValue t, {bool allowNull: false}); 119 bool isDefinitelyFixedArray(AbstractValue t, {bool allowNull: false});
122 120
123 bool isDefinitelyExtendableArray(AbstractValue t, {bool allowNull: false}); 121 bool isDefinitelyExtendableArray(AbstractValue t, {bool allowNull: false});
124 122
125 bool isDefinitelyIndexable(AbstractValue t, {bool allowNull: false}); 123 bool isDefinitelyIndexable(AbstractValue t, {bool allowNull: false});
126 124
127 bool isDefinitelyMutableIndexable(AbstractValue t, {bool allowNull: false}); 125 bool isDefinitelyMutableIndexable(AbstractValue t, {bool allowNull: false});
128 126
129 bool isDefinitelyFixedLengthIndexable(AbstractValue t, 127 bool isDefinitelyFixedLengthIndexable(AbstractValue t,
130 {bool allowNull: false}); 128 {bool allowNull: false});
131 129
132 bool isDefinitelyIntercepted(AbstractValue t, {bool allowNull}); 130 bool isDefinitelyIntercepted(AbstractValue t, {bool allowNull});
133 131
134 bool isDefinitelySelfInterceptor(AbstractValue t, {bool allowNull: false}); 132 bool isDefinitelySelfInterceptor(AbstractValue t, {bool allowNull: false});
135 133
136 /// Given a class from the interceptor hierarchy, returns an [AbstractValue] 134 /// Given a class from the interceptor hierarchy, returns an [AbstractValue]
137 /// matching all values with that interceptor (or a subtype thereof). 135 /// matching all values with that interceptor (or a subtype thereof).
138 AbstractValue getInterceptorSubtypes(ClassElement class_); 136 AbstractValue getInterceptorSubtypes(ClassElement class_);
139 137
140 bool areDisjoint(AbstractValue leftType, AbstractValue rightType); 138 bool areDisjoint(AbstractValue leftType, AbstractValue rightType);
141 139
142 bool isMorePreciseOrEqual(AbstractValue t1, AbstractValue t2); 140 bool isMorePreciseOrEqual(AbstractValue t1, AbstractValue t2);
143 141
144 AbstractBool isSubtypeOf(AbstractValue value, 142 AbstractBool isSubtypeOf(AbstractValue value, DartType type,
145 DartType type, 143 {bool allowNull});
146 {bool allowNull});
147 144
148 /// Returns whether [value] is one of the falsy values: false, 0, -0, NaN, 145 /// Returns whether [value] is one of the falsy values: false, 0, -0, NaN,
149 /// the empty string, or null. 146 /// the empty string, or null.
150 AbstractBool boolify(AbstractValue value); 147 AbstractBool boolify(AbstractValue value);
151 148
152 AbstractBool strictBoolify(AbstractValue type); 149 AbstractBool strictBoolify(AbstractValue type);
153 150
154 /// Create a type mask containing at least all subtypes of [type]. 151 /// Create a type mask containing at least all subtypes of [type].
155 AbstractValue subtypesOf(DartType type); 152 AbstractValue subtypesOf(DartType type);
156 153
157 /// Returns a subset of [receiver] containing at least the types 154 /// Returns a subset of [receiver] containing at least the types
158 /// that can respond to [selector] without throwing. 155 /// that can respond to [selector] without throwing.
159 AbstractValue receiverTypeFor(Selector selector, AbstractValue receiver); 156 AbstractValue receiverTypeFor(Selector selector, AbstractValue receiver);
160 157
161 /// The result of an index operation on [value], or the dynamic type if 158 /// The result of an index operation on [value], or the dynamic type if
162 /// unknown. 159 /// unknown.
163 AbstractValue elementTypeOfIndexable(AbstractValue value); 160 AbstractValue elementTypeOfIndexable(AbstractValue value);
164 161
165 /// The length property of [value], or `null` if unknown. 162 /// The length property of [value], or `null` if unknown.
166 int getContainerLength(AbstractValue value); 163 int getContainerLength(AbstractValue value);
167 164
168 /// Returns the type of the entry of [container] at a given index. 165 /// Returns the type of the entry of [container] at a given index.
169 /// Returns `null` if unknown. 166 /// Returns `null` if unknown.
170 AbstractValue indexWithConstant(AbstractValue container, 167 AbstractValue indexWithConstant(
171 ConstantValue indexValue); 168 AbstractValue container, ConstantValue indexValue);
172 } 169 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/typechecker.dart ('k') | pkg/compiler/lib/src/types/constants.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698