[wgsl-writer] Restore huggie-style braces

Change-Id: Ieec33cccbfeb2589d1292103001f0de5267e02bb
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/18040
Reviewed-by: dan sinclair <dsinclair@google.com>
diff --git a/src/writer/wgsl/generator_impl.cc b/src/writer/wgsl/generator_impl.cc
index a74c48e..c288b9d 100644
--- a/src/writer/wgsl/generator_impl.cc
+++ b/src/writer/wgsl/generator_impl.cc
@@ -363,7 +363,7 @@
     return false;
   }
 
-  return EmitStatementBlock(func->body());
+  return EmitStatementBlockAndNewline(func->body());
 }
 
 bool GeneratorImpl::EmitType(ast::type::Type* type) {
@@ -704,11 +704,20 @@
 
   decrement_indent();
   make_indent();
-  out_ << "}" << std::endl;
+  out_ << "}";
 
   return true;
 }
 
+bool GeneratorImpl::EmitStatementBlockAndNewline(
+    const std::vector<std::unique_ptr<ast::Statement>>& statements) {
+  const bool result = EmitStatementBlock(statements);
+  if (result) {
+    out_ << std::endl;
+  }
+  return result;
+}
+
 bool GeneratorImpl::EmitStatement(ast::Statement* stmt) {
   if (stmt->IsAssign()) {
     return EmitAssign(stmt->AsAssign());
@@ -811,7 +820,7 @@
     out_ << ":";
   }
 
-  return EmitStatementBlock(stmt->body());
+  return EmitStatementBlockAndNewline(stmt->body());
 }
 
 bool GeneratorImpl::EmitContinue(ast::ContinueStatement* stmt) {
@@ -840,15 +849,14 @@
 }
 
 bool GeneratorImpl::EmitElse(ast::ElseStatement* stmt) {
-  make_indent();
   if (stmt->HasCondition()) {
-    out_ << "elseif (";
+    out_ << " elseif (";
     if (!EmitExpression(stmt->condition())) {
       return false;
     }
     out_ << ")";
   } else {
-    out_ << "else";
+    out_ << " else";
   }
 
   return EmitStatementBlock(stmt->body());
@@ -878,6 +886,7 @@
       return false;
     }
   }
+  out_ << std::endl;
 
   return true;
 }
@@ -906,7 +915,7 @@
     make_indent();
     out_ << "continuing";
 
-    if (!EmitStatementBlock(stmt->continuing())) {
+    if (!EmitStatementBlockAndNewline(stmt->continuing())) {
       return false;
     }
   }
@@ -933,7 +942,7 @@
   }
   out_ << ")";
 
-  return EmitStatementBlock(stmt->body());
+  return EmitStatementBlockAndNewline(stmt->body());
 }
 
 bool GeneratorImpl::EmitReturn(ast::ReturnStatement* stmt) {
@@ -983,7 +992,7 @@
   }
   out_ << ")";
 
-  return EmitStatementBlock(stmt->body());
+  return EmitStatementBlockAndNewline(stmt->body());
 }
 
 }  // namespace wgsl
diff --git a/src/writer/wgsl/generator_impl.h b/src/writer/wgsl/generator_impl.h
index e77ee95..8ec4572 100644
--- a/src/writer/wgsl/generator_impl.h
+++ b/src/writer/wgsl/generator_impl.h
@@ -176,11 +176,16 @@
   /// @param stmt the statement to emit
   /// @returns true if the statement was successfully emitted
   bool EmitReturn(ast::ReturnStatement* stmt);
-  /// Handles a list of statements
+  /// Handles a brace-enclosed list of statements.
   /// @param statements the statements to output
   /// @returns true if the statements were emitted
   bool EmitStatementBlock(
       const std::vector<std::unique_ptr<ast::Statement>>& statements);
+  /// Handles a brace-enclosed list of statements and trailing newline.
+  /// @param statements the statements to output
+  /// @returns true if the statements were emitted
+  bool EmitStatementBlockAndNewline(
+      const std::vector<std::unique_ptr<ast::Statement>>& statements);
   /// Handles statement
   /// @param stmt the statement to emit
   /// @returns true if the statement was emitted
diff --git a/src/writer/wgsl/generator_impl_else_test.cc b/src/writer/wgsl/generator_impl_else_test.cc
index 0d1d98a..561babf 100644
--- a/src/writer/wgsl/generator_impl_else_test.cc
+++ b/src/writer/wgsl/generator_impl_else_test.cc
@@ -38,10 +38,9 @@
   g.increment_indent();
 
   ASSERT_TRUE(g.EmitElse(&e)) << g.error();
-  EXPECT_EQ(g.result(), R"(  else {
+  EXPECT_EQ(g.result(), R"( else {
     kill;
-  }
-)");
+  })");
 }
 
 TEST_F(GeneratorImplTest, Emit_ElseWithCondition) {
@@ -56,10 +55,9 @@
   g.increment_indent();
 
   ASSERT_TRUE(g.EmitElse(&e)) << g.error();
-  EXPECT_EQ(g.result(), R"(  elseif (cond) {
+  EXPECT_EQ(g.result(), R"( elseif (cond) {
     kill;
-  }
-)");
+  })");
 }
 
 }  // namespace
diff --git a/src/writer/wgsl/generator_impl_if_test.cc b/src/writer/wgsl/generator_impl_if_test.cc
index cde3640..274c7c0 100644
--- a/src/writer/wgsl/generator_impl_if_test.cc
+++ b/src/writer/wgsl/generator_impl_if_test.cc
@@ -69,8 +69,7 @@
   ASSERT_TRUE(g.EmitStatement(&i)) << g.error();
   EXPECT_EQ(g.result(), R"(  if (cond) {
     kill;
-  }
-  elseif (else_cond) {
+  } elseif (else_cond) {
     kill;
   }
 )");
@@ -96,8 +95,7 @@
   ASSERT_TRUE(g.EmitStatement(&i)) << g.error();
   EXPECT_EQ(g.result(), R"(  if (cond) {
     kill;
-  }
-  else {
+  } else {
     kill;
   }
 )");
@@ -130,11 +128,9 @@
   ASSERT_TRUE(g.EmitStatement(&i)) << g.error();
   EXPECT_EQ(g.result(), R"(  if (cond) {
     kill;
-  }
-  elseif (else_cond) {
+  } elseif (else_cond) {
     kill;
-  }
-  else {
+  } else {
     kill;
   }
 )");