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

Side by Side Diff: pkg/compiler/lib/src/closure.dart

Issue 1115183002: Add ConstantConstructor to ConstantExpression system. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Updated cf. comments. Created 5 years, 7 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 | Annotate | Revision Log
« no previous file with comments | « pkg/analyzer2dart/lib/src/modely.dart ('k') | pkg/compiler/lib/src/compile_time_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) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 closureToClassMapper; 5 library closureToClassMapper;
6 6
7 import "elements/elements.dart"; 7 import 'constants/expressions.dart';
8 import "dart2jslib.dart"; 8 import 'dart2jslib.dart';
9 import "dart_types.dart"; 9 import 'dart_types.dart';
10 import "js_backend/js_backend.dart" show JavaScriptBackend; 10 import 'elements/elements.dart';
11 import "scanner/scannerlib.dart" show Token; 11 import 'elements/modelx.dart'
12 import "tree/tree.dart";
13 import "util/util.dart";
14 import "elements/modelx.dart"
15 show BaseFunctionElementX, 12 show BaseFunctionElementX,
16 ClassElementX, 13 ClassElementX,
17 ElementX, 14 ElementX,
18 LocalFunctionElementX; 15 LocalFunctionElementX;
19 import "elements/visitor.dart" show ElementVisitor; 16 import 'elements/visitor.dart' show ElementVisitor;
20 17 import 'js_backend/js_backend.dart' show JavaScriptBackend;
18 import 'scanner/scannerlib.dart' show Token;
19 import 'tree/tree.dart';
20 import 'util/util.dart';
21 import 'universe/universe.dart' show 21 import 'universe/universe.dart' show
22 Universe; 22 Universe;
23 23
24 class ClosureTask extends CompilerTask { 24 class ClosureTask extends CompilerTask {
25 Map<Node, ClosureClassMap> closureMappingCache; 25 Map<Node, ClosureClassMap> closureMappingCache;
26 ClosureTask(Compiler compiler) 26 ClosureTask(Compiler compiler)
27 : closureMappingCache = new Map<Node, ClosureClassMap>(), 27 : closureMappingCache = new Map<Node, ClosureClassMap>(),
28 super(compiler); 28 super(compiler);
29 29
30 String get name => "Closure Simplifier"; 30 String get name => "Closure Simplifier";
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 String toString() => "ClosureFieldElement($name)"; 144 String toString() => "ClosureFieldElement($name)";
145 145
146 accept(ElementVisitor visitor, arg) { 146 accept(ElementVisitor visitor, arg) {
147 return visitor.visitClosureFieldElement(this, arg); 147 return visitor.visitClosureFieldElement(this, arg);
148 } 148 }
149 149
150 Element get analyzableElement => closureClass.methodElement.analyzableElement; 150 Element get analyzableElement => closureClass.methodElement.analyzableElement;
151 151
152 @override 152 @override
153 List<FunctionElement> get nestedClosures => const <FunctionElement>[]; 153 List<FunctionElement> get nestedClosures => const <FunctionElement>[];
154
155 @override
156 ConstantExpression get constant => null;
154 } 157 }
155 158
156 // TODO(ahe): These classes continuously cause problems. We need to find 159 // TODO(ahe): These classes continuously cause problems. We need to find
157 // a more general solution. 160 // a more general solution.
158 class ClosureClassElement extends ClassElementX { 161 class ClosureClassElement extends ClassElementX {
159 DartType rawType; 162 DartType rawType;
160 DartType thisType; 163 DartType thisType;
161 FunctionType callType; 164 FunctionType callType;
162 /// Node that corresponds to this closure, used for source position. 165 /// Node that corresponds to this closure, used for source position.
163 final FunctionExpression node; 166 final FunctionExpression node;
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
269 272
270 @override 273 @override
271 Node get node { 274 Node get node {
272 throw new UnsupportedError("BoxFieldElement.node"); 275 throw new UnsupportedError("BoxFieldElement.node");
273 } 276 }
274 277
275 @override 278 @override
276 ResolvedAst get resolvedAst { 279 ResolvedAst get resolvedAst {
277 throw new UnsupportedError("BoxFieldElement.resolvedAst"); 280 throw new UnsupportedError("BoxFieldElement.resolvedAst");
278 } 281 }
282
283 @override
284 ConstantExpression get constant => null;
279 } 285 }
280 286
281 /// A local variable used encode the direct (uncaptured) references to [this]. 287 /// A local variable used encode the direct (uncaptured) references to [this].
282 class ThisLocal extends Local { 288 class ThisLocal extends Local {
283 final ExecutableElement executableContext; 289 final ExecutableElement executableContext;
284 290
285 ThisLocal(this.executableContext); 291 ThisLocal(this.executableContext);
286 292
287 String get name => 'this'; 293 String get name => 'this';
288 294
(...skipping 804 matching lines...) Expand 10 before | Expand all | Expand 10 after
1093 1099
1094 String get name => typeVariable.name; 1100 String get name => typeVariable.name;
1095 1101
1096 int get hashCode => typeVariable.hashCode; 1102 int get hashCode => typeVariable.hashCode;
1097 1103
1098 bool operator ==(other) { 1104 bool operator ==(other) {
1099 if (other is! TypeVariableLocal) return false; 1105 if (other is! TypeVariableLocal) return false;
1100 return typeVariable == other.typeVariable; 1106 return typeVariable == other.typeVariable;
1101 } 1107 }
1102 } 1108 }
OLDNEW
« no previous file with comments | « pkg/analyzer2dart/lib/src/modely.dart ('k') | pkg/compiler/lib/src/compile_time_constants.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698