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

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

Issue 2937143002: Edit docs as per Siggi's feedback. (Closed)
Patch Set: Created 3 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
« no previous file with comments | « no previous file | no next file » | 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 import 'common/names.dart' show Identifiers; 5 import 'common/names.dart' show Identifiers;
6 import 'common/resolution.dart' show ParsingContext, Resolution; 6 import 'common/resolution.dart' show ParsingContext, Resolution;
7 import 'common/tasks.dart' show CompilerTask; 7 import 'common/tasks.dart' show CompilerTask;
8 import 'common.dart'; 8 import 'common.dart';
9 import 'compiler.dart' show Compiler; 9 import 'compiler.dart' show Compiler;
10 import 'constants/expressions.dart'; 10 import 'constants/expressions.dart';
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
112 /// int y; 112 /// int y;
113 /// FooClosure(this.y); 113 /// FooClosure(this.y);
114 /// call(x) => this.y + x; 114 /// call(x) => this.y + x;
115 /// } 115 /// }
116 /// 116 ///
117 /// and then to execute this closure, for example: 117 /// and then to execute this closure, for example:
118 /// 118 ///
119 /// var foo = new FooClosure(1); 119 /// var foo = new FooClosure(1);
120 /// foo.call(2); 120 /// foo.call(2);
121 /// 121 ///
122 /// if y is modified elsewhere within its scope, accesses to y anywhere in the 122 /// if y is modified elsewhere within its scope, accesses to y anywhere in the
Siggi Cherem (dart-lang) 2017/06/15 00:12:24 just noticed, maybe quote `y` here as well.
Emily Fortuna 2017/06/15 00:13:35 thx!
123 /// code will be controlled via a box object. 123 /// code will be controlled via a box object.
124 ///
125 /// Because in these examples `y` was declared in some other, outer scope, but
126 /// used in the inner scope of this closure, we say `y` is a "captured"
127 /// variable.
124 /// TODO(efortuna): Make interface simpler in subsequent refactorings. 128 /// TODO(efortuna): Make interface simpler in subsequent refactorings.
125 class ClosureRepresentationInfo { 129 class ClosureRepresentationInfo {
126 const ClosureRepresentationInfo(); 130 const ClosureRepresentationInfo();
127 131
128 /// The original local function before any translation. 132 /// The original local function before any translation.
129 /// 133 ///
130 /// Will be null for methods. 134 /// Will be null for methods.
131 Local get closureEntity => null; 135 Local get closureEntity => null;
132 136
137 /// The entity for the class used to represent the rewritten closure in the
138 /// emitted JavaScript.
139 ///
133 /// Closures are rewritten in the form of classes that have fields to control 140 /// Closures are rewritten in the form of classes that have fields to control
134 /// the redirection and editing of variables that are "captured" inside a 141 /// the redirection and editing of captured variables.
135 /// scope (declared in an outer scope but used in an inside scope). So this
136 /// returns the class entity that represents this particular rewritten
137 /// closure.
138 ClassEntity get closureClassEntity => null; 142 ClassEntity get closureClassEntity => null;
139 143
140 /// The function that implements the [local] function as a `call` method on 144 /// The function that implements the [local] function as a `call` method on
141 /// the closure class. 145 /// the closure class.
142 FunctionEntity get callMethod => null; 146 FunctionEntity get callMethod => null;
143 147
144 /// As shown in the example in the comments at the top of this class, we 148 /// As shown in the example in the comments at the top of this class, we
145 /// create fields in the closure class for each captured variable. This is an 149 /// create fields in the closure class for each captured variable. This is an
146 /// accessor to that set of fields. 150 /// accessor to that set of fields.
147 List<Local> get createdFieldEntities => const <Local>[]; 151 List<Local> get createdFieldEntities => const <Local>[];
(...skipping 1296 matching lines...) Expand 10 before | Expand all | Expand 10 after
1444 /// 1448 ///
1445 /// Move the below classes to a JS model eventually. 1449 /// Move the below classes to a JS model eventually.
1446 /// 1450 ///
1447 abstract class JSEntity implements MemberEntity { 1451 abstract class JSEntity implements MemberEntity {
1448 Local get declaredEntity; 1452 Local get declaredEntity;
1449 } 1453 }
1450 1454
1451 abstract class PrivatelyNamedJSEntity implements JSEntity { 1455 abstract class PrivatelyNamedJSEntity implements JSEntity {
1452 Entity get rootOfScope; 1456 Entity get rootOfScope;
1453 } 1457 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698