@@ -37,12 +37,11 @@ class AstNodeVisitor extends ThrowingAstVisitor<void>
37
37
final LineInfo lineInfo;
38
38
39
39
@override
40
- final PieceWriter writer ;
40
+ final PieceWriter pieces ;
41
41
42
- /// Initialize a newly created visitor to write source code representing
43
- /// the visited nodes to the given [writer] .
42
+ /// Create a new visitor that will be called to visit the code in [source] .
44
43
AstNodeVisitor (DartFormatter formatter, this .lineInfo, SourceCode source)
45
- : writer = PieceWriter (formatter, source);
44
+ : pieces = PieceWriter (formatter, source);
46
45
47
46
/// Visits [node] and returns the formatted result.
48
47
///
@@ -86,10 +85,10 @@ class AstNodeVisitor extends ThrowingAstVisitor<void>
86
85
// Write any comments at the end of the code.
87
86
sequence.addCommentsBefore (node.endToken.next! );
88
87
89
- writer. push (sequence.build ());
88
+ pieces. give (sequence.build ());
90
89
91
90
// Finish writing and return the complete result.
92
- return writer .finish ();
91
+ return pieces .finish ();
93
92
}
94
93
95
94
@override
@@ -130,7 +129,7 @@ class AstNodeVisitor extends ThrowingAstVisitor<void>
130
129
@override
131
130
void visitAssignmentExpression (AssignmentExpression node) {
132
131
visit (node.leftHandSide);
133
- writer. space ();
132
+ space ();
134
133
finishAssignment (node.operator , node.rightHandSide);
135
134
}
136
135
@@ -219,19 +218,17 @@ class AstNodeVisitor extends ThrowingAstVisitor<void>
219
218
@override
220
219
void visitConditionalExpression (ConditionalExpression node) {
221
220
visit (node.condition);
222
- var condition = writer.pop ();
223
- writer.split ();
221
+ var condition = pieces.split ();
224
222
225
223
token (node.question);
226
- writer. space ();
224
+ space ();
227
225
visit (node.thenExpression);
228
- var thenBranch = writer.pop ();
229
- writer.split ();
226
+ var thenBranch = pieces.split ();
230
227
231
228
token (node.colon);
232
- writer. space ();
229
+ space ();
233
230
visit (node.elseExpression);
234
- var elseBranch = writer. pop ();
231
+ var elseBranch = pieces. take ();
235
232
236
233
var piece = InfixPiece ([condition, thenBranch, elseBranch]);
237
234
@@ -243,13 +240,13 @@ class AstNodeVisitor extends ThrowingAstVisitor<void>
243
240
piece.pin (State .split);
244
241
}
245
242
246
- writer. push (piece);
243
+ pieces. give (piece);
247
244
}
248
245
249
246
@override
250
247
void visitConfiguration (Configuration node) {
251
248
token (node.ifKeyword);
252
- writer. space ();
249
+ space ();
253
250
token (node.leftParenthesis);
254
251
255
252
if (node.equalToken case var equals? ) {
@@ -259,7 +256,7 @@ class AstNodeVisitor extends ThrowingAstVisitor<void>
259
256
}
260
257
261
258
token (node.rightParenthesis);
262
- writer. space ();
259
+ space ();
263
260
visit (node.uri);
264
261
}
265
262
@@ -311,20 +308,19 @@ class AstNodeVisitor extends ThrowingAstVisitor<void>
311
308
@override
312
309
void visitDoStatement (DoStatement node) {
313
310
token (node.doKeyword);
314
- writer. space ();
311
+ space ();
315
312
visit (node.body);
316
- writer. space ();
313
+ space ();
317
314
token (node.whileKeyword);
318
- var body = writer.pop ();
319
- writer.split ();
315
+ var body = pieces.split ();
320
316
321
317
token (node.leftParenthesis);
322
318
visit (node.condition);
323
319
token (node.rightParenthesis);
324
320
token (node.semicolon);
325
- var condition = writer. pop ();
321
+ var condition = pieces. take ();
326
322
327
- writer. push (DoWhilePiece (body, condition));
323
+ pieces. give (DoWhilePiece (body, condition));
328
324
}
329
325
330
326
@override
@@ -417,7 +413,7 @@ class AstNodeVisitor extends ThrowingAstVisitor<void>
417
413
}
418
414
419
415
builder.rightBracket (node.rightParenthesis, delimiter: node.rightDelimiter);
420
- writer. push (builder.build ());
416
+ pieces. give (builder.build ());
421
417
}
422
418
423
419
@override
@@ -428,8 +424,7 @@ class AstNodeVisitor extends ThrowingAstVisitor<void>
428
424
@override
429
425
void visitForStatement (ForStatement node) {
430
426
token (node.forKeyword);
431
- writer.split ();
432
- var forKeyword = writer.pop ();
427
+ var forKeyword = pieces.split ();
433
428
434
429
// Treat the for loop parts sort of as an argument list where each clause
435
430
// is a separate argument. This means that when they split, they split like:
@@ -485,13 +480,13 @@ class AstNodeVisitor extends ThrowingAstVisitor<void>
485
480
}
486
481
487
482
partsList.rightBracket (node.rightParenthesis);
488
- writer.split ();
489
483
var forPartsPiece = partsList.build ();
490
484
485
+ pieces.split ();
491
486
visit (node.body);
492
- var body = writer. pop ();
487
+ var body = pieces. take ();
493
488
494
- writer. push (ForPiece (forKeyword, forPartsPiece, body,
489
+ pieces. give (ForPiece (forKeyword, forPartsPiece, body,
495
490
hasBlockBody: node.body is Block ));
496
491
}
497
492
@@ -649,14 +644,14 @@ class AstNodeVisitor extends ThrowingAstVisitor<void>
649
644
}
650
645
651
646
sequence.visit (node.statement);
652
- writer. push (sequence.build ());
647
+ pieces. give (sequence.build ());
653
648
}
654
649
655
650
@override
656
651
void visitLibraryDirective (LibraryDirective node) {
657
652
createDirectiveMetadata (node);
658
653
token (node.libraryKeyword);
659
- visit (node.name2, before: writer. space);
654
+ visit (node.name2, before: space);
660
655
token (node.semicolon);
661
656
}
662
657
@@ -794,7 +789,7 @@ class AstNodeVisitor extends ThrowingAstVisitor<void>
794
789
void visitPartDirective (PartDirective node) {
795
790
createDirectiveMetadata (node);
796
791
token (node.partKeyword);
797
- writer. space ();
792
+ space ();
798
793
visit (node.uri);
799
794
token (node.semicolon);
800
795
}
@@ -803,9 +798,9 @@ class AstNodeVisitor extends ThrowingAstVisitor<void>
803
798
void visitPartOfDirective (PartOfDirective node) {
804
799
createDirectiveMetadata (node);
805
800
token (node.partKeyword);
806
- writer. space ();
801
+ space ();
807
802
token (node.ofKeyword);
808
- writer. space ();
803
+ space ();
809
804
810
805
// Part-of may have either a name or a URI. Only one of these will be
811
806
// non-null. We visit both since visit() ignores null.
@@ -908,7 +903,7 @@ class AstNodeVisitor extends ThrowingAstVisitor<void>
908
903
token (node.returnKeyword);
909
904
910
905
if (node.expression case var expression) {
911
- writer. space ();
906
+ space ();
912
907
visit (expression);
913
908
}
914
909
@@ -922,7 +917,7 @@ class AstNodeVisitor extends ThrowingAstVisitor<void>
922
917
// come at the top of the file, we don't have to worry about preceding
923
918
// comments or whitespace.
924
919
// TODO(new-ir): Update selection if inside the script tag.
925
- writer .write (node.scriptTag.lexeme.trim ());
920
+ pieces .write (node.scriptTag.lexeme.trim ());
926
921
}
927
922
928
923
@override
@@ -948,14 +943,12 @@ class AstNodeVisitor extends ThrowingAstVisitor<void>
948
943
if ((node.type, node.name) case (var type? , var name? )) {
949
944
// Have both a type and name, so allow splitting between them.
950
945
visit (type);
951
- var typePiece = writer.pop ();
952
- writer.split ();
946
+ var typePiece = pieces.split ();
953
947
954
948
token (name);
955
- var namePiece = writer.pop ();
956
- writer.split ();
949
+ var namePiece = pieces.take ();
957
950
958
- writer. push (VariablePiece (typePiece, [namePiece], hasType: true ));
951
+ pieces. give (VariablePiece (typePiece, [namePiece], hasType: true ));
959
952
} else {
960
953
// Only one of name or type so just write whichever there is.
961
954
visit (node.type);
@@ -1005,23 +998,23 @@ class AstNodeVisitor extends ThrowingAstVisitor<void>
1005
998
1006
999
createSwitchValue (node.switchKeyword, node.leftParenthesis, node.expression,
1007
1000
node.rightParenthesis);
1008
- writer. space ();
1001
+ space ();
1009
1002
list.leftBracket (node.leftBracket);
1010
1003
1011
1004
for (var member in node.cases) {
1012
1005
list.visit (member);
1013
1006
}
1014
1007
1015
1008
list.rightBracket (node.rightBracket);
1016
- writer. push (list.build ());
1009
+ pieces. give (list.build ());
1017
1010
}
1018
1011
1019
1012
@override
1020
1013
void visitSwitchExpressionCase (SwitchExpressionCase node) {
1021
1014
if (node.guardedPattern.whenClause != null ) throw UnimplementedError ();
1022
1015
1023
1016
visit (node.guardedPattern.pattern);
1024
- writer. space ();
1017
+ space ();
1025
1018
finishAssignment (node.arrow, node.expression);
1026
1019
}
1027
1020
@@ -1032,10 +1025,9 @@ class AstNodeVisitor extends ThrowingAstVisitor<void>
1032
1025
1033
1026
// Attach the ` {` after the `)` in the [ListPiece] created by
1034
1027
// [createSwitchValue()].
1035
- writer. space ();
1028
+ space ();
1036
1029
token (node.leftBracket);
1037
- writer.split ();
1038
- var switchPiece = writer.pop ();
1030
+ var switchPiece = pieces.split ();
1039
1031
1040
1032
var sequence = SequenceBuilder (this );
1041
1033
for (var member in node.members) {
@@ -1047,10 +1039,10 @@ class AstNodeVisitor extends ThrowingAstVisitor<void>
1047
1039
token (member.keyword);
1048
1040
1049
1041
if (member is SwitchCase ) {
1050
- writer. space ();
1042
+ space ();
1051
1043
visit (member.expression);
1052
1044
} else if (member is SwitchPatternCase ) {
1053
- writer. space ();
1045
+ space ();
1054
1046
1055
1047
if (member.guardedPattern.whenClause != null ) {
1056
1048
throw UnimplementedError ();
@@ -1063,8 +1055,7 @@ class AstNodeVisitor extends ThrowingAstVisitor<void>
1063
1055
}
1064
1056
1065
1057
token (member.colon);
1066
- var casePiece = writer.pop ();
1067
- writer.split ();
1058
+ var casePiece = pieces.split ();
1068
1059
1069
1060
// Don't allow any blank lines between the `case` line and the first
1070
1061
// statement in the case (or the next case if this case has no body).
@@ -1079,9 +1070,9 @@ class AstNodeVisitor extends ThrowingAstVisitor<void>
1079
1070
sequence.addCommentsBefore (node.rightBracket);
1080
1071
1081
1072
token (node.rightBracket);
1082
- var rightBracketPiece = writer. pop ();
1073
+ var rightBracketPiece = pieces. take ();
1083
1074
1084
- writer. push (BlockPiece (switchPiece, sequence.build (), rightBracketPiece,
1075
+ pieces. give (BlockPiece (switchPiece, sequence.build (), rightBracketPiece,
1085
1076
alwaysSplit: node.members.isNotEmpty));
1086
1077
}
1087
1078
@@ -1126,7 +1117,7 @@ class AstNodeVisitor extends ThrowingAstVisitor<void>
1126
1117
void visitTypeParameter (TypeParameter node) {
1127
1118
token (node.name);
1128
1119
if (node.bound case var bound? ) {
1129
- writer. space ();
1120
+ space ();
1130
1121
modifier (node.extendsKeyword);
1131
1122
visit (bound);
1132
1123
}
@@ -1157,17 +1148,17 @@ class AstNodeVisitor extends ThrowingAstVisitor<void>
1157
1148
// argument list or a function type's parameter list) affect the indentation
1158
1149
// and splitting of the surrounding variable declaration.
1159
1150
visit (node.type);
1160
- var header = writer. pop ();
1151
+ var header = pieces. take ();
1161
1152
1162
1153
var variables = < Piece > [];
1163
1154
for (var variable in node.variables) {
1164
- writer .split ();
1155
+ pieces .split ();
1165
1156
visit (variable);
1166
1157
commaAfter (variable);
1167
- variables.add (writer. pop ());
1158
+ variables.add (pieces. take ());
1168
1159
}
1169
1160
1170
- writer. push (VariablePiece (header, variables, hasType: node.type != null ));
1161
+ pieces. give (VariablePiece (header, variables, hasType: node.type != null ));
1171
1162
}
1172
1163
1173
1164
@override
@@ -1179,19 +1170,18 @@ class AstNodeVisitor extends ThrowingAstVisitor<void>
1179
1170
@override
1180
1171
void visitWhileStatement (WhileStatement node) {
1181
1172
token (node.whileKeyword);
1182
- writer. space ();
1173
+ space ();
1183
1174
token (node.leftParenthesis);
1184
1175
visit (node.condition);
1185
1176
token (node.rightParenthesis);
1186
- var condition = writer.pop ();
1187
- writer.split ();
1177
+ var condition = pieces.split ();
1188
1178
1189
1179
visit (node.body);
1190
- var body = writer. pop ();
1180
+ var body = pieces. take ();
1191
1181
1192
1182
var piece = IfPiece ();
1193
1183
piece.add (condition, body, isBlock: node.body is Block );
1194
- writer. push (piece);
1184
+ pieces. give (piece);
1195
1185
}
1196
1186
1197
1187
@override
0 commit comments