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) {
+  ;
+}