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

Side by Side Diff: pkg/front_end/lib/src/fasta/kernel/frontend_accessors.dart

Issue 2945553002: Remove Kernel*Set classes. (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 | pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.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) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, 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 /// A library to help transform compounds and null-aware accessors into 5 /// A library to help transform compounds and null-aware accessors into
6 /// let expressions. 6 /// let expressions.
7 7
8 import 'package:front_end/src/fasta/kernel/kernel_shadow_ast.dart' 8 import 'package:front_end/src/fasta/kernel/kernel_shadow_ast.dart'
9 show 9 show
10 KernelArguments, 10 KernelArguments,
11 KernelComplexAssignment, 11 KernelComplexAssignment,
12 KernelConditionalExpression, 12 KernelConditionalExpression,
13 KernelMethodInvocation, 13 KernelMethodInvocation,
14 KernelPropertyAssign, 14 KernelPropertyAssign,
15 KernelPropertyGet, 15 KernelPropertyGet,
16 KernelPropertySet,
17 KernelThisExpression, 16 KernelThisExpression,
18 KernelVariableDeclaration, 17 KernelVariableDeclaration,
19 KernelVariableGet, 18 KernelVariableGet;
20 KernelVariableSet;
21 19
22 import 'package:front_end/src/fasta/kernel/utils.dart' show offsetForToken; 20 import 'package:front_end/src/fasta/kernel/utils.dart' show offsetForToken;
23 21
24 import 'package:front_end/src/scanner/token.dart' show Token; 22 import 'package:front_end/src/scanner/token.dart' show Token;
25 23
26 import 'package:front_end/src/fasta/kernel/fasta_accessors.dart' 24 import 'package:front_end/src/fasta/kernel/fasta_accessors.dart'
27 show BuilderHelper; 25 show BuilderHelper;
28 26
29 import 'package:kernel/ast.dart' hide MethodInvocation, InvalidExpression; 27 import 'package:kernel/ast.dart' hide MethodInvocation, InvalidExpression;
30 28
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
211 ..fileOffset = offsetForToken(token); 209 ..fileOffset = offsetForToken(token);
212 complexAssignment?.read = read; 210 complexAssignment?.read = read;
213 return read; 211 return read;
214 } 212 }
215 213
216 Expression _makeWrite(Expression value, bool voidContext, 214 Expression _makeWrite(Expression value, bool voidContext,
217 KernelComplexAssignment complexAssignment) { 215 KernelComplexAssignment complexAssignment) {
218 helper.typePromoter.mutateVariable(variable, helper.functionNestingLevel); 216 helper.typePromoter.mutateVariable(variable, helper.functionNestingLevel);
219 var write = variable.isFinal || variable.isConst 217 var write = variable.isFinal || variable.isConst
220 ? makeInvalidWrite(value) 218 ? makeInvalidWrite(value)
221 : new KernelVariableSet(variable, value) 219 : new VariableSet(variable, value)
222 ..fileOffset = offsetForToken(token); 220 ..fileOffset = offsetForToken(token);
223 complexAssignment?.write = write; 221 complexAssignment?.write = write;
224 return write; 222 return write;
225 } 223 }
226 } 224 }
227 225
228 class PropertyAccessor extends Accessor { 226 class PropertyAccessor extends Accessor {
229 VariableDeclaration _receiverVariable; 227 VariableDeclaration _receiverVariable;
230 Expression receiver; 228 Expression receiver;
231 Name name; 229 Name name;
(...skipping 12 matching lines...) Expand all
244 242
245 PropertyAccessor.internal(BuilderHelper helper, this.receiver, this.name, 243 PropertyAccessor.internal(BuilderHelper helper, this.receiver, this.name,
246 this.getter, this.setter, Token token) 244 this.getter, this.setter, Token token)
247 : super(helper, token); 245 : super(helper, token);
248 246
249 Expression _makeSimpleRead() => new KernelPropertyGet(receiver, name, getter) 247 Expression _makeSimpleRead() => new KernelPropertyGet(receiver, name, getter)
250 ..fileOffset = offsetForToken(token); 248 ..fileOffset = offsetForToken(token);
251 249
252 Expression _makeSimpleWrite(Expression value, bool voidContext, 250 Expression _makeSimpleWrite(Expression value, bool voidContext,
253 KernelComplexAssignment complexAssignment) { 251 KernelComplexAssignment complexAssignment) {
254 var write = new KernelPropertySet(receiver, name, value, setter) 252 var write = new PropertySet(receiver, name, value, setter)
255 ..fileOffset = offsetForToken(token); 253 ..fileOffset = offsetForToken(token);
256 complexAssignment?.write = write; 254 complexAssignment?.write = write;
257 return write; 255 return write;
258 } 256 }
259 257
260 receiverAccess() { 258 receiverAccess() {
261 _receiverVariable ??= new VariableDeclaration.forValue(receiver); 259 _receiverVariable ??= new VariableDeclaration.forValue(receiver);
262 return new VariableGet(_receiverVariable) 260 return new VariableGet(_receiverVariable)
263 ..fileOffset = offsetForToken(token); 261 ..fileOffset = offsetForToken(token);
264 } 262 }
265 263
266 Expression _makeRead(KernelComplexAssignment complexAssignment) { 264 Expression _makeRead(KernelComplexAssignment complexAssignment) {
267 var read = new KernelPropertyGet(receiverAccess(), name, getter) 265 var read = new KernelPropertyGet(receiverAccess(), name, getter)
268 ..fileOffset = offsetForToken(token); 266 ..fileOffset = offsetForToken(token);
269 complexAssignment?.read = read; 267 complexAssignment?.read = read;
270 return read; 268 return read;
271 } 269 }
272 270
273 Expression _makeWrite(Expression value, bool voidContext, 271 Expression _makeWrite(Expression value, bool voidContext,
274 KernelComplexAssignment complexAssignment) { 272 KernelComplexAssignment complexAssignment) {
275 var write = new KernelPropertySet(receiverAccess(), name, value, setter) 273 var write = new PropertySet(receiverAccess(), name, value, setter)
276 ..fileOffset = offsetForToken(token); 274 ..fileOffset = offsetForToken(token);
277 complexAssignment?.write = write; 275 complexAssignment?.write = write;
278 return write; 276 return write;
279 } 277 }
280 278
281 Expression _finish( 279 Expression _finish(
282 Expression body, KernelComplexAssignment complexAssignment) { 280 Expression body, KernelComplexAssignment complexAssignment) {
283 body = makeLet(_receiverVariable, body); 281 body = makeLet(_receiverVariable, body);
284 if (complexAssignment != null) { 282 if (complexAssignment != null) {
285 complexAssignment.desugared = body; 283 complexAssignment.desugared = body;
(...skipping 16 matching lines...) Expand all
302 300
303 Expression _makeRead(KernelComplexAssignment complexAssignment) { 301 Expression _makeRead(KernelComplexAssignment complexAssignment) {
304 var read = new KernelPropertyGet(new KernelThisExpression(), name, getter) 302 var read = new KernelPropertyGet(new KernelThisExpression(), name, getter)
305 ..fileOffset = offsetForToken(token); 303 ..fileOffset = offsetForToken(token);
306 complexAssignment?.read = read; 304 complexAssignment?.read = read;
307 return read; 305 return read;
308 } 306 }
309 307
310 Expression _makeWrite(Expression value, bool voidContext, 308 Expression _makeWrite(Expression value, bool voidContext,
311 KernelComplexAssignment complexAssignment) { 309 KernelComplexAssignment complexAssignment) {
312 var write = 310 var write = new PropertySet(new KernelThisExpression(), name, value, setter)
313 new KernelPropertySet(new KernelThisExpression(), name, value, setter) 311 ..fileOffset = offsetForToken(token);
314 ..fileOffset = offsetForToken(token);
315 complexAssignment?.write = write; 312 complexAssignment?.write = write;
316 return write; 313 return write;
317 } 314 }
318 } 315 }
319 316
320 class NullAwarePropertyAccessor extends Accessor { 317 class NullAwarePropertyAccessor extends Accessor {
321 VariableDeclaration receiver; 318 VariableDeclaration receiver;
322 Expression receiverExpression; 319 Expression receiverExpression;
323 Name name; 320 Name name;
324 Member getter, setter; 321 Member getter, setter;
325 DartType type; 322 DartType type;
326 323
327 NullAwarePropertyAccessor(BuilderHelper helper, this.receiverExpression, 324 NullAwarePropertyAccessor(BuilderHelper helper, this.receiverExpression,
328 this.name, this.getter, this.setter, this.type, Token token) 325 this.name, this.getter, this.setter, this.type, Token token)
329 : this.receiver = makeOrReuseVariable(receiverExpression), 326 : this.receiver = makeOrReuseVariable(receiverExpression),
330 super(helper, token); 327 super(helper, token);
331 328
332 receiverAccess() => new VariableGet(receiver); 329 receiverAccess() => new VariableGet(receiver);
333 330
334 Expression _makeRead(KernelComplexAssignment complexAssignment) { 331 Expression _makeRead(KernelComplexAssignment complexAssignment) {
335 var read = new KernelPropertyGet(receiverAccess(), name, getter) 332 var read = new KernelPropertyGet(receiverAccess(), name, getter)
336 ..fileOffset = offsetForToken(token); 333 ..fileOffset = offsetForToken(token);
337 complexAssignment?.read = read; 334 complexAssignment?.read = read;
338 return read; 335 return read;
339 } 336 }
340 337
341 Expression _makeWrite(Expression value, bool voidContext, 338 Expression _makeWrite(Expression value, bool voidContext,
342 KernelComplexAssignment complexAssignment) { 339 KernelComplexAssignment complexAssignment) {
343 var write = new KernelPropertySet(receiverAccess(), name, value, setter) 340 var write = new PropertySet(receiverAccess(), name, value, setter)
344 ..fileOffset = offsetForToken(token); 341 ..fileOffset = offsetForToken(token);
345 complexAssignment?.write = write; 342 complexAssignment?.write = write;
346 return write; 343 return write;
347 } 344 }
348 345
349 Expression _finish( 346 Expression _finish(
350 Expression body, KernelComplexAssignment complexAssignment) { 347 Expression body, KernelComplexAssignment complexAssignment) {
351 var nullAwareGuard = new KernelConditionalExpression( 348 var nullAwareGuard = new KernelConditionalExpression(
352 buildIsNull(receiverAccess(), offsetForToken(token)), 349 buildIsNull(receiverAccess(), offsetForToken(token)),
353 new NullLiteral(), 350 new NullLiteral(),
(...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after
725 722
726 Expression buildIsNull(Expression value, int offset) { 723 Expression buildIsNull(Expression value, int offset) {
727 return makeBinary(value, equalsName, null, new NullLiteral(), offset: offset); 724 return makeBinary(value, equalsName, null, new NullLiteral(), offset: offset);
728 } 725 }
729 726
730 VariableDeclaration makeOrReuseVariable(Expression value) { 727 VariableDeclaration makeOrReuseVariable(Expression value) {
731 // TODO: Devise a way to remember if a variable declaration was reused 728 // TODO: Devise a way to remember if a variable declaration was reused
732 // or is fresh (hence needs a let binding). 729 // or is fresh (hence needs a let binding).
733 return new VariableDeclaration.forValue(value); 730 return new VariableDeclaration.forValue(value);
734 } 731 }
OLDNEW
« no previous file with comments | « no previous file | pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698