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

Side by Side Diff: pkg/kernel/lib/frontend/accessors.dart

Issue 2610133002: Non-format-changing kernel offset changes (Closed)
Patch Set: Changed offset variable introduced in various methods in accessors.dart to a named parameter with d… Created 3 years, 11 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/kernel/lib/clone.dart ('k') | pkg/kernel/lib/kernel.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 library kernel.frontend.accessors; 7 library kernel.frontend.accessors;
8 8
9 import '../ast.dart'; 9 import '../ast.dart';
10 10
(...skipping 24 matching lines...) Expand all
35 _makeWrite(value, voidContext), new NullLiteral(), type)); 35 _makeWrite(value, voidContext), new NullLiteral(), type));
36 } 36 }
37 var tmp = new VariableDeclaration.forValue(_makeRead()); 37 var tmp = new VariableDeclaration.forValue(_makeRead());
38 return _finish(makeLet( 38 return _finish(makeLet(
39 tmp, 39 tmp,
40 new ConditionalExpression(buildIsNull(new VariableGet(tmp)), 40 new ConditionalExpression(buildIsNull(new VariableGet(tmp)),
41 _makeWrite(value, voidContext), new VariableGet(tmp), type))); 41 _makeWrite(value, voidContext), new VariableGet(tmp), type)));
42 } 42 }
43 43
44 Expression buildCompoundAssignment(Name binaryOperator, Expression value, 44 Expression buildCompoundAssignment(Name binaryOperator, Expression value,
45 {bool voidContext: false, Procedure interfaceTarget}) { 45 {int offset: TreeNode.noOffset,
46 bool voidContext: false,
47 Procedure interfaceTarget}) {
46 return _finish(_makeWrite( 48 return _finish(_makeWrite(
47 builtBinary = 49 builtBinary = makeBinary(
48 makeBinary(_makeRead(), binaryOperator, interfaceTarget, value), 50 _makeRead(), binaryOperator, interfaceTarget, value,
51 offset: offset),
49 voidContext)); 52 voidContext));
50 } 53 }
51 54
52 Expression buildPrefixIncrement(Name binaryOperator, 55 Expression buildPrefixIncrement(Name binaryOperator,
53 {bool voidContext: false, Procedure interfaceTarget}) { 56 {int offset: TreeNode.noOffset,
57 bool voidContext: false,
58 Procedure interfaceTarget}) {
54 return buildCompoundAssignment(binaryOperator, new IntLiteral(1), 59 return buildCompoundAssignment(binaryOperator, new IntLiteral(1),
55 voidContext: voidContext, interfaceTarget: interfaceTarget); 60 offset: offset,
61 voidContext: voidContext,
62 interfaceTarget: interfaceTarget);
56 } 63 }
57 64
58 Expression buildPostfixIncrement(Name binaryOperator, 65 Expression buildPostfixIncrement(Name binaryOperator,
59 {bool voidContext: false, Procedure interfaceTarget}) { 66 {int offset: TreeNode.noOffset,
67 bool voidContext: false,
68 Procedure interfaceTarget}) {
60 if (voidContext) { 69 if (voidContext) {
61 return buildPrefixIncrement(binaryOperator, 70 return buildPrefixIncrement(binaryOperator, offset: offset,
62 voidContext: true, interfaceTarget: interfaceTarget); 71 voidContext: true, interfaceTarget: interfaceTarget);
63 } 72 }
64 var value = new VariableDeclaration.forValue(_makeRead()); 73 var value = new VariableDeclaration.forValue(_makeRead());
65 valueAccess() => new VariableGet(value); 74 valueAccess() => new VariableGet(value);
66 var dummy = new VariableDeclaration.forValue(_makeWrite( 75 var dummy = new VariableDeclaration.forValue(_makeWrite(
67 builtBinary = makeBinary( 76 builtBinary = makeBinary(valueAccess(), binaryOperator, interfaceTarget,
68 valueAccess(), binaryOperator, interfaceTarget, new IntLiteral(1)), 77 new IntLiteral(1), offset: offset),
69 true)); 78 true));
70 return _finish(makeLet(value, makeLet(dummy, valueAccess()))); 79 return _finish(makeLet(value, makeLet(dummy, valueAccess())));
71 } 80 }
72 81
73 Expression _makeSimpleRead() => _makeRead(); 82 Expression _makeSimpleRead() => _makeRead();
74 83
75 Expression _makeSimpleWrite(Expression value, bool voidContext) { 84 Expression _makeSimpleWrite(Expression value, bool voidContext) {
76 return _makeWrite(value, voidContext); 85 return _makeWrite(value, voidContext);
77 } 86 }
78 87
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after
393 _makeWrite(Expression value, bool voidContext) => makeInvalidWrite(value); 402 _makeWrite(Expression value, bool voidContext) => makeInvalidWrite(value);
394 403
395 Expression _finish(Expression body) => makeLet(value, body); 404 Expression _finish(Expression body) => makeLet(value, body);
396 } 405 }
397 406
398 Expression makeLet(VariableDeclaration variable, Expression body) { 407 Expression makeLet(VariableDeclaration variable, Expression body) {
399 if (variable == null) return body; 408 if (variable == null) return body;
400 return new Let(variable, body); 409 return new Let(variable, body);
401 } 410 }
402 411
403 Expression makeBinary(Expression left, Name operator, Procedure interfaceTarget, 412 Expression makeBinary(
404 Expression right) { 413 Expression left, Name operator, Procedure interfaceTarget, Expression right,
414 {int offset: TreeNode.noOffset}) {
405 return new MethodInvocation( 415 return new MethodInvocation(
406 left, operator, new Arguments(<Expression>[right]), interfaceTarget); 416 left, operator, new Arguments(<Expression>[right]), interfaceTarget)
417 ..fileOffset = offset;
407 } 418 }
408 419
409 final Name _equalOperator = new Name('=='); 420 final Name _equalOperator = new Name('==');
410 421
411 Expression buildIsNull(Expression value) { 422 Expression buildIsNull(Expression value, {int offset: TreeNode.noOffset}) {
412 return makeBinary(value, _equalOperator, null, new NullLiteral()); 423 return makeBinary(value, _equalOperator, null, new NullLiteral(),
424 offset: offset);
413 } 425 }
414 426
415 VariableDeclaration makeOrReuseVariable(Expression value) { 427 VariableDeclaration makeOrReuseVariable(Expression value) {
416 // TODO: Devise a way to remember if a variable declaration was reused 428 // TODO: Devise a way to remember if a variable declaration was reused
417 // or is fresh (hence needs a let binding). 429 // or is fresh (hence needs a let binding).
418 return new VariableDeclaration.forValue(value); 430 return new VariableDeclaration.forValue(value);
419 } 431 }
420 432
421 Expression wrapInvalid(Expression e) { 433 Expression wrapInvalid(Expression e) {
422 return new Let(new VariableDeclaration.forValue(e), new InvalidExpression()); 434 return new Let(new VariableDeclaration.forValue(e), new InvalidExpression());
423 } 435 }
OLDNEW
« no previous file with comments | « pkg/kernel/lib/clone.dart ('k') | pkg/kernel/lib/kernel.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698