Format if case for if statements. (#1353)
* Format if case.
* Rebase and fix differences.
* Move if case test and remove patterns folder for now.
diff --git a/lib/src/front_end/ast_node_visitor.dart b/lib/src/front_end/ast_node_visitor.dart
index b88ba6d..a1fc65a 100644
--- a/lib/src/front_end/ast_node_visitor.dart
+++ b/lib/src/front_end/ast_node_visitor.dart
@@ -220,6 +220,18 @@
}
@override
+ Piece visitCaseClause(CaseClause node) {
+ return buildPiece((b) {
+ b.token(node.caseKeyword);
+ if (node.guardedPattern.whenClause != null) {
+ throw UnimplementedError();
+ }
+ b.space();
+ b.visit(node.guardedPattern.pattern);
+ });
+ }
+
+ @override
Piece visitCastPattern(CastPattern node) {
throw UnimplementedError();
}
@@ -1022,11 +1034,14 @@
void traverse(Token? precedingElse, IfStatement ifStatement) {
var condition = buildPiece((b) {
b.token(precedingElse, spaceAfter: true);
- b.add(startControlFlow(
- ifStatement.ifKeyword,
- ifStatement.leftParenthesis,
- ifStatement.expression,
- ifStatement.rightParenthesis));
+ b.token(ifStatement.ifKeyword);
+ b.space();
+ b.token(ifStatement.leftParenthesis);
+ b.add(buildPiece((b) {
+ b.visit(ifStatement.expression);
+ b.visit(ifStatement.caseClause, spaceBefore: true);
+ }));
+ b.token(ifStatement.rightParenthesis);
b.space();
});
diff --git a/test/statement/if_case.stmt b/test/statement/if_case.stmt
new file mode 100644
index 0000000..98c6e58
--- /dev/null
+++ b/test/statement/if_case.stmt
@@ -0,0 +1,7 @@
+40 columns |
+>>> Simple bool pattern.
+if (obj case true) {;}
+<<<
+if (obj case true) {
+ ;
+}