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

Side by Side Diff: pkg/compiler/lib/src/constants/expressions.dart

Issue 2194173002: Include constants in deferred computation. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Rebased Created 4 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 unified diff | Download patch
« no previous file with comments | « no previous file | pkg/compiler/lib/src/deferred_load.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) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, 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.constants.expressions; 5 library dart2js.constants.expressions;
6 6
7 import '../common.dart'; 7 import '../common.dart';
8 import '../constants/constant_system.dart'; 8 import '../constants/constant_system.dart';
9 import '../core_types.dart'; 9 import '../core_types.dart';
10 import '../dart_types.dart'; 10 import '../dart_types.dart';
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
126 /// Implicit constants are simple literals, like bool, int and string 126 /// Implicit constants are simple literals, like bool, int and string
127 /// literals, constant references and compositions of implicit constants. 127 /// literals, constant references and compositions of implicit constants.
128 /// Explicit constants are constructor constants, and constant map and list 128 /// Explicit constants are constructor constants, and constant map and list
129 /// literals. 129 /// literals.
130 bool get isImplicit => true; 130 bool get isImplicit => true;
131 131
132 /// Returns `true` if this expression is only potentially constant, that is, 132 /// Returns `true` if this expression is only potentially constant, that is,
133 /// if it contains positional or named references, used to define constant 133 /// if it contains positional or named references, used to define constant
134 /// constructors. 134 /// constructors.
135 // TODO(johnniwinther): Maybe make this final if we use it outside assertions. 135 // TODO(johnniwinther): Maybe make this final if we use it outside assertions.
136 bool get isPotential => true; 136 bool get isPotential => false;
137 } 137 }
138 138
139 /// A synthetic constant used to recover from errors. 139 /// A synthetic constant used to recover from errors.
140 class ErroneousConstantExpression extends ConstantExpression { 140 class ErroneousConstantExpression extends ConstantExpression {
141 ConstantExpressionKind get kind => ConstantExpressionKind.ERRONEOUS; 141 ConstantExpressionKind get kind => ConstantExpressionKind.ERRONEOUS;
142 142
143 accept(ConstantExpressionVisitor visitor, [context]) { 143 accept(ConstantExpressionVisitor visitor, [context]) {
144 // Do nothing. This is an error. 144 // Do nothing. This is an error.
145 } 145 }
146 146
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 } 188 }
189 189
190 @override 190 @override
191 bool _equals(SyntheticConstantExpression other) { 191 bool _equals(SyntheticConstantExpression other) {
192 return value == other.value; 192 return value == other.value;
193 } 193 }
194 194
195 ConstantExpressionKind get kind => ConstantExpressionKind.SYNTHETIC; 195 ConstantExpressionKind get kind => ConstantExpressionKind.SYNTHETIC;
196 196
197 @override 197 @override
198 bool get isPotential => false;
199
200 @override
201 bool get isImplicit => false; 198 bool get isImplicit => false;
202 } 199 }
203 200
204 /// A boolean, int, double, string, or null constant. 201 /// A boolean, int, double, string, or null constant.
205 abstract class PrimitiveConstantExpression extends ConstantExpression { 202 abstract class PrimitiveConstantExpression extends ConstantExpression {
206 /// The primitive value of this contant expression. 203 /// The primitive value of this contant expression.
207 get primitiveValue; 204 get primitiveValue;
208 } 205 }
209 206
210 /// Boolean literal constant. 207 /// Boolean literal constant.
(...skipping 1052 matching lines...) Expand 10 before | Expand all | Expand 10 after
1263 @override 1260 @override
1264 bool _equals(PositionalArgumentReference other) => index == other.index; 1261 bool _equals(PositionalArgumentReference other) => index == other.index;
1265 1262
1266 @override 1263 @override
1267 ConstantValue evaluate( 1264 ConstantValue evaluate(
1268 Environment environment, ConstantSystem constantSystem) { 1265 Environment environment, ConstantSystem constantSystem) {
1269 throw new UnsupportedError('PositionalArgumentReference.evaluate'); 1266 throw new UnsupportedError('PositionalArgumentReference.evaluate');
1270 } 1267 }
1271 1268
1272 @override 1269 @override
1273 bool get isPotential { 1270 bool get isPotential => true;
1274 return true;
1275 }
1276 } 1271 }
1277 1272
1278 /// A reference to a named parameter. 1273 /// A reference to a named parameter.
1279 class NamedArgumentReference extends ConstantExpression { 1274 class NamedArgumentReference extends ConstantExpression {
1280 final String name; 1275 final String name;
1281 1276
1282 NamedArgumentReference(this.name); 1277 NamedArgumentReference(this.name);
1283 1278
1284 ConstantExpressionKind get kind { 1279 ConstantExpressionKind get kind {
1285 return ConstantExpressionKind.NAMED_REFERENCE; 1280 return ConstantExpressionKind.NAMED_REFERENCE;
(...skipping 18 matching lines...) Expand all
1304 @override 1299 @override
1305 bool _equals(NamedArgumentReference other) => name == other.name; 1300 bool _equals(NamedArgumentReference other) => name == other.name;
1306 1301
1307 @override 1302 @override
1308 ConstantValue evaluate( 1303 ConstantValue evaluate(
1309 Environment environment, ConstantSystem constantSystem) { 1304 Environment environment, ConstantSystem constantSystem) {
1310 throw new UnsupportedError('NamedArgumentReference.evaluate'); 1305 throw new UnsupportedError('NamedArgumentReference.evaluate');
1311 } 1306 }
1312 1307
1313 @override 1308 @override
1314 bool get isPotential { 1309 bool get isPotential => true;
1315 return true;
1316 }
1317 } 1310 }
1318 1311
1319 abstract class FromEnvironmentConstantExpression extends ConstantExpression { 1312 abstract class FromEnvironmentConstantExpression extends ConstantExpression {
1320 final ConstantExpression name; 1313 final ConstantExpression name;
1321 final ConstantExpression defaultValue; 1314 final ConstantExpression defaultValue;
1322 1315
1323 FromEnvironmentConstantExpression(this.name, this.defaultValue); 1316 FromEnvironmentConstantExpression(this.name, this.defaultValue);
1324 1317
1325 @override 1318 @override
1326 int _computeHashCode() { 1319 int _computeHashCode() {
(...skipping 554 matching lines...) Expand 10 before | Expand all | Expand 10 after
1881 visit(exp.name); 1874 visit(exp.name);
1882 if (exp.defaultValue != null) { 1875 if (exp.defaultValue != null) {
1883 sb.write(', defaultValue: '); 1876 sb.write(', defaultValue: ');
1884 visit(exp.defaultValue); 1877 visit(exp.defaultValue);
1885 } 1878 }
1886 sb.write(')'); 1879 sb.write(')');
1887 } 1880 }
1888 1881
1889 String toString() => sb.toString(); 1882 String toString() => sb.toString();
1890 } 1883 }
OLDNEW
« no previous file with comments | « no previous file | pkg/compiler/lib/src/deferred_load.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698