writer/msl: Rework string printing

Add `out` parameters to expression and type generators.

Use the new helper classes in TextGenerator.
Cleans up bad formatting.

Prepares the writer generating 'pre' statements, required for atomics.

If-else statements are generated slightly differently. This is done so that 'pre' statements for the else conditions are scoped correctly. This is identical to the HLSL writer.

Bug tint:892

Change-Id: I4c6e96c90673ba30898b3682bf3198497d63a2d4
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/56067
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: James Price <jrprice@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
diff --git a/src/writer/msl/generator_impl.cc b/src/writer/msl/generator_impl.cc
index db3665e..c1c73b2 100644
--- a/src/writer/msl/generator_impl.cc
+++ b/src/writer/msl/generator_impl.cc
@@ -84,8 +84,9 @@
     return false;
   }
 
-  out_ << "#include <metal_stdlib>" << std::endl << std::endl;
-  out_ << "using namespace metal;" << std::endl;
+  line() << "#include <metal_stdlib>";
+  line();
+  line() << "using namespace metal;";
 
   for (auto* const type_decl : program_->AST().TypeDecls()) {
     if (!type_decl->Is<ast::Alias>()) {
@@ -96,7 +97,7 @@
   }
 
   if (!program_->AST().TypeDecls().empty()) {
-    out_ << std::endl;
+    line();
   }
 
   for (auto* var : program_->AST().GlobalVariables()) {
@@ -130,14 +131,13 @@
         return false;
       }
     }
+    line();
   }
 
   return true;
 }
 
 bool GeneratorImpl::EmitTypeDecl(const sem::Type* ty) {
-  make_indent();
-
   if (auto* str = ty->As<sem::Struct>()) {
     if (!EmitStructType(str)) {
       return false;
@@ -151,159 +151,161 @@
   return true;
 }
 
-bool GeneratorImpl::EmitArrayAccessor(ast::ArrayAccessorExpression* expr) {
+bool GeneratorImpl::EmitArrayAccessor(std::ostream& out,
+                                      ast::ArrayAccessorExpression* expr) {
   bool paren_lhs =
       !expr->array()
            ->IsAnyOf<ast::ArrayAccessorExpression, ast::CallExpression,
                      ast::IdentifierExpression, ast::MemberAccessorExpression,
                      ast::TypeConstructorExpression>();
+
   if (paren_lhs) {
-    out_ << "(";
+    out << "(";
   }
-  if (!EmitExpression(expr->array())) {
+  if (!EmitExpression(out, expr->array())) {
     return false;
   }
   if (paren_lhs) {
-    out_ << ")";
+    out << ")";
   }
 
-  out_ << "[";
+  out << "[";
 
-  if (!EmitExpression(expr->idx_expr())) {
+  if (!EmitExpression(out, expr->idx_expr())) {
     return false;
   }
-  out_ << "]";
+  out << "]";
 
   return true;
 }
 
-bool GeneratorImpl::EmitBitcast(ast::BitcastExpression* expr) {
-  out_ << "as_type<";
-  if (!EmitType(TypeOf(expr)->UnwrapRef(), "")) {
+bool GeneratorImpl::EmitBitcast(std::ostream& out,
+                                ast::BitcastExpression* expr) {
+  out << "as_type<";
+  if (!EmitType(out, TypeOf(expr)->UnwrapRef(), "")) {
     return false;
   }
 
-  out_ << ">(";
-  if (!EmitExpression(expr->expr())) {
+  out << ">(";
+  if (!EmitExpression(out, expr->expr())) {
     return false;
   }
 
-  out_ << ")";
+  out << ")";
   return true;
 }
 
 bool GeneratorImpl::EmitAssign(ast::AssignmentStatement* stmt) {
-  make_indent();
+  auto out = line();
 
-  if (!EmitExpression(stmt->lhs())) {
+  if (!EmitExpression(out, stmt->lhs())) {
     return false;
   }
 
-  out_ << " = ";
+  out << " = ";
 
-  if (!EmitExpression(stmt->rhs())) {
+  if (!EmitExpression(out, stmt->rhs())) {
     return false;
   }
 
-  out_ << ";" << std::endl;
+  out << ";";
 
   return true;
 }
 
-bool GeneratorImpl::EmitBinary(ast::BinaryExpression* expr) {
-  out_ << "(";
+bool GeneratorImpl::EmitBinary(std::ostream& out, ast::BinaryExpression* expr) {
+  out << "(";
 
-  if (!EmitExpression(expr->lhs())) {
+  if (!EmitExpression(out, expr->lhs())) {
     return false;
   }
-  out_ << " ";
+  out << " ";
 
   switch (expr->op()) {
     case ast::BinaryOp::kAnd:
-      out_ << "&";
+      out << "&";
       break;
     case ast::BinaryOp::kOr:
-      out_ << "|";
+      out << "|";
       break;
     case ast::BinaryOp::kXor:
-      out_ << "^";
+      out << "^";
       break;
     case ast::BinaryOp::kLogicalAnd:
-      out_ << "&&";
+      out << "&&";
       break;
     case ast::BinaryOp::kLogicalOr:
-      out_ << "||";
+      out << "||";
       break;
     case ast::BinaryOp::kEqual:
-      out_ << "==";
+      out << "==";
       break;
     case ast::BinaryOp::kNotEqual:
-      out_ << "!=";
+      out << "!=";
       break;
     case ast::BinaryOp::kLessThan:
-      out_ << "<";
+      out << "<";
       break;
     case ast::BinaryOp::kGreaterThan:
-      out_ << ">";
+      out << ">";
       break;
     case ast::BinaryOp::kLessThanEqual:
-      out_ << "<=";
+      out << "<=";
       break;
     case ast::BinaryOp::kGreaterThanEqual:
-      out_ << ">=";
+      out << ">=";
       break;
     case ast::BinaryOp::kShiftLeft:
-      out_ << "<<";
+      out << "<<";
       break;
     case ast::BinaryOp::kShiftRight:
       // TODO(dsinclair): MSL is based on C++14, and >> in C++14 has
       // implementation-defined behaviour for negative LHS.  We may have to
       // generate extra code to implement WGSL-specified behaviour for negative
       // LHS.
-      out_ << R"(>>)";
+      out << R"(>>)";
       break;
 
     case ast::BinaryOp::kAdd:
-      out_ << "+";
+      out << "+";
       break;
     case ast::BinaryOp::kSubtract:
-      out_ << "-";
+      out << "-";
       break;
     case ast::BinaryOp::kMultiply:
-      out_ << "*";
+      out << "*";
       break;
     case ast::BinaryOp::kDivide:
-      out_ << "/";
+      out << "/";
       break;
     case ast::BinaryOp::kModulo:
-      out_ << "%";
+      out << "%";
       break;
     case ast::BinaryOp::kNone:
       diagnostics_.add_error(diag::System::Writer,
                              "missing binary operation type");
       return false;
   }
-  out_ << " ";
+  out << " ";
 
-  if (!EmitExpression(expr->rhs())) {
+  if (!EmitExpression(out, expr->rhs())) {
     return false;
   }
 
-  out_ << ")";
+  out << ")";
   return true;
 }
 
 bool GeneratorImpl::EmitBreak(ast::BreakStatement*) {
-  make_indent();
-  out_ << "break;" << std::endl;
+  line() << "break;";
   return true;
 }
 
-bool GeneratorImpl::EmitCall(ast::CallExpression* expr) {
+bool GeneratorImpl::EmitCall(std::ostream& out, ast::CallExpression* expr) {
   auto* ident = expr->func();
   auto* call = program_->Sem().Get(expr);
   if (auto* intrinsic = call->Target()->As<sem::Intrinsic>()) {
-    return EmitIntrinsicCall(expr, intrinsic);
+    return EmitIntrinsicCall(out, expr, intrinsic);
   }
 
   auto* func = program_->AST().Functions().Find(ident->symbol());
@@ -314,81 +316,79 @@
     return false;
   }
 
-  out_ << program_->Symbols().NameFor(ident->symbol()) << "(";
+  out << program_->Symbols().NameFor(ident->symbol()) << "(";
 
   bool first = true;
   auto* func_sem = program_->Sem().Get(func);
   for (const auto& data : func_sem->ReferencedUniformVariables()) {
     auto* var = data.first;
     if (!first) {
-      out_ << ", ";
+      out << ", ";
     }
     first = false;
-    out_ << program_->Symbols().NameFor(var->Declaration()->symbol());
+    out << program_->Symbols().NameFor(var->Declaration()->symbol());
   }
 
   for (const auto& data : func_sem->ReferencedStorageBufferVariables()) {
     auto* var = data.first;
     if (!first) {
-      out_ << ", ";
+      out << ", ";
     }
     first = false;
-    out_ << program_->Symbols().NameFor(var->Declaration()->symbol());
+    out << program_->Symbols().NameFor(var->Declaration()->symbol());
   }
 
   const auto& params = expr->params();
   for (auto* param : params) {
     if (!first) {
-      out_ << ", ";
+      out << ", ";
     }
     first = false;
 
-    if (!EmitExpression(param)) {
+    if (!EmitExpression(out, param)) {
       return false;
     }
   }
 
-  out_ << ")";
+  out << ")";
 
   return true;
 }
 
-bool GeneratorImpl::EmitIntrinsicCall(ast::CallExpression* expr,
+bool GeneratorImpl::EmitIntrinsicCall(std::ostream& out,
+                                      ast::CallExpression* expr,
                                       const sem::Intrinsic* intrinsic) {
   if (intrinsic->IsTexture()) {
-    return EmitTextureCall(expr, intrinsic);
+    return EmitTextureCall(out, expr, intrinsic);
   }
 
   switch (intrinsic->Type()) {
     case sem::IntrinsicType::kPack2x16float:
     case sem::IntrinsicType::kUnpack2x16float: {
-      make_indent();
       if (intrinsic->Type() == sem::IntrinsicType::kPack2x16float) {
-        out_ << "as_type<uint>(half2(";
+        out << "as_type<uint>(half2(";
       } else {
-        out_ << "float2(as_type<half2>(";
+        out << "float2(as_type<half2>(";
       }
-      if (!EmitExpression(expr->params()[0])) {
+      if (!EmitExpression(out, expr->params()[0])) {
         return false;
       }
-      out_ << "))";
+      out << "))";
       return true;
     }
     // TODO(crbug.com/tint/661): Combine sequential barriers to a single
     // instruction.
     case sem::IntrinsicType::kStorageBarrier: {
-      make_indent();
-      out_ << "threadgroup_barrier(mem_flags::mem_device)";
+      out << "threadgroup_barrier(mem_flags::mem_device)";
       return true;
     }
     case sem::IntrinsicType::kWorkgroupBarrier: {
-      make_indent();
-      out_ << "threadgroup_barrier(mem_flags::mem_threadgroup)";
+      out << "threadgroup_barrier(mem_flags::mem_threadgroup)";
       return true;
     }
     case sem::IntrinsicType::kIgnore: {
-      out_ << "(void) ";
-      if (!EmitExpression(expr->params()[0])) {
+      out << "(void) ";
+      if (!EmitExpression(out, expr->params()[0])) {
         return false;
       }
       return true;
@@ -402,27 +402,27 @@
     return false;
   }
 
-  make_indent();
-  out_ << name << "(";
+  out << name << "(";
 
   bool first = true;
   const auto& params = expr->params();
   for (auto* param : params) {
     if (!first) {
-      out_ << ", ";
+      out << ", ";
     }
     first = false;
 
-    if (!EmitExpression(param)) {
+    if (!EmitExpression(out, param)) {
       return false;
     }
   }
 
-  out_ << ")";
+  out << ")";
   return true;
 }
 
-bool GeneratorImpl::EmitTextureCall(ast::CallExpression* expr,
+bool GeneratorImpl::EmitTextureCall(std::ostream& out,
+                                    ast::CallExpression* expr,
                                     const sem::Intrinsic* intrinsic) {
   using Usage = sem::ParameterUsage;
 
@@ -453,13 +453,13 @@
                        ast::IdentifierExpression, ast::MemberAccessorExpression,
                        ast::TypeConstructorExpression>();
     if (paren_lhs) {
-      out_ << "(";
+      out << "(";
     }
-    if (!EmitExpression(texture)) {
+    if (!EmitExpression(out, texture)) {
       return false;
     }
     if (paren_lhs) {
-      out_ << ")";
+      out << ")";
     }
     return true;
   };
@@ -490,55 +490,55 @@
         if (!texture_expr()) {
           return false;
         }
-        out_ << ".get_" << name << "(";
+        out << ".get_" << name << "(";
         if (auto* level = arg(Usage::kLevel)) {
-          if (!EmitExpression(level)) {
+          if (!EmitExpression(out, level)) {
             return false;
           }
         }
-        out_ << ")";
+        out << ")";
         return true;
       };
 
       if (dims.size() == 1) {
-        out_ << "int(";
+        out << "int(";
         get_dim(dims[0]);
-        out_ << ")";
+        out << ")";
       } else {
-        EmitType(TypeOf(expr)->UnwrapRef(), "");
-        out_ << "(";
+        EmitType(out, TypeOf(expr)->UnwrapRef(), "");
+        out << "(";
         for (size_t i = 0; i < dims.size(); i++) {
           if (i > 0) {
-            out_ << ", ";
+            out << ", ";
           }
           get_dim(dims[i]);
         }
-        out_ << ")";
+        out << ")";
       }
       return true;
     }
     case sem::IntrinsicType::kTextureNumLayers: {
-      out_ << "int(";
+      out << "int(";
       if (!texture_expr()) {
         return false;
       }
-      out_ << ".get_array_size())";
+      out << ".get_array_size())";
       return true;
     }
     case sem::IntrinsicType::kTextureNumLevels: {
-      out_ << "int(";
+      out << "int(";
       if (!texture_expr()) {
         return false;
       }
-      out_ << ".get_num_mip_levels())";
+      out << ".get_num_mip_levels())";
       return true;
     }
     case sem::IntrinsicType::kTextureNumSamples: {
-      out_ << "int(";
+      out << "int(";
       if (!texture_expr()) {
         return false;
       }
-      out_ << ".get_num_samples())";
+      out << ".get_num_samples())";
       return true;
     }
     default:
@@ -556,18 +556,18 @@
     case sem::IntrinsicType::kTextureSampleBias:
     case sem::IntrinsicType::kTextureSampleLevel:
     case sem::IntrinsicType::kTextureSampleGrad:
-      out_ << ".sample(";
+      out << ".sample(";
       break;
     case sem::IntrinsicType::kTextureSampleCompare:
     case sem::IntrinsicType::kTextureSampleCompareLevel:
-      out_ << ".sample_compare(";
+      out << ".sample_compare(";
       break;
     case sem::IntrinsicType::kTextureLoad:
-      out_ << ".read(";
+      out << ".read(";
       lod_param_is_named = false;
       break;
     case sem::IntrinsicType::kTextureStore:
-      out_ << ".write(";
+      out << ".write(";
       break;
     default:
       TINT_UNREACHABLE(Writer, diagnostics_)
@@ -578,7 +578,7 @@
   bool first_arg = true;
   auto maybe_write_comma = [&] {
     if (!first_arg) {
-      out_ << ", ";
+      out << ", ";
     }
     first_arg = false;
   };
@@ -598,14 +598,14 @@
         casted = true;
         switch (texture_type->dim()) {
           case ast::TextureDimension::k1d:
-            out_ << "uint(";
+            out << "uint(";
             break;
           case ast::TextureDimension::k2d:
           case ast::TextureDimension::k2dArray:
-            out_ << "uint2(";
+            out << "uint2(";
             break;
           case ast::TextureDimension::k3d:
-            out_ << "uint3(";
+            out << "uint3(";
             break;
           default:
             TINT_ICE(Writer, diagnostics_)
@@ -614,38 +614,38 @@
         }
       }
 
-      if (!EmitExpression(e))
+      if (!EmitExpression(out, e))
         return false;
 
       if (casted) {
-        out_ << ")";
+        out << ")";
       }
     }
   }
 
   if (auto* bias = arg(Usage::kBias)) {
     maybe_write_comma();
-    out_ << "bias(";
-    if (!EmitExpression(bias)) {
+    out << "bias(";
+    if (!EmitExpression(out, bias)) {
       return false;
     }
-    out_ << ")";
+    out << ")";
   }
   if (auto* level = arg(Usage::kLevel)) {
     maybe_write_comma();
     if (lod_param_is_named) {
-      out_ << "level(";
+      out << "level(";
     }
-    if (!EmitExpression(level)) {
+    if (!EmitExpression(out, level)) {
       return false;
     }
     if (lod_param_is_named) {
-      out_ << ")";
+      out << ")";
     }
   }
   if (intrinsic->Type() == sem::IntrinsicType::kTextureSampleCompareLevel) {
     maybe_write_comma();
-    out_ << "level(0)";
+    out << "level(0)";
   }
   if (auto* ddx = arg(Usage::kDdx)) {
     auto dim = texture_type->dim();
@@ -653,16 +653,16 @@
       case ast::TextureDimension::k2d:
       case ast::TextureDimension::k2dArray:
         maybe_write_comma();
-        out_ << "gradient2d(";
+        out << "gradient2d(";
         break;
       case ast::TextureDimension::k3d:
         maybe_write_comma();
-        out_ << "gradient3d(";
+        out << "gradient3d(";
         break;
       case ast::TextureDimension::kCube:
       case ast::TextureDimension::kCubeArray:
         maybe_write_comma();
-        out_ << "gradientcube(";
+        out << "gradientcube(";
         break;
       default: {
         std::stringstream err;
@@ -671,24 +671,24 @@
         return false;
       }
     }
-    if (!EmitExpression(ddx)) {
+    if (!EmitExpression(out, ddx)) {
       return false;
     }
-    out_ << ", ";
-    if (!EmitExpression(arg(Usage::kDdy))) {
+    out << ", ";
+    if (!EmitExpression(out, arg(Usage::kDdy))) {
       return false;
     }
-    out_ << ")";
+    out << ")";
   }
 
   if (auto* offset = arg(Usage::kOffset)) {
     maybe_write_comma();
-    if (!EmitExpression(offset)) {
+    if (!EmitExpression(out, offset)) {
       return false;
     }
   }
 
-  out_ << ")";
+  out << ")";
 
   return true;
 }
@@ -836,91 +836,85 @@
 }
 
 bool GeneratorImpl::EmitCase(ast::CaseStatement* stmt) {
-  make_indent();
-
   if (stmt->IsDefault()) {
-    out_ << "default:";
+    line() << "default: {";
   } else {
-    bool first = true;
     for (auto* selector : stmt->selectors()) {
-      if (!first) {
-        out_ << std::endl;
-        make_indent();
-      }
-      first = false;
-
-      out_ << "case ";
-      if (!EmitLiteral(selector)) {
+      auto out = line();
+      out << "case ";
+      if (!EmitLiteral(out, selector)) {
         return false;
       }
-      out_ << ":";
+      out << ":";
+      if (selector == stmt->selectors().back()) {
+        out << " {";
+      }
     }
   }
 
-  out_ << " {" << std::endl;
+  {
+    ScopedIndent si(this);
 
-  increment_indent();
+    for (auto* s : *stmt->body()) {
+      if (!EmitStatement(s)) {
+        return false;
+      }
+    }
 
-  for (auto* s : *stmt->body()) {
-    if (!EmitStatement(s)) {
-      return false;
+    if (!last_is_break_or_fallthrough(stmt->body())) {
+      line() << "break;";
     }
   }
 
-  if (!last_is_break_or_fallthrough(stmt->body())) {
-    make_indent();
-    out_ << "break;" << std::endl;
-  }
-
-  decrement_indent();
-  make_indent();
-  out_ << "}" << std::endl;
+  line() << "}";
 
   return true;
 }
 
-bool GeneratorImpl::EmitConstructor(ast::ConstructorExpression* expr) {
+bool GeneratorImpl::EmitConstructor(std::ostream& out,
+                                    ast::ConstructorExpression* expr) {
   if (auto* scalar = expr->As<ast::ScalarConstructorExpression>()) {
-    return EmitScalarConstructor(scalar);
+    return EmitScalarConstructor(out, scalar);
   }
-  return EmitTypeConstructor(expr->As<ast::TypeConstructorExpression>());
+  return EmitTypeConstructor(out, expr->As<ast::TypeConstructorExpression>());
 }
 
 bool GeneratorImpl::EmitContinue(ast::ContinueStatement*) {
   if (!emit_continuing_()) {
     return false;
   }
-  make_indent();
-  out_ << "continue;" << std::endl;
+
+  line() << "continue;";
   return true;
 }
 
-bool GeneratorImpl::EmitTypeConstructor(ast::TypeConstructorExpression* expr) {
+bool GeneratorImpl::EmitTypeConstructor(std::ostream& out,
+                                        ast::TypeConstructorExpression* expr) {
   auto* type = TypeOf(expr)->UnwrapRef();
 
   if (type->IsAnyOf<sem::Array, sem::Struct>()) {
-    out_ << "{";
+    out << "{";
   } else {
-    if (!EmitType(type, "")) {
+    if (!EmitType(out, type, "")) {
       return false;
     }
-    out_ << "(";
+    out << "(";
   }
 
   int i = 0;
   for (auto* e : expr->values()) {
     if (i > 0) {
-      out_ << ", ";
+      out << ", ";
     }
 
     if (auto* struct_ty = type->As<sem::Struct>()) {
       // Emit field designators for structures to account for padding members.
       auto* member = struct_ty->Members()[i]->Declaration();
       auto name = program_->Symbols().NameFor(member->symbol());
-      out_ << "." << name << "=";
+      out << "." << name << "=";
     }
 
-    if (!EmitExpression(e)) {
+    if (!EmitExpression(out, e)) {
       return false;
     }
 
@@ -928,41 +922,41 @@
   }
 
   if (type->IsAnyOf<sem::Array, sem::Struct>()) {
-    out_ << "}";
+    out << "}";
   } else {
-    out_ << ")";
+    out << ")";
   }
   return true;
 }
 
-bool GeneratorImpl::EmitZeroValue(const sem::Type* type) {
+bool GeneratorImpl::EmitZeroValue(std::ostream& out, const sem::Type* type) {
   if (type->Is<sem::Bool>()) {
-    out_ << "false";
+    out << "false";
   } else if (type->Is<sem::F32>()) {
-    out_ << "0.0f";
+    out << "0.0f";
   } else if (type->Is<sem::I32>()) {
-    out_ << "0";
+    out << "0";
   } else if (type->Is<sem::U32>()) {
-    out_ << "0u";
+    out << "0u";
   } else if (auto* vec = type->As<sem::Vector>()) {
-    return EmitZeroValue(vec->type());
+    return EmitZeroValue(out, vec->type());
   } else if (auto* mat = type->As<sem::Matrix>()) {
-    if (!EmitType(mat, "")) {
+    if (!EmitType(out, mat, "")) {
       return false;
     }
-    out_ << "(";
-    if (!EmitZeroValue(mat->type())) {
+    out << "(";
+    if (!EmitZeroValue(out, mat->type())) {
       return false;
     }
-    out_ << ")";
+    out << ")";
   } else if (auto* arr = type->As<sem::Array>()) {
-    out_ << "{";
-    if (!EmitZeroValue(arr->ElemType())) {
+    out << "{";
+    if (!EmitZeroValue(out, arr->ElemType())) {
       return false;
     }
-    out_ << "}";
+    out << "}";
   } else if (type->As<sem::Struct>()) {
-    out_ << "{}";
+    out << "{}";
   } else {
     diagnostics_.add_error(
         diag::System::Writer,
@@ -973,19 +967,20 @@
 }
 
 bool GeneratorImpl::EmitScalarConstructor(
+    std::ostream& out,
     ast::ScalarConstructorExpression* expr) {
-  return EmitLiteral(expr->literal());
+  return EmitLiteral(out, expr->literal());
 }
 
-bool GeneratorImpl::EmitLiteral(ast::Literal* lit) {
+bool GeneratorImpl::EmitLiteral(std::ostream& out, ast::Literal* lit) {
   if (auto* l = lit->As<ast::BoolLiteral>()) {
-    out_ << (l->IsTrue() ? "true" : "false");
+    out << (l->IsTrue() ? "true" : "false");
   } else if (auto* fl = lit->As<ast::FloatLiteral>()) {
-    out_ << FloatToString(fl->value()) << "f";
+    out << FloatToString(fl->value()) << "f";
   } else if (auto* sl = lit->As<ast::SintLiteral>()) {
-    out_ << sl->value();
+    out << sl->value();
   } else if (auto* ul = lit->As<ast::UintLiteral>()) {
-    out_ << ul->value() << "u";
+    out << ul->value() << "u";
   } else {
     diagnostics_.add_error(diag::System::Writer, "unknown literal type");
     return false;
@@ -993,30 +988,30 @@
   return true;
 }
 
-bool GeneratorImpl::EmitExpression(ast::Expression* expr) {
+bool GeneratorImpl::EmitExpression(std::ostream& out, ast::Expression* expr) {
   if (auto* a = expr->As<ast::ArrayAccessorExpression>()) {
-    return EmitArrayAccessor(a);
+    return EmitArrayAccessor(out, a);
   }
   if (auto* b = expr->As<ast::BinaryExpression>()) {
-    return EmitBinary(b);
+    return EmitBinary(out, b);
   }
   if (auto* b = expr->As<ast::BitcastExpression>()) {
-    return EmitBitcast(b);
+    return EmitBitcast(out, b);
   }
   if (auto* c = expr->As<ast::CallExpression>()) {
-    return EmitCall(c);
+    return EmitCall(out, c);
   }
   if (auto* c = expr->As<ast::ConstructorExpression>()) {
-    return EmitConstructor(c);
+    return EmitConstructor(out, c);
   }
   if (auto* i = expr->As<ast::IdentifierExpression>()) {
-    return EmitIdentifier(i);
+    return EmitIdentifier(out, i);
   }
   if (auto* m = expr->As<ast::MemberAccessorExpression>()) {
-    return EmitMemberAccessor(m);
+    return EmitMemberAccessor(out, m);
   }
   if (auto* u = expr->As<ast::UnaryOpExpression>()) {
-    return EmitUnaryOp(u);
+    return EmitUnaryOp(out, u);
   }
 
   diagnostics_.add_error(diag::System::Writer,
@@ -1024,16 +1019,16 @@
   return false;
 }
 
-void GeneratorImpl::EmitStage(ast::PipelineStage stage) {
+void GeneratorImpl::EmitStage(std::ostream& out, ast::PipelineStage stage) {
   switch (stage) {
     case ast::PipelineStage::kFragment:
-      out_ << "fragment";
+      out << "fragment";
       break;
     case ast::PipelineStage::kVertex:
-      out_ << "vertex";
+      out << "vertex";
       break;
     case ast::PipelineStage::kCompute:
-      out_ << "kernel";
+      out << "kernel";
       break;
     case ast::PipelineStage::kNone:
       break;
@@ -1042,75 +1037,76 @@
 }
 
 bool GeneratorImpl::EmitFunction(ast::Function* func) {
-  make_indent();
-
   auto* func_sem = program_->Sem().Get(func);
 
-  if (!EmitType(func_sem->ReturnType(), "")) {
-    return false;
-  }
-  out_ << " " << program_->Symbols().NameFor(func->symbol()) << "(";
-
-  bool first = true;
-  for (const auto& data : func_sem->ReferencedUniformVariables()) {
-    auto* var = data.first;
-    if (!first) {
-      out_ << ", ";
-    }
-    first = false;
-
-    out_ << "constant ";
-    // TODO(dsinclair): Can arrays be uniform? If so, fix this ...
-    if (!EmitType(var->Type()->UnwrapRef(), "")) {
+  {
+    auto out = line();
+    if (!EmitType(out, func_sem->ReturnType(), "")) {
       return false;
     }
-    out_ << "& " << program_->Symbols().NameFor(var->Declaration()->symbol());
+    out << " " << program_->Symbols().NameFor(func->symbol()) << "(";
+
+    bool first = true;
+    for (const auto& data : func_sem->ReferencedUniformVariables()) {
+      auto* var = data.first;
+      if (!first) {
+        out << ", ";
+      }
+      first = false;
+
+      out << "constant ";
+      // TODO(dsinclair): Can arrays be uniform? If so, fix this ...
+      if (!EmitType(out, var->Type()->UnwrapRef(), "")) {
+        return false;
+      }
+      out << "& " << program_->Symbols().NameFor(var->Declaration()->symbol());
+    }
+
+    for (const auto& data : func_sem->ReferencedStorageBufferVariables()) {
+      auto* var = data.first;
+      if (!first) {
+        out << ", ";
+      }
+      first = false;
+
+      if (var->Access() == ast::Access::kRead) {
+        out << "const ";
+      }
+
+      out << "device ";
+      if (!EmitType(out, var->Type()->UnwrapRef(), "")) {
+        return false;
+      }
+      out << "& " << program_->Symbols().NameFor(var->Declaration()->symbol());
+    }
+
+    for (auto* v : func->params()) {
+      if (!first) {
+        out << ", ";
+      }
+      first = false;
+
+      auto* type = program_->Sem().Get(v)->Type();
+
+      std::string param_name =
+          "const " + program_->Symbols().NameFor(v->symbol());
+      if (!EmitType(out, type, param_name)) {
+        return false;
+      }
+      // Parameter name is output as part of the type for arrays and pointers.
+      if (!type->Is<sem::Array>() && !type->Is<sem::Pointer>()) {
+        out << " " << program_->Symbols().NameFor(v->symbol());
+      }
+    }
+
+    out << ") {";
   }
 
-  for (const auto& data : func_sem->ReferencedStorageBufferVariables()) {
-    auto* var = data.first;
-    if (!first) {
-      out_ << ", ";
-    }
-    first = false;
-
-    if (var->Access() == ast::Access::kRead) {
-      out_ << "const ";
-    }
-
-    out_ << "device ";
-    if (!EmitType(var->Type()->UnwrapRef(), "")) {
-      return false;
-    }
-    out_ << "& " << program_->Symbols().NameFor(var->Declaration()->symbol());
-  }
-
-  for (auto* v : func->params()) {
-    if (!first) {
-      out_ << ", ";
-    }
-    first = false;
-
-    auto* type = program_->Sem().Get(v)->Type();
-
-    std::string param_name =
-        "const " + program_->Symbols().NameFor(v->symbol());
-    if (!EmitType(type, param_name)) {
-      return false;
-    }
-    // Parameter name is output as part of the type for arrays and pointers.
-    if (!type->Is<sem::Array>() && !type->Is<sem::Pointer>()) {
-      out_ << " " << program_->Symbols().NameFor(v->symbol());
-    }
-  }
-
-  out_ << ") ";
-
-  if (!EmitBlockAndNewline(func->body())) {
+  if (!EmitStatementsWithIndent(func->body()->statements())) {
     return false;
   }
 
-  out_ << std::endl;
+  line() << "}";
 
   return true;
 }
@@ -1148,249 +1144,258 @@
 bool GeneratorImpl::EmitEntryPointFunction(ast::Function* func) {
   auto* func_sem = program_->Sem().Get(func);
 
-  make_indent();
+  {
+    auto out = line();
 
-  EmitStage(func->pipeline_stage());
-  out_ << " " << func->return_type()->FriendlyName(program_->Symbols());
-  out_ << " " << program_->Symbols().NameFor(func->symbol()) << "(";
+    EmitStage(out, func->pipeline_stage());
+    out << " " << func->return_type()->FriendlyName(program_->Symbols());
+    out << " " << program_->Symbols().NameFor(func->symbol()) << "(";
 
-  // Emit entry point parameters.
-  bool first = true;
-  for (auto* var : func->params()) {
-    if (!first) {
-      out_ << ", ";
-    }
-    first = false;
+    // Emit entry point parameters.
+    bool first = true;
+    for (auto* var : func->params()) {
+      if (!first) {
+        out << ", ";
+      }
+      first = false;
 
-    auto* type = program_->Sem().Get(var)->Type()->UnwrapRef();
+      auto* type = program_->Sem().Get(var)->Type()->UnwrapRef();
 
-    if (!EmitType(type, "")) {
-      return false;
-    }
-
-    out_ << " " << program_->Symbols().NameFor(var->symbol());
-
-    if (type->Is<sem::Struct>()) {
-      out_ << " [[stage_in]]";
-    } else if (var->type()->is_handle()) {
-      auto* binding =
-          ast::GetDecoration<ast::BindingDecoration>(var->decorations());
-      if (binding == nullptr) {
-        TINT_ICE(Writer, diagnostics_)
-            << "missing binding attribute for entry point parameter";
+      if (!EmitType(out, type, "")) {
         return false;
       }
-      if (var->type()->Is<ast::Sampler>()) {
-        out_ << " [[sampler(" << binding->value() << ")]]";
-      } else if (var->type()->Is<ast::Texture>()) {
-        out_ << " [[texture(" << binding->value() << ")]]";
-      } else {
-        TINT_ICE(Writer, diagnostics_)
-            << "invalid handle type entry point parameter";
-        return false;
-      }
-    } else {
-      auto& decos = var->decorations();
-      bool builtin_found = false;
-      for (auto* deco : decos) {
-        auto* builtin = deco->As<ast::BuiltinDecoration>();
-        if (!builtin) {
-          continue;
-        }
 
-        builtin_found = true;
+      out << " " << program_->Symbols().NameFor(var->symbol());
 
-        auto attr = builtin_to_attribute(builtin->value());
-        if (attr.empty()) {
-          diagnostics_.add_error(diag::System::Writer, "unknown builtin");
+      if (type->Is<sem::Struct>()) {
+        out << " [[stage_in]]";
+      } else if (var->type()->is_handle()) {
+        auto* binding =
+            ast::GetDecoration<ast::BindingDecoration>(var->decorations());
+        if (binding == nullptr) {
+          TINT_ICE(Writer, diagnostics_)
+              << "missing binding attribute for entry point parameter";
           return false;
         }
-        out_ << " [[" << attr << "]]";
+        if (var->type()->Is<ast::Sampler>()) {
+          out << " [[sampler(" << binding->value() << ")]]";
+        } else if (var->type()->Is<ast::Texture>()) {
+          out << " [[texture(" << binding->value() << ")]]";
+        } else {
+          TINT_ICE(Writer, diagnostics_)
+              << "invalid handle type entry point parameter";
+          return false;
+        }
+      } else {
+        auto& decos = var->decorations();
+        bool builtin_found = false;
+        for (auto* deco : decos) {
+          auto* builtin = deco->As<ast::BuiltinDecoration>();
+          if (!builtin) {
+            continue;
+          }
+
+          builtin_found = true;
+
+          auto attr = builtin_to_attribute(builtin->value());
+          if (attr.empty()) {
+            diagnostics_.add_error(diag::System::Writer, "unknown builtin");
+            return false;
+          }
+          out << " [[" << attr << "]]";
+        }
+        if (!builtin_found) {
+          TINT_ICE(Writer, diagnostics_) << "Unsupported entry point parameter";
+        }
       }
-      if (!builtin_found) {
-        TINT_ICE(Writer, diagnostics_) << "Unsupported entry point parameter";
+    }
+
+    for (auto data : func_sem->ReferencedUniformVariables()) {
+      if (!first) {
+        out << ", ";
+      }
+      first = false;
+
+      auto* var = data.first;
+      // TODO(dsinclair): We're using the binding to make up the buffer number
+      // but we should instead be using a provided mapping that uses both buffer
+      // and set. https://bugs.chromium.org/p/tint/issues/detail?id=104
+      auto* binding = data.second.binding;
+      if (binding == nullptr) {
+        diagnostics_.add_error(
+            diag::System::Writer,
+            "unable to find binding information for uniform: " +
+                program_->Symbols().NameFor(var->Declaration()->symbol()));
+        return false;
+      }
+      // auto* set = data.second.set;
+
+      out << "constant ";
+      // TODO(dsinclair): Can you have a uniform array? If so, this needs to be
+      // updated to handle arrays property.
+      if (!EmitType(out, var->Type()->UnwrapRef(), "")) {
+        return false;
+      }
+      out << "& " << program_->Symbols().NameFor(var->Declaration()->symbol())
+          << " [[buffer(" << binding->value() << ")]]";
+    }
+
+    for (auto data : func_sem->ReferencedStorageBufferVariables()) {
+      if (!first) {
+        out << ", ";
+      }
+      first = false;
+
+      auto* var = data.first;
+      // TODO(dsinclair): We're using the binding to make up the buffer number
+      // but we should instead be using a provided mapping that uses both buffer
+      // and set. https://bugs.chromium.org/p/tint/issues/detail?id=104
+      auto* binding = data.second.binding;
+      // auto* set = data.second.set;
+
+      if (var->Access() == ast::Access::kRead) {
+        out << "const ";
+      }
+
+      out << "device ";
+      if (!EmitType(out, var->Type()->UnwrapRef(), "")) {
+        return false;
+      }
+      out << "& " << program_->Symbols().NameFor(var->Declaration()->symbol())
+          << " [[buffer(" << binding->value() << ")]]";
+    }
+
+    out << ") {";
+  }
+
+  {
+    ScopedIndent si(this);
+
+    if (!EmitStatements(func->body()->statements())) {
+      return false;
+    }
+
+    if (!Is<ast::ReturnStatement>(func->get_last_statement())) {
+      ast::ReturnStatement ret(ProgramID{}, Source{});
+      if (!EmitStatement(&ret)) {
+        return false;
       }
     }
   }
 
-  for (auto data : func_sem->ReferencedUniformVariables()) {
-    if (!first) {
-      out_ << ", ";
-    }
-    first = false;
-
-    auto* var = data.first;
-    // TODO(dsinclair): We're using the binding to make up the buffer number but
-    // we should instead be using a provided mapping that uses both buffer and
-    // set. https://bugs.chromium.org/p/tint/issues/detail?id=104
-    auto* binding = data.second.binding;
-    if (binding == nullptr) {
-      diagnostics_.add_error(
-          diag::System::Writer,
-          "unable to find binding information for uniform: " +
-              program_->Symbols().NameFor(var->Declaration()->symbol()));
-      return false;
-    }
-    // auto* set = data.second.set;
-
-    out_ << "constant ";
-    // TODO(dsinclair): Can you have a uniform array? If so, this needs to be
-    // updated to handle arrays property.
-    if (!EmitType(var->Type()->UnwrapRef(), "")) {
-      return false;
-    }
-    out_ << "& " << program_->Symbols().NameFor(var->Declaration()->symbol())
-         << " [[buffer(" << binding->value() << ")]]";
-  }
-
-  for (auto data : func_sem->ReferencedStorageBufferVariables()) {
-    if (!first) {
-      out_ << ", ";
-    }
-    first = false;
-
-    auto* var = data.first;
-    // TODO(dsinclair): We're using the binding to make up the buffer number but
-    // we should instead be using a provided mapping that uses both buffer and
-    // set. https://bugs.chromium.org/p/tint/issues/detail?id=104
-    auto* binding = data.second.binding;
-    // auto* set = data.second.set;
-
-    if (var->Access() == ast::Access::kRead) {
-      out_ << "const ";
-    }
-
-    out_ << "device ";
-    if (!EmitType(var->Type()->UnwrapRef(), "")) {
-      return false;
-    }
-    out_ << "& " << program_->Symbols().NameFor(var->Declaration()->symbol())
-         << " [[buffer(" << binding->value() << ")]]";
-  }
-
-  out_ << ") {" << std::endl;
-
-  increment_indent();
-
-  for (auto* s : *func->body()) {
-    if (!EmitStatement(s)) {
-      return false;
-    }
-  }
-  auto* last_statement = func->get_last_statement();
-  if (last_statement == nullptr ||
-      !last_statement->Is<ast::ReturnStatement>()) {
-    ast::ReturnStatement ret(ProgramID{}, Source{});
-    if (!EmitStatement(&ret)) {
-      return false;
-    }
-  }
-
-  decrement_indent();
-  make_indent();
-  out_ << "}" << std::endl << std::endl;
+  line() << "}";
   return true;
 }
 
-bool GeneratorImpl::EmitIdentifier(ast::IdentifierExpression* expr) {
-  out_ << program_->Symbols().NameFor(expr->symbol());
+bool GeneratorImpl::EmitIdentifier(std::ostream& out,
+                                   ast::IdentifierExpression* expr) {
+  out << program_->Symbols().NameFor(expr->symbol());
   return true;
 }
 
 bool GeneratorImpl::EmitLoop(ast::LoopStatement* stmt) {
-  make_indent();
-
   auto emit_continuing = [this, stmt]() {
     if (stmt->has_continuing()) {
-      make_indent();
       if (!EmitBlock(stmt->continuing())) {
         return false;
       }
-      out_ << std::endl;
     }
     return true;
   };
 
   TINT_SCOPED_ASSIGNMENT(emit_continuing_, emit_continuing);
-  bool ok = EmitBlockBraces("while (true)", [&] {
-    for (auto* s : stmt->body()->statements()) {
-      if (!EmitStatement(s)) {
-        return false;
-      }
+  line() << "while (true) {";
+  {
+    ScopedIndent si(this);
+    if (!EmitStatements(stmt->body()->statements())) {
+      return false;
     }
-    return emit_continuing();
-  });
-  out_ << std::endl;
-  return ok;
-}
+    if (!emit_continuing()) {
+      return false;
+    }
+  }
+  line() << "}";
 
-bool GeneratorImpl::EmitDiscard(ast::DiscardStatement*) {
-  make_indent();
-  // TODO(dsinclair): Verify this is correct when the discard semantics are
-  // defined for WGSL (https://github.com/gpuweb/gpuweb/issues/361)
-  out_ << "discard_fragment();" << std::endl;
   return true;
 }
 
-bool GeneratorImpl::EmitElse(ast::ElseStatement* stmt) {
-  if (stmt->HasCondition()) {
-    out_ << " else if (";
-    if (!EmitExpression(stmt->condition())) {
-      return false;
-    }
-    out_ << ") ";
-  } else {
-    out_ << " else ";
-  }
-
-  return EmitBlock(stmt->body());
+bool GeneratorImpl::EmitDiscard(ast::DiscardStatement*) {
+  // TODO(dsinclair): Verify this is correct when the discard semantics are
+  // defined for WGSL (https://github.com/gpuweb/gpuweb/issues/361)
+  line() << "discard_fragment();";
+  return true;
 }
 
 bool GeneratorImpl::EmitIf(ast::IfStatement* stmt) {
-  make_indent();
-
-  out_ << "if (";
-  if (!EmitExpression(stmt->condition())) {
-    return false;
+  {
+    auto out = line();
+    out << "if (";
+    if (!EmitExpression(out, stmt->condition())) {
+      return false;
+    }
+    out << ") {";
   }
-  out_ << ") ";
 
-  if (!EmitBlock(stmt->body())) {
+  if (!EmitStatementsWithIndent(stmt->body()->statements())) {
     return false;
   }
 
   for (auto* e : stmt->else_statements()) {
-    if (!EmitElse(e)) {
+    if (e->HasCondition()) {
+      line() << "} else {";
+      increment_indent();
+
+      {
+        auto out = line();
+        out << "if (";
+        if (!EmitExpression(out, e->condition())) {
+          return false;
+        }
+        out << ") {";
+      }
+    } else {
+      line() << "} else {";
+    }
+
+    if (!EmitStatementsWithIndent(e->body()->statements())) {
       return false;
     }
   }
-  out_ << std::endl;
 
+  line() << "}";
+
+  for (auto* e : stmt->else_statements()) {
+    if (e->HasCondition()) {
+      decrement_indent();
+      line() << "}";
+    }
+  }
   return true;
 }
 
-bool GeneratorImpl::EmitMemberAccessor(ast::MemberAccessorExpression* expr) {
+bool GeneratorImpl::EmitMemberAccessor(std::ostream& out,
+                                       ast::MemberAccessorExpression* expr) {
   bool paren_lhs =
       !expr->structure()
            ->IsAnyOf<ast::ArrayAccessorExpression, ast::CallExpression,
                      ast::IdentifierExpression, ast::MemberAccessorExpression,
                      ast::TypeConstructorExpression>();
   if (paren_lhs) {
-    out_ << "(";
+    out << "(";
   }
-  if (!EmitExpression(expr->structure())) {
+  if (!EmitExpression(out, expr->structure())) {
     return false;
   }
   if (paren_lhs) {
-    out_ << ")";
+    out << ")";
   }
 
-  out_ << ".";
+  out << ".";
 
   // Swizzles get written out directly
   if (program_->Sem().Get(expr)->Is<sem::Swizzle>()) {
-    out_ << program_->Symbols().NameFor(expr->member()->symbol());
-  } else if (!EmitExpression(expr->member())) {
+    out << program_->Symbols().NameFor(expr->member()->symbol());
+  } else if (!EmitExpression(out, expr->member())) {
     return false;
   }
 
@@ -1398,69 +1403,46 @@
 }
 
 bool GeneratorImpl::EmitReturn(ast::ReturnStatement* stmt) {
-  make_indent();
-
-  out_ << "return";
+  auto out = line();
+  out << "return";
   if (stmt->has_value()) {
-    out_ << " ";
-    if (!EmitExpression(stmt->value())) {
+    out << " ";
+    if (!EmitExpression(out, stmt->value())) {
       return false;
     }
   }
-  out_ << ";" << std::endl;
+  out << ";";
   return true;
 }
 
 bool GeneratorImpl::EmitBlock(const ast::BlockStatement* stmt) {
-  out_ << "{" << std::endl;
-  increment_indent();
+  line() << "{";
 
-  for (auto* s : *stmt) {
-    if (!EmitStatement(s)) {
-      return false;
-    }
+  if (!EmitStatementsWithIndent(stmt->statements())) {
+    return false;
   }
 
-  decrement_indent();
-  make_indent();
-  out_ << "}";
+  line() << "}";
 
   return true;
 }
 
-bool GeneratorImpl::EmitBlockAndNewline(const ast::BlockStatement* stmt) {
-  const bool result = EmitBlock(stmt);
-  if (result) {
-    out_ << std::endl;
-  }
-  return result;
-}
-
-bool GeneratorImpl::EmitIndentedBlockAndNewline(ast::BlockStatement* stmt) {
-  make_indent();
-  const bool result = EmitBlock(stmt);
-  if (result) {
-    out_ << std::endl;
-  }
-  return result;
-}
-
 bool GeneratorImpl::EmitStatement(ast::Statement* stmt) {
   if (auto* a = stmt->As<ast::AssignmentStatement>()) {
     return EmitAssign(a);
   }
   if (auto* b = stmt->As<ast::BlockStatement>()) {
-    return EmitIndentedBlockAndNewline(b);
+    return EmitBlock(b);
   }
   if (auto* b = stmt->As<ast::BreakStatement>()) {
     return EmitBreak(b);
   }
   if (auto* c = stmt->As<ast::CallStatement>()) {
-    make_indent();
-    if (!EmitCall(c->expr())) {
+    auto out = line();
+    if (!EmitCall(out, c->expr())) {
       return false;
     }
-    out_ << ";" << std::endl;
+    out << ";";
     return true;
   }
   if (auto* c = stmt->As<ast::ContinueStatement>()) {
@@ -1470,8 +1452,7 @@
     return EmitDiscard(d);
   }
   if (stmt->As<ast::FallthroughStatement>()) {
-    make_indent();
-    out_ << "/* fallthrough */" << std::endl;
+    line() << "/* fallthrough */";
     return true;
   }
   if (auto* i = stmt->As<ast::IfStatement>()) {
@@ -1496,31 +1477,47 @@
   return false;
 }
 
-bool GeneratorImpl::EmitSwitch(ast::SwitchStatement* stmt) {
-  make_indent();
-
-  out_ << "switch(";
-  if (!EmitExpression(stmt->condition())) {
-    return false;
-  }
-  out_ << ") {" << std::endl;
-
-  increment_indent();
-
-  for (auto* s : stmt->body()) {
-    if (!EmitCase(s)) {
+bool GeneratorImpl::EmitStatements(const ast::StatementList& stmts) {
+  for (auto* s : stmts) {
+    if (!EmitStatement(s)) {
       return false;
     }
   }
+  return true;
+}
 
-  decrement_indent();
-  make_indent();
-  out_ << "}" << std::endl;
+bool GeneratorImpl::EmitStatementsWithIndent(const ast::StatementList& stmts) {
+  ScopedIndent si(this);
+  return EmitStatements(stmts);
+}
+
+bool GeneratorImpl::EmitSwitch(ast::SwitchStatement* stmt) {
+  {
+    auto out = line();
+    out << "switch(";
+    if (!EmitExpression(out, stmt->condition())) {
+      return false;
+    }
+    out << ") {";
+  }
+
+  {
+    ScopedIndent si(this);
+    for (auto* s : stmt->body()) {
+      if (!EmitCase(s)) {
+        return false;
+      }
+    }
+  }
+
+  line() << "}";
 
   return true;
 }
 
-bool GeneratorImpl::EmitType(const sem::Type* type, const std::string& name) {
+bool GeneratorImpl::EmitType(std::ostream& out,
+                             const sem::Type* type,
+                             const std::string& name) {
   if (auto* ary = type->As<sem::Array>()) {
     const sem::Type* base_type = ary;
     std::vector<uint32_t> sizes;
@@ -1532,87 +1529,87 @@
       }
       base_type = arr->ElemType();
     }
-    if (!EmitType(base_type, "")) {
+    if (!EmitType(out, base_type, "")) {
       return false;
     }
     if (!name.empty()) {
-      out_ << " " << name;
+      out << " " << name;
     }
     for (uint32_t size : sizes) {
-      out_ << "[" << size << "]";
+      out << "[" << size << "]";
     }
   } else if (type->Is<sem::Bool>()) {
-    out_ << "bool";
+    out << "bool";
   } else if (type->Is<sem::F32>()) {
-    out_ << "float";
+    out << "float";
   } else if (type->Is<sem::I32>()) {
-    out_ << "int";
+    out << "int";
   } else if (auto* mat = type->As<sem::Matrix>()) {
-    if (!EmitType(mat->type(), "")) {
+    if (!EmitType(out, mat->type(), "")) {
       return false;
     }
-    out_ << mat->columns() << "x" << mat->rows();
+    out << mat->columns() << "x" << mat->rows();
   } else if (auto* ptr = type->As<sem::Pointer>()) {
     switch (ptr->StorageClass()) {
       case ast::StorageClass::kFunction:
       case ast::StorageClass::kPrivate:
       case ast::StorageClass::kUniformConstant:
-        out_ << "thread ";
+        out << "thread ";
         break;
       case ast::StorageClass::kWorkgroup:
-        out_ << "threadgroup ";
+        out << "threadgroup ";
         break;
       case ast::StorageClass::kStorage:
-        out_ << "device ";
+        out << "device ";
         break;
       case ast::StorageClass::kUniform:
-        out_ << "constant ";
+        out << "constant ";
         break;
       default:
         TINT_ICE(Writer, diagnostics_) << "unhandled storage class for pointer";
     }
     if (ptr->StoreType()->Is<sem::Array>()) {
       std::string inner = "(*" + name + ")";
-      if (!EmitType(ptr->StoreType(), inner)) {
+      if (!EmitType(out, ptr->StoreType(), inner)) {
         return false;
       }
     } else {
-      if (!EmitType(ptr->StoreType(), "")) {
+      if (!EmitType(out, ptr->StoreType(), "")) {
         return false;
       }
-      out_ << "* " << name;
+      out << "* " << name;
     }
   } else if (type->Is<sem::Sampler>()) {
-    out_ << "sampler";
+    out << "sampler";
   } else if (auto* str = type->As<sem::Struct>()) {
     // The struct type emits as just the name. The declaration would be emitted
     // as part of emitting the declared types.
-    out_ << program_->Symbols().NameFor(str->Declaration()->name());
+    out << program_->Symbols().NameFor(str->Declaration()->name());
   } else if (auto* tex = type->As<sem::Texture>()) {
     if (tex->Is<sem::DepthTexture>()) {
-      out_ << "depth";
+      out << "depth";
     } else {
-      out_ << "texture";
+      out << "texture";
     }
 
     switch (tex->dim()) {
       case ast::TextureDimension::k1d:
-        out_ << "1d";
+        out << "1d";
         break;
       case ast::TextureDimension::k2d:
-        out_ << "2d";
+        out << "2d";
         break;
       case ast::TextureDimension::k2dArray:
-        out_ << "2d_array";
+        out << "2d_array";
         break;
       case ast::TextureDimension::k3d:
-        out_ << "3d";
+        out << "3d";
         break;
       case ast::TextureDimension::kCube:
-        out_ << "cube";
+        out << "cube";
         break;
       case ast::TextureDimension::kCubeArray:
-        out_ << "cube_array";
+        out << "cube_array";
         break;
       default:
         diagnostics_.add_error(diag::System::Writer,
@@ -1620,51 +1617,51 @@
         return false;
     }
     if (tex->Is<sem::MultisampledTexture>()) {
-      out_ << "_ms";
+      out << "_ms";
     }
-    out_ << "<";
+    out << "<";
     if (tex->Is<sem::DepthTexture>()) {
-      out_ << "float, access::sample";
+      out << "float, access::sample";
     } else if (auto* storage = tex->As<sem::StorageTexture>()) {
-      if (!EmitType(storage->type(), "")) {
+      if (!EmitType(out, storage->type(), "")) {
         return false;
       }
 
       std::string access_str;
       if (storage->access() == ast::Access::kRead) {
-        out_ << ", access::read";
+        out << ", access::read";
       } else if (storage->access() == ast::Access::kWrite) {
-        out_ << ", access::write";
+        out << ", access::write";
       } else {
         diagnostics_.add_error(diag::System::Writer,
                                "Invalid access control for storage texture");
         return false;
       }
     } else if (auto* ms = tex->As<sem::MultisampledTexture>()) {
-      if (!EmitType(ms->type(), "")) {
+      if (!EmitType(out, ms->type(), "")) {
         return false;
       }
-      out_ << ", access::read";
+      out << ", access::read";
     } else if (auto* sampled = tex->As<sem::SampledTexture>()) {
-      if (!EmitType(sampled->type(), "")) {
+      if (!EmitType(out, sampled->type(), "")) {
         return false;
       }
-      out_ << ", access::sample";
+      out << ", access::sample";
     } else {
       diagnostics_.add_error(diag::System::Writer, "invalid texture type");
       return false;
     }
-    out_ << ">";
+    out << ">";
 
   } else if (type->Is<sem::U32>()) {
-    out_ << "uint";
+    out << "uint";
   } else if (auto* vec = type->As<sem::Vector>()) {
-    if (!EmitType(vec->type(), "")) {
+    if (!EmitType(out, vec->type(), "")) {
       return false;
     }
-    out_ << vec->size();
+    out << vec->size();
   } else if (type->Is<sem::Void>()) {
-    out_ << "void";
+    out << "void";
   } else {
     diagnostics_.add_error(diag::System::Writer,
                            "unknown type in EmitType: " + type->type_name());
@@ -1674,49 +1671,51 @@
   return true;
 }
 
-bool GeneratorImpl::EmitPackedType(const sem::Type* type,
+bool GeneratorImpl::EmitPackedType(std::ostream& out,
+                                   const sem::Type* type,
                                    const std::string& name) {
   if (auto* vec = type->As<sem::Vector>()) {
-    out_ << "packed_";
-    if (!EmitType(vec->type(), "")) {
+    out << "packed_";
+    if (!EmitType(out, vec->type(), "")) {
       return false;
     }
-    out_ << vec->size();
+    out << vec->size();
     return true;
   }
 
-  return EmitType(type, name);
+  return EmitType(out, type, name);
 }
 
 bool GeneratorImpl::EmitStructType(const sem::Struct* str) {
-  out_ << "struct " << program_->Symbols().NameFor(str->Declaration()->name())
-       << " {" << std::endl;
+  line() << "struct " << program_->Symbols().NameFor(str->Declaration()->name())
+         << " {";
 
   bool is_host_shareable = str->IsHostShareable();
 
   // Emits a `/* 0xnnnn */` byte offset comment for a struct member.
-  auto add_byte_offset_comment = [&](uint32_t offset) {
-    std::ios_base::fmtflags saved_flag_state(out_.flags());
-    out_ << "/* 0x" << std::hex << std::setfill('0') << std::setw(4) << offset
-         << " */ ";
-    out_.flags(saved_flag_state);
+  auto add_byte_offset_comment = [&](std::ostream& out, uint32_t offset) {
+    std::ios_base::fmtflags saved_flag_state(out.flags());
+    out << "/* 0x" << std::hex << std::setfill('0') << std::setw(4) << offset
+        << " */ ";
+    out.flags(saved_flag_state);
   };
 
   uint32_t pad_count = 0;
-  auto add_padding = [&](uint32_t size) {
+  auto add_padding = [&](uint32_t size, uint32_t msl_offset) {
     std::string name;
     do {
       name = "tint_pad_" + std::to_string(pad_count++);
     } while (str->FindMember(program_->Symbols().Get(name)));
 
-    out_ << "int8_t " << name << "[" << size << "];" << std::endl;
+    auto out = line();
+    add_byte_offset_comment(out, msl_offset);
+    out << "int8_t " << name << "[" << size << "];";
   };
 
   increment_indent();
   uint32_t msl_offset = 0;
   for (auto* mem : str->Members()) {
-    make_indent();
-
+    auto out = line();
     auto name = program_->Symbols().NameFor(mem->Declaration()->symbol());
     auto wgsl_offset = mem->Offset();
 
@@ -1731,19 +1730,17 @@
 
       // Generate padding if required
       if (auto padding = wgsl_offset - msl_offset) {
-        add_byte_offset_comment(msl_offset);
-        add_padding(padding);
+        add_padding(padding, msl_offset);
         msl_offset += padding;
-        make_indent();
       }
 
-      add_byte_offset_comment(msl_offset);
+      add_byte_offset_comment(out, msl_offset);
 
-      if (!EmitPackedType(mem->Type(), name)) {
+      if (!EmitPackedType(out, mem->Type(), name)) {
         return false;
       }
     } else {
-      if (!EmitType(mem->Type(), name)) {
+      if (!EmitType(out, mem->Type(), name)) {
         return false;
       }
     }
@@ -1752,7 +1749,7 @@
 
     // Array member name will be output with the type
     if (!ty->Is<sem::Array>()) {
-      out_ << " " << name;
+      out << " " << name;
     }
 
     // Emit decorations
@@ -1763,7 +1760,7 @@
           diagnostics_.add_error(diag::System::Writer, "unknown builtin");
           return false;
         }
-        out_ << " [[" << attr << "]]";
+        out << " [[" << attr << "]]";
       } else if (auto* loc = deco->As<ast::LocationDecoration>()) {
         auto& pipeline_stage_uses = str->PipelineStageUses();
         if (pipeline_stage_uses.size() != 1) {
@@ -1772,16 +1769,16 @@
         }
 
         if (pipeline_stage_uses.count(sem::PipelineStageUsage::kVertexInput)) {
-          out_ << " [[attribute(" + std::to_string(loc->value()) + ")]]";
+          out << " [[attribute(" + std::to_string(loc->value()) + ")]]";
         } else if (pipeline_stage_uses.count(
                        sem::PipelineStageUsage::kVertexOutput)) {
-          out_ << " [[user(locn" + std::to_string(loc->value()) + ")]]";
+          out << " [[user(locn" + std::to_string(loc->value()) + ")]]";
         } else if (pipeline_stage_uses.count(
                        sem::PipelineStageUsage::kFragmentInput)) {
-          out_ << " [[user(locn" + std::to_string(loc->value()) + ")]]";
+          out << " [[user(locn" + std::to_string(loc->value()) + ")]]";
         } else if (pipeline_stage_uses.count(
                        sem::PipelineStageUsage::kFragmentOutput)) {
-          out_ << " [[color(" + std::to_string(loc->value()) + ")]]";
+          out << " [[color(" + std::to_string(loc->value()) + ")]]";
         } else {
           TINT_ICE(Writer, diagnostics_)
               << "invalid use of location decoration";
@@ -1789,7 +1786,7 @@
       }
     }
 
-    out_ << ";" << std::endl;
+    out << ";";
 
     if (is_host_shareable) {
       // Calculate new MSL offset
@@ -1805,50 +1802,46 @@
   }
 
   if (is_host_shareable && str->Size() != msl_offset) {
-    make_indent();
-    add_byte_offset_comment(msl_offset);
-    add_padding(str->Size() - msl_offset);
+    add_padding(str->Size() - msl_offset, msl_offset);
   }
 
   decrement_indent();
-  make_indent();
 
-  out_ << "};" << std::endl;
+  line() << "};";
   return true;
 }
 
-bool GeneratorImpl::EmitUnaryOp(ast::UnaryOpExpression* expr) {
+bool GeneratorImpl::EmitUnaryOp(std::ostream& out,
+                                ast::UnaryOpExpression* expr) {
   switch (expr->op()) {
     case ast::UnaryOp::kAddressOf:
-      out_ << "&";
+      out << "&";
       break;
     case ast::UnaryOp::kComplement:
-      out_ << "~";
+      out << "~";
       break;
     case ast::UnaryOp::kIndirection:
-      out_ << "*";
+      out << "*";
       break;
     case ast::UnaryOp::kNot:
-      out_ << "!";
+      out << "!";
       break;
     case ast::UnaryOp::kNegation:
-      out_ << "-";
+      out << "-";
       break;
   }
-  out_ << "(";
+  out << "(";
 
-  if (!EmitExpression(expr->expr())) {
+  if (!EmitExpression(out, expr->expr())) {
     return false;
   }
 
-  out_ << ")";
+  out << ")";
 
   return true;
 }
 
 bool GeneratorImpl::EmitVariable(const sem::Variable* var) {
-  make_indent();
-
   auto* decl = var->Declaration();
 
   for (auto* deco : decl->decorations()) {
@@ -1858,16 +1851,18 @@
     }
   }
 
+  auto out = line();
+
   switch (var->StorageClass()) {
     case ast::StorageClass::kFunction:
     case ast::StorageClass::kUniformConstant:
     case ast::StorageClass::kNone:
       break;
     case ast::StorageClass::kPrivate:
-      out_ << "thread ";
+      out << "thread ";
       break;
     case ast::StorageClass::kWorkgroup:
-      out_ << "threadgroup ";
+      out << "threadgroup ";
       break;
     default:
       TINT_ICE(Writer, diagnostics_) << "unhandled variable storage class";
@@ -1880,35 +1875,33 @@
   if (decl->is_const()) {
     name = "const " + name;
   }
-  if (!EmitType(type, name)) {
+  if (!EmitType(out, type, name)) {
     return false;
   }
   // Variable name is output as part of the type for arrays and pointers.
   if (!type->Is<sem::Array>() && !type->Is<sem::Pointer>()) {
-    out_ << " " << name;
+    out << " " << name;
   }
 
   if (decl->constructor() != nullptr) {
-    out_ << " = ";
-    if (!EmitExpression(decl->constructor())) {
+    out << " = ";
+    if (!EmitExpression(out, decl->constructor())) {
       return false;
     }
   } else if (var->StorageClass() == ast::StorageClass::kPrivate ||
              var->StorageClass() == ast::StorageClass::kFunction ||
              var->StorageClass() == ast::StorageClass::kNone) {
-    out_ << " = ";
-    if (!EmitZeroValue(type)) {
+    out << " = ";
+    if (!EmitZeroValue(out, type)) {
       return false;
     }
   }
-  out_ << ";" << std::endl;
+  out << ";";
 
   return true;
 }
 
 bool GeneratorImpl::EmitProgramConstVariable(const ast::Variable* var) {
-  make_indent();
-
   for (auto* d : var->decorations()) {
     if (!d->Is<ast::OverrideDecoration>()) {
       diagnostics_.add_error(diag::System::Writer,
@@ -1921,25 +1914,26 @@
     return false;
   }
 
-  out_ << "constant ";
+  auto out = line();
+  out << "constant ";
   auto* type = program_->Sem().Get(var)->Type()->UnwrapRef();
-  if (!EmitType(type, program_->Symbols().NameFor(var->symbol()))) {
+  if (!EmitType(out, type, program_->Symbols().NameFor(var->symbol()))) {
     return false;
   }
   if (!type->Is<sem::Array>()) {
-    out_ << " " << program_->Symbols().NameFor(var->symbol());
+    out << " " << program_->Symbols().NameFor(var->symbol());
   }
 
   auto* sem_var = program_->Sem().Get(var);
   if (sem_var->IsPipelineConstant()) {
-    out_ << " [[function_constant(" << sem_var->ConstantId() << ")]]";
+    out << " [[function_constant(" << sem_var->ConstantId() << ")]]";
   } else if (var->constructor() != nullptr) {
-    out_ << " = ";
-    if (!EmitExpression(var->constructor())) {
+    out << " = ";
+    if (!EmitExpression(out, var->constructor())) {
       return false;
     }
   }
-  out_ << ";" << std::endl;
+  out << ";";
 
   return true;
 }
@@ -2009,21 +2003,6 @@
   return {};
 }
 
-template <typename F>
-bool GeneratorImpl::EmitBlockBraces(const std::string& prefix, F&& cb) {
-  out_ << prefix << (prefix.empty() ? "{" : " {") << std::endl;
-  increment_indent();
-
-  if (!cb()) {
-    return false;
-  }
-
-  decrement_indent();
-  make_indent();
-  out_ << "}";
-  return true;
-}
-
 }  // namespace msl
 }  // namespace writer
 }  // namespace tint
diff --git a/src/writer/msl/generator_impl.h b/src/writer/msl/generator_impl.h
index 7ce7a65..77b6675 100644
--- a/src/writer/msl/generator_impl.h
+++ b/src/writer/msl/generator_impl.h
@@ -64,62 +64,63 @@
   /// @returns true if the declared type was emitted
   bool EmitTypeDecl(const sem::Type* ty);
   /// Handles an array accessor expression
+  /// @param out the output of the expression stream
   /// @param expr the expression to emit
   /// @returns true if the array accessor was emitted
-  bool EmitArrayAccessor(ast::ArrayAccessorExpression* expr);
+  bool EmitArrayAccessor(std::ostream& out, ast::ArrayAccessorExpression* expr);
   /// Handles an assignment statement
   /// @param stmt the statement to emit
   /// @returns true if the statement was emitted successfully
   bool EmitAssign(ast::AssignmentStatement* stmt);
   /// Handles generating a binary expression
+  /// @param out the output of the expression stream
   /// @param expr the binary expression
   /// @returns true if the expression was emitted, false otherwise
-  bool EmitBinary(ast::BinaryExpression* expr);
+  bool EmitBinary(std::ostream& out, ast::BinaryExpression* expr);
   /// Handles generating a bitcast expression
+  /// @param out the output of the expression stream
   /// @param expr the bitcast expression
   /// @returns true if the bitcast was emitted
-  bool EmitBitcast(ast::BitcastExpression* expr);
+  bool EmitBitcast(std::ostream& out, ast::BitcastExpression* expr);
   /// Handles a block statement
   /// @param stmt the statement to emit
   /// @returns true if the statement was emitted successfully
   bool EmitBlock(const ast::BlockStatement* stmt);
-  /// Handles a block statement with a newline at the end
-  /// @param stmt the statement to emit
-  /// @returns true if the statement was emitted successfully
-  bool EmitIndentedBlockAndNewline(ast::BlockStatement* stmt);
-  /// Handles a block statement with a newline at the end
-  /// @param stmt the statement to emit
-  /// @returns true if the statement was emitted successfully
-  bool EmitBlockAndNewline(const ast::BlockStatement* stmt);
   /// Handles a break statement
   /// @param stmt the statement to emit
   /// @returns true if the statement was emitted successfully
   bool EmitBreak(ast::BreakStatement* stmt);
   /// Handles generating a call expression
+  /// @param out the output of the expression stream
   /// @param expr the call expression
   /// @returns true if the call expression is emitted
-  bool EmitCall(ast::CallExpression* expr);
+  bool EmitCall(std::ostream& out, ast::CallExpression* expr);
   /// Handles generating an intrinsic call expression
+  /// @param out the output of the expression stream
   /// @param expr the call expression
   /// @param intrinsic the intrinsic being called
   /// @returns true if the call expression is emitted
-  bool EmitIntrinsicCall(ast::CallExpression* expr,
+  bool EmitIntrinsicCall(std::ostream& out,
+                         ast::CallExpression* expr,
                          const sem::Intrinsic* intrinsic);
   /// Handles generating a call to a texture function (`textureSample`,
   /// `textureSampleGrad`, etc)
+  /// @param out the output of the expression stream
   /// @param expr the call expression
   /// @param intrinsic the semantic information for the texture intrinsic
   /// @returns true if the call expression is emitted
-  bool EmitTextureCall(ast::CallExpression* expr,
+  bool EmitTextureCall(std::ostream& out,
+                       ast::CallExpression* expr,
                        const sem::Intrinsic* intrinsic);
   /// Handles a case statement
   /// @param stmt the statement
   /// @returns true if the statement was emitted successfully
   bool EmitCase(ast::CaseStatement* stmt);
   /// Handles generating constructor expressions
+  /// @param out the output of the expression stream
   /// @param expr the constructor expression
   /// @returns true if the expression was emitted
-  bool EmitConstructor(ast::ConstructorExpression* expr);
+  bool EmitConstructor(std::ostream& out, ast::ConstructorExpression* expr);
   /// Handles a continue statement
   /// @param stmt the statement to emit
   /// @returns true if the statement was emitted successfully
@@ -128,85 +129,106 @@
   /// @param stmt the discard statement
   /// @returns true if the statement was successfully emitted
   bool EmitDiscard(ast::DiscardStatement* stmt);
-  /// Handles generating an else statement
-  /// @param stmt the statement to emit
-  /// @returns true if the statement was emitted
-  bool EmitElse(ast::ElseStatement* stmt);
   /// Handles emitting the entry point function
   /// @param func the entry point function
   /// @returns true if the entry point function was emitted
   bool EmitEntryPointFunction(ast::Function* func);
   /// Handles generate an Expression
+  /// @param out the output of the expression stream
   /// @param expr the expression
   /// @returns true if the expression was emitted
-  bool EmitExpression(ast::Expression* expr);
+  bool EmitExpression(std::ostream& out, ast::Expression* expr);
   /// Handles generating a function
   /// @param func the function to generate
   /// @returns true if the function was emitted
   bool EmitFunction(ast::Function* func);
   /// Handles generating an identifier expression
+  /// @param out the output of the expression stream
   /// @param expr the identifier expression
   /// @returns true if the identifier was emitted
-  bool EmitIdentifier(ast::IdentifierExpression* expr);
+  bool EmitIdentifier(std::ostream& out, ast::IdentifierExpression* expr);
   /// Handles an if statement
   /// @param stmt the statement to emit
   /// @returns true if the statement was successfully emitted
   bool EmitIf(ast::IfStatement* stmt);
   /// Handles a literal
+  /// @param out the output of the expression stream
   /// @param lit the literal to emit
   /// @returns true if the literal was successfully emitted
-  bool EmitLiteral(ast::Literal* lit);
+  bool EmitLiteral(std::ostream& out, ast::Literal* lit);
   /// Handles a loop statement
   /// @param stmt the statement to emit
   /// @returns true if the statement was emitted
   bool EmitLoop(ast::LoopStatement* stmt);
   /// Handles a member accessor expression
+  /// @param out the output of the expression stream
   /// @param expr the member accessor expression
   /// @returns true if the member accessor was emitted
-  bool EmitMemberAccessor(ast::MemberAccessorExpression* expr);
+  bool EmitMemberAccessor(std::ostream& out,
+                          ast::MemberAccessorExpression* expr);
   /// Handles return statements
   /// @param stmt the statement to emit
   /// @returns true if the statement was successfully emitted
   bool EmitReturn(ast::ReturnStatement* stmt);
   /// Handles generating a scalar constructor
+  /// @param out the output of the expression stream
   /// @param expr the scalar constructor expression
   /// @returns true if the scalar constructor is emitted
-  bool EmitScalarConstructor(ast::ScalarConstructorExpression* expr);
+  bool EmitScalarConstructor(std::ostream& out,
+                             ast::ScalarConstructorExpression* expr);
   /// Handles emitting a pipeline stage name
+  /// @param out the output of the expression stream
   /// @param stage the stage to emit
-  void EmitStage(ast::PipelineStage stage);
+  void EmitStage(std::ostream& out, ast::PipelineStage stage);
   /// Handles statement
   /// @param stmt the statement to emit
   /// @returns true if the statement was emitted
   bool EmitStatement(ast::Statement* stmt);
+  /// Emits a list of statements
+  /// @param stmts the statement list
+  /// @returns true if the statements were emitted successfully
+  bool EmitStatements(const ast::StatementList& stmts);
+  /// Emits a list of statements with an indentation
+  /// @param stmts the statement list
+  /// @returns true if the statements were emitted successfully
+  bool EmitStatementsWithIndent(const ast::StatementList& stmts);
   /// Handles generating a switch statement
   /// @param stmt the statement to emit
   /// @returns true if the statement was emitted
   bool EmitSwitch(ast::SwitchStatement* stmt);
   /// Handles generating a type
+  /// @param out the output of the type stream
   /// @param type the type to generate
   /// @param name the name of the variable, only used for array emission
   /// @returns true if the type is emitted
-  bool EmitType(const sem::Type* type, const std::string& name);
+  bool EmitType(std::ostream& out,
+                const sem::Type* type,
+                const std::string& name);
   /// Handles generating an MSL-packed storage type.
   /// If the type does not have a packed form, the standard non-packed form is
   /// emitted.
+  /// @param out the output of the type stream
   /// @param type the type to generate
   /// @param name the name of the variable, only used for array emission
   /// @returns true if the type is emitted
-  bool EmitPackedType(const sem::Type* type, const std::string& name);
+  bool EmitPackedType(std::ostream& out,
+                      const sem::Type* type,
+                      const std::string& name);
   /// Handles generating a struct declaration
   /// @param str the struct to generate
   /// @returns true if the struct is emitted
   bool EmitStructType(const sem::Struct* str);
   /// Handles emitting a type constructor
+  /// @param out the output of the expression stream
   /// @param expr the type constructor expression
   /// @returns true if the constructor is emitted
-  bool EmitTypeConstructor(ast::TypeConstructorExpression* expr);
+  bool EmitTypeConstructor(std::ostream& out,
+                           ast::TypeConstructorExpression* expr);
   /// Handles a unary op expression
+  /// @param out the output of the expression stream
   /// @param expr the expression to emit
   /// @returns true if the expression was emitted
-  bool EmitUnaryOp(ast::UnaryOpExpression* expr);
+  bool EmitUnaryOp(std::ostream& out, ast::UnaryOpExpression* expr);
   /// Handles generating a variable
   /// @param var the variable to generate
   /// @returns true if the variable was emitted
@@ -216,9 +238,10 @@
   /// @returns true if the variable was emitted
   bool EmitProgramConstVariable(const ast::Variable* var);
   /// Emits the zero value for the given type
+  /// @param out the output of the expression stream
   /// @param type the type to emit the value for
   /// @returns true if the zero value was successfully emitted.
-  bool EmitZeroValue(const sem::Type* type);
+  bool EmitZeroValue(std::ostream& out, const sem::Type* type);
 
   /// Handles generating a builtin name
   /// @param intrinsic the semantic info for the intrinsic
@@ -259,15 +282,6 @@
   /// type.
   SizeAndAlign MslPackedTypeSizeAndAlign(const sem::Type* ty);
 
-  /// Emits `prefix`, followed by an opening brace `{`, then calls `cb` to emit
-  /// the block body, then finally emits the closing brace `}`.
-  /// @param prefix the string to emit before the opening brace
-  /// @param cb a function or function-like object with the signature `bool()`
-  /// that emits the block body.
-  /// @returns the return value of `cb`.
-  template <typename F>
-  bool EmitBlockBraces(const std::string& prefix, F&& cb);
-
   const Program* program_ = nullptr;
   std::function<bool()> emit_continuing_;
 };
diff --git a/src/writer/msl/generator_impl_array_accessor_test.cc b/src/writer/msl/generator_impl_array_accessor_test.cc
index f5c2f13..dc2f0dc 100644
--- a/src/writer/msl/generator_impl_array_accessor_test.cc
+++ b/src/writer/msl/generator_impl_array_accessor_test.cc
@@ -28,8 +28,9 @@
 
   GeneratorImpl& gen = Build();
 
-  ASSERT_TRUE(gen.EmitExpression(expr)) << gen.error();
-  EXPECT_EQ(gen.result(), "ary[5]");
+  std::stringstream out;
+  ASSERT_TRUE(gen.EmitExpression(out, expr)) << gen.error();
+  EXPECT_EQ(out.str(), "ary[5]");
 }
 
 TEST_F(MslGeneratorImplTest, ArrayAccessor_OfDref) {
@@ -41,8 +42,9 @@
 
   GeneratorImpl& gen = Build();
 
-  ASSERT_TRUE(gen.EmitExpression(expr)) << gen.error();
-  EXPECT_EQ(gen.result(), "(*(p))[5]");
+  std::stringstream out;
+  ASSERT_TRUE(gen.EmitExpression(out, expr)) << gen.error();
+  EXPECT_EQ(out.str(), "(*(p))[5]");
 }
 
 }  // namespace
diff --git a/src/writer/msl/generator_impl_binary_test.cc b/src/writer/msl/generator_impl_binary_test.cc
index f1099cd..939a482 100644
--- a/src/writer/msl/generator_impl_binary_test.cc
+++ b/src/writer/msl/generator_impl_binary_test.cc
@@ -47,8 +47,9 @@
 
   GeneratorImpl& gen = Build();
 
-  ASSERT_TRUE(gen.EmitExpression(expr)) << gen.error();
-  EXPECT_EQ(gen.result(), params.result);
+  std::stringstream out;
+  ASSERT_TRUE(gen.EmitExpression(out, expr)) << gen.error();
+  EXPECT_EQ(out.str(), params.result);
 }
 INSTANTIATE_TEST_SUITE_P(
     MslGeneratorImplTest,
diff --git a/src/writer/msl/generator_impl_bitcast_test.cc b/src/writer/msl/generator_impl_bitcast_test.cc
index dc9c910..aee3497 100644
--- a/src/writer/msl/generator_impl_bitcast_test.cc
+++ b/src/writer/msl/generator_impl_bitcast_test.cc
@@ -27,8 +27,9 @@
 
   GeneratorImpl& gen = Build();
 
-  ASSERT_TRUE(gen.EmitExpression(bitcast)) << gen.error();
-  EXPECT_EQ(gen.result(), "as_type<float>(1)");
+  std::stringstream out;
+  ASSERT_TRUE(gen.EmitExpression(out, bitcast)) << gen.error();
+  EXPECT_EQ(out.str(), "as_type<float>(1)");
 }
 
 }  // namespace
diff --git a/src/writer/msl/generator_impl_block_test.cc b/src/writer/msl/generator_impl_block_test.cc
index 17a6ffa..952302d 100644
--- a/src/writer/msl/generator_impl_block_test.cc
+++ b/src/writer/msl/generator_impl_block_test.cc
@@ -45,9 +45,10 @@
   gen.increment_indent();
 
   ASSERT_TRUE(gen.EmitBlock(b)) << gen.error();
-  EXPECT_EQ(gen.result(), R"({
+  EXPECT_EQ(gen.result(), R"(  {
     discard_fragment();
-  })");
+  }
+)");
 }
 
 }  // namespace
diff --git a/src/writer/msl/generator_impl_call_test.cc b/src/writer/msl/generator_impl_call_test.cc
index d355726..3f2b2cb 100644
--- a/src/writer/msl/generator_impl_call_test.cc
+++ b/src/writer/msl/generator_impl_call_test.cc
@@ -31,8 +31,9 @@
 
   GeneratorImpl& gen = Build();
 
-  ASSERT_TRUE(gen.EmitExpression(call)) << gen.error();
-  EXPECT_EQ(gen.result(), "my_func()");
+  std::stringstream out;
+  ASSERT_TRUE(gen.EmitExpression(out, call)) << gen.error();
+  EXPECT_EQ(out.str(), "my_func()");
 }
 
 TEST_F(MslGeneratorImplTest, EmitExpression_Call_WithParams) {
@@ -50,8 +51,9 @@
 
   GeneratorImpl& gen = Build();
 
-  ASSERT_TRUE(gen.EmitExpression(call)) << gen.error();
-  EXPECT_EQ(gen.result(), "my_func(param1, param2)");
+  std::stringstream out;
+  ASSERT_TRUE(gen.EmitExpression(out, call)) << gen.error();
+  EXPECT_EQ(out.str(), "my_func(param1, param2)");
 }
 
 TEST_F(MslGeneratorImplTest, EmitStatement_Call) {
diff --git a/src/writer/msl/generator_impl_cast_test.cc b/src/writer/msl/generator_impl_cast_test.cc
index 4b18761..6f66478 100644
--- a/src/writer/msl/generator_impl_cast_test.cc
+++ b/src/writer/msl/generator_impl_cast_test.cc
@@ -27,8 +27,9 @@
 
   GeneratorImpl& gen = Build();
 
-  ASSERT_TRUE(gen.EmitExpression(cast)) << gen.error();
-  EXPECT_EQ(gen.result(), "float(1)");
+  std::stringstream out;
+  ASSERT_TRUE(gen.EmitExpression(out, cast)) << gen.error();
+  EXPECT_EQ(out.str(), "float(1)");
 }
 
 TEST_F(MslGeneratorImplTest, EmitExpression_Cast_Vector) {
@@ -37,8 +38,9 @@
 
   GeneratorImpl& gen = Build();
 
-  ASSERT_TRUE(gen.EmitExpression(cast)) << gen.error();
-  EXPECT_EQ(gen.result(), "float3(int3(1, 2, 3))");
+  std::stringstream out;
+  ASSERT_TRUE(gen.EmitExpression(out, cast)) << gen.error();
+  EXPECT_EQ(out.str(), "float3(int3(1, 2, 3))");
 }
 
 }  // namespace
diff --git a/src/writer/msl/generator_impl_function_test.cc b/src/writer/msl/generator_impl_function_test.cc
index 202a947..11bd7bc 100644
--- a/src/writer/msl/generator_impl_function_test.cc
+++ b/src/writer/msl/generator_impl_function_test.cc
@@ -36,9 +36,9 @@
   gen.increment_indent();
 
   ASSERT_TRUE(gen.Generate()) << gen.error();
-  EXPECT_EQ(gen.result(), R"(#include <metal_stdlib>
+  EXPECT_EQ(gen.result(), R"(  #include <metal_stdlib>
 
-using namespace metal;
+  using namespace metal;
   void my_func() {
     return;
   }
@@ -62,9 +62,9 @@
   gen.increment_indent();
 
   ASSERT_TRUE(gen.Generate()) << gen.error();
-  EXPECT_EQ(gen.result(), R"(#include <metal_stdlib>
+  EXPECT_EQ(gen.result(), R"(  #include <metal_stdlib>
 
-using namespace metal;
+  using namespace metal;
   void my_func(float a, int b) {
     return;
   }
@@ -564,9 +564,9 @@
   gen.increment_indent();
 
   ASSERT_TRUE(gen.Generate()) << gen.error();
-  EXPECT_EQ(gen.result(), R"(#include <metal_stdlib>
+  EXPECT_EQ(gen.result(), R"(  #include <metal_stdlib>
 
-using namespace metal;
+  using namespace metal;
   struct tint_array_wrapper {
     float arr[5];
   };
@@ -589,9 +589,9 @@
   gen.increment_indent();
 
   ASSERT_TRUE(gen.Generate()) << gen.error();
-  EXPECT_EQ(gen.result(), R"(#include <metal_stdlib>
+  EXPECT_EQ(gen.result(), R"(  #include <metal_stdlib>
 
-using namespace metal;
+  using namespace metal;
   struct tint_array_wrapper {
     float arr[5];
   };
diff --git a/src/writer/msl/generator_impl_identifier_test.cc b/src/writer/msl/generator_impl_identifier_test.cc
index 13b739e..0275404 100644
--- a/src/writer/msl/generator_impl_identifier_test.cc
+++ b/src/writer/msl/generator_impl_identifier_test.cc
@@ -29,8 +29,9 @@
 
   GeneratorImpl& gen = Build();
 
-  ASSERT_TRUE(gen.EmitExpression(i)) << gen.error();
-  EXPECT_EQ(gen.result(), "foo");
+  std::stringstream out;
+  ASSERT_TRUE(gen.EmitExpression(out, i)) << gen.error();
+  EXPECT_EQ(out.str(), "foo");
 }
 
 }  // namespace
diff --git a/src/writer/msl/generator_impl_if_test.cc b/src/writer/msl/generator_impl_if_test.cc
index 9840b23..4bbf950 100644
--- a/src/writer/msl/generator_impl_if_test.cc
+++ b/src/writer/msl/generator_impl_if_test.cc
@@ -50,8 +50,10 @@
   ASSERT_TRUE(gen.EmitStatement(i)) << gen.error();
   EXPECT_EQ(gen.result(), R"(  if (cond) {
     return;
-  } else if (else_cond) {
-    return;
+  } else {
+    if (else_cond) {
+      return;
+    }
   }
 )");
 }
@@ -88,10 +90,12 @@
   ASSERT_TRUE(gen.EmitStatement(i)) << gen.error();
   EXPECT_EQ(gen.result(), R"(  if (cond) {
     return;
-  } else if (else_cond) {
-    return;
   } else {
-    return;
+    if (else_cond) {
+      return;
+    } else {
+      return;
+    }
   }
 )");
 }
diff --git a/src/writer/msl/generator_impl_import_test.cc b/src/writer/msl/generator_impl_import_test.cc
index 6b756dc..ec3ff4d 100644
--- a/src/writer/msl/generator_impl_import_test.cc
+++ b/src/writer/msl/generator_impl_import_test.cc
@@ -81,8 +81,9 @@
 
   GeneratorImpl& gen = Build();
 
-  ASSERT_TRUE(gen.EmitCall(expr)) << gen.error();
-  EXPECT_EQ(gen.result(), R"(abs(1))");
+  std::stringstream out;
+  ASSERT_TRUE(gen.EmitCall(out, expr)) << gen.error();
+  EXPECT_EQ(out.str(), R"(abs(1))");
 }
 
 using MslImportData_DualParamTest = TestParamHelper<MslImportData>;
@@ -94,8 +95,9 @@
 
   GeneratorImpl& gen = Build();
 
-  ASSERT_TRUE(gen.EmitCall(expr)) << gen.error();
-  EXPECT_EQ(gen.result(), std::string(param.msl_name) + "(1.0f, 2.0f)");
+  std::stringstream out;
+  ASSERT_TRUE(gen.EmitCall(out, expr)) << gen.error();
+  EXPECT_EQ(out.str(), std::string(param.msl_name) + "(1.0f, 2.0f)");
 }
 INSTANTIATE_TEST_SUITE_P(MslGeneratorImplTest,
                          MslImportData_DualParamTest,
@@ -117,10 +119,11 @@
 
   GeneratorImpl& gen = Build();
 
-  ASSERT_TRUE(gen.EmitCall(expr)) << gen.error();
-  EXPECT_EQ(gen.result(), std::string(param.msl_name) +
-                              "(float3(1.0f, 2.0f, 3.0f), "
-                              "float3(4.0f, 5.0f, 6.0f))");
+  std::stringstream out;
+  ASSERT_TRUE(gen.EmitCall(out, expr)) << gen.error();
+  EXPECT_EQ(out.str(), std::string(param.msl_name) +
+                           "(float3(1.0f, 2.0f, 3.0f), "
+                           "float3(4.0f, 5.0f, 6.0f))");
 }
 INSTANTIATE_TEST_SUITE_P(MslGeneratorImplTest,
                          MslImportData_DualParam_VectorTest,
@@ -135,8 +138,9 @@
 
   GeneratorImpl& gen = Build();
 
-  ASSERT_TRUE(gen.EmitCall(expr)) << gen.error();
-  EXPECT_EQ(gen.result(), std::string(param.msl_name) + "(1, 2)");
+  std::stringstream out;
+  ASSERT_TRUE(gen.EmitCall(out, expr)) << gen.error();
+  EXPECT_EQ(out.str(), std::string(param.msl_name) + "(1, 2)");
 }
 INSTANTIATE_TEST_SUITE_P(MslGeneratorImplTest,
                          MslImportData_DualParam_Int_Test,
@@ -152,8 +156,9 @@
 
   GeneratorImpl& gen = Build();
 
-  ASSERT_TRUE(gen.EmitCall(expr)) << gen.error();
-  EXPECT_EQ(gen.result(), std::string(param.msl_name) + "(1.0f, 2.0f, 3.0f)");
+  std::stringstream out;
+  ASSERT_TRUE(gen.EmitCall(out, expr)) << gen.error();
+  EXPECT_EQ(out.str(), std::string(param.msl_name) + "(1.0f, 2.0f, 3.0f)");
 }
 INSTANTIATE_TEST_SUITE_P(
     MslGeneratorImplTest,
@@ -173,8 +178,9 @@
 
   GeneratorImpl& gen = Build();
 
-  ASSERT_TRUE(gen.EmitCall(expr)) << gen.error();
-  EXPECT_EQ(gen.result(), std::string(param.msl_name) + "(1, 2, 3)");
+  std::stringstream out;
+  ASSERT_TRUE(gen.EmitCall(out, expr)) << gen.error();
+  EXPECT_EQ(out.str(), std::string(param.msl_name) + "(1, 2, 3)");
 }
 INSTANTIATE_TEST_SUITE_P(MslGeneratorImplTest,
                          MslImportData_TripleParam_Int_Test,
@@ -190,8 +196,9 @@
 
   GeneratorImpl& gen = Build();
 
-  ASSERT_TRUE(gen.EmitCall(expr)) << gen.error();
-  EXPECT_EQ(gen.result(), std::string("determinant(var)"));
+  std::stringstream out;
+  ASSERT_TRUE(gen.EmitCall(out, expr)) << gen.error();
+  EXPECT_EQ(out.str(), std::string("determinant(var)"));
 }
 
 }  // namespace
diff --git a/src/writer/msl/generator_impl_intrinsic_test.cc b/src/writer/msl/generator_impl_intrinsic_test.cc
index 0d69bea..f2233b0 100644
--- a/src/writer/msl/generator_impl_intrinsic_test.cc
+++ b/src/writer/msl/generator_impl_intrinsic_test.cc
@@ -291,9 +291,9 @@
 
   GeneratorImpl& gen = Build();
 
-  gen.increment_indent();
-  ASSERT_TRUE(gen.EmitExpression(call)) << gen.error();
-  EXPECT_EQ(gen.result(), "  dot(param1, param2)");
+  std::stringstream out;
+  ASSERT_TRUE(gen.EmitExpression(out, call)) << gen.error();
+  EXPECT_EQ(out.str(), "dot(param1, param2)");
 }
 
 TEST_F(MslGeneratorImplTest, StorageBarrier) {
@@ -302,9 +302,9 @@
 
   GeneratorImpl& gen = Build();
 
-  gen.increment_indent();
-  ASSERT_TRUE(gen.EmitExpression(call)) << gen.error();
-  EXPECT_EQ(gen.result(), "  threadgroup_barrier(mem_flags::mem_device)");
+  std::stringstream out;
+  ASSERT_TRUE(gen.EmitExpression(out, call)) << gen.error();
+  EXPECT_EQ(out.str(), "threadgroup_barrier(mem_flags::mem_device)");
 }
 
 TEST_F(MslGeneratorImplTest, WorkgroupBarrier) {
@@ -313,9 +313,9 @@
 
   GeneratorImpl& gen = Build();
 
-  gen.increment_indent();
-  ASSERT_TRUE(gen.EmitExpression(call)) << gen.error();
-  EXPECT_EQ(gen.result(), "  threadgroup_barrier(mem_flags::mem_threadgroup)");
+  std::stringstream out;
+  ASSERT_TRUE(gen.EmitExpression(out, call)) << gen.error();
+  EXPECT_EQ(out.str(), "threadgroup_barrier(mem_flags::mem_threadgroup)");
 }
 
 TEST_F(MslGeneratorImplTest, Pack2x16Float) {
@@ -325,9 +325,9 @@
 
   GeneratorImpl& gen = Build();
 
-  gen.increment_indent();
-  ASSERT_TRUE(gen.EmitExpression(call)) << gen.error();
-  EXPECT_EQ(gen.result(), "  as_type<uint>(half2(p1))");
+  std::stringstream out;
+  ASSERT_TRUE(gen.EmitExpression(out, call)) << gen.error();
+  EXPECT_EQ(out.str(), "as_type<uint>(half2(p1))");
 }
 
 TEST_F(MslGeneratorImplTest, Unpack2x16Float) {
@@ -337,9 +337,9 @@
 
   GeneratorImpl& gen = Build();
 
-  gen.increment_indent();
-  ASSERT_TRUE(gen.EmitExpression(call)) << gen.error();
-  EXPECT_EQ(gen.result(), "  float2(as_type<half2>(p1))");
+  std::stringstream out;
+  ASSERT_TRUE(gen.EmitExpression(out, call)) << gen.error();
+  EXPECT_EQ(out.str(), "float2(as_type<half2>(p1))");
 }
 
 TEST_F(MslGeneratorImplTest, Ignore) {
diff --git a/src/writer/msl/generator_impl_intrinsic_texture_test.cc b/src/writer/msl/generator_impl_intrinsic_texture_test.cc
index bf6958e..aba0aac 100644
--- a/src/writer/msl/generator_impl_intrinsic_texture_test.cc
+++ b/src/writer/msl/generator_impl_intrinsic_texture_test.cc
@@ -281,10 +281,11 @@
 
   GeneratorImpl& gen = Build();
 
-  ASSERT_TRUE(gen.EmitExpression(call)) << gen.error();
+  std::stringstream out;
+  ASSERT_TRUE(gen.EmitExpression(out, call)) << gen.error();
 
   auto expected = expected_texture_overload(param.overload);
-  EXPECT_EQ(expected, gen.result());
+  EXPECT_EQ(expected, out.str());
 }
 
 INSTANTIATE_TEST_SUITE_P(
diff --git a/src/writer/msl/generator_impl_member_accessor_test.cc b/src/writer/msl/generator_impl_member_accessor_test.cc
index 2047e22..9623a2b 100644
--- a/src/writer/msl/generator_impl_member_accessor_test.cc
+++ b/src/writer/msl/generator_impl_member_accessor_test.cc
@@ -29,8 +29,9 @@
 
   GeneratorImpl& gen = Build();
 
-  ASSERT_TRUE(gen.EmitExpression(expr)) << gen.error();
-  EXPECT_EQ(gen.result(), "str.mem");
+  std::stringstream out;
+  ASSERT_TRUE(gen.EmitExpression(out, expr)) << gen.error();
+  EXPECT_EQ(out.str(), "str.mem");
 }
 
 TEST_F(MslGeneratorImplTest, EmitExpression_MemberAccessor_Swizzle_xyz) {
@@ -40,8 +41,9 @@
   WrapInFunction(expr);
 
   GeneratorImpl& gen = Build();
-  ASSERT_TRUE(gen.EmitExpression(expr)) << gen.error();
-  EXPECT_EQ(gen.result(), "my_vec.xyz");
+  std::stringstream out;
+  ASSERT_TRUE(gen.EmitExpression(out, expr)) << gen.error();
+  EXPECT_EQ(out.str(), "my_vec.xyz");
 }
 
 TEST_F(MslGeneratorImplTest, EmitExpression_MemberAccessor_Swizzle_gbr) {
@@ -51,8 +53,9 @@
   WrapInFunction(expr);
 
   GeneratorImpl& gen = Build();
-  ASSERT_TRUE(gen.EmitExpression(expr)) << gen.error();
-  EXPECT_EQ(gen.result(), "my_vec.gbr");
+  std::stringstream out;
+  ASSERT_TRUE(gen.EmitExpression(out, expr)) << gen.error();
+  EXPECT_EQ(out.str(), "my_vec.gbr");
 }
 
 }  // namespace
diff --git a/src/writer/msl/generator_impl_type_test.cc b/src/writer/msl/generator_impl_type_test.cc
index e92e7b5..d595724 100644
--- a/src/writer/msl/generator_impl_type_test.cc
+++ b/src/writer/msl/generator_impl_type_test.cc
@@ -66,8 +66,9 @@
 
   GeneratorImpl& gen = Build();
 
-  ASSERT_TRUE(gen.EmitType(program->TypeOf(arr), "ary")) << gen.error();
-  EXPECT_EQ(gen.result(), "bool ary[4]");
+  std::stringstream out;
+  ASSERT_TRUE(gen.EmitType(out, program->TypeOf(arr), "ary")) << gen.error();
+  EXPECT_EQ(out.str(), "bool ary[4]");
 }
 
 TEST_F(MslGeneratorImplTest, EmitType_ArrayOfArray) {
@@ -77,8 +78,9 @@
 
   GeneratorImpl& gen = Build();
 
-  ASSERT_TRUE(gen.EmitType(program->TypeOf(b), "ary")) << gen.error();
-  EXPECT_EQ(gen.result(), "bool ary[5][4]");
+  std::stringstream out;
+  ASSERT_TRUE(gen.EmitType(out, program->TypeOf(b), "ary")) << gen.error();
+  EXPECT_EQ(out.str(), "bool ary[5][4]");
 }
 
 TEST_F(MslGeneratorImplTest, EmitType_ArrayOfArrayOfArray) {
@@ -89,8 +91,9 @@
 
   GeneratorImpl& gen = Build();
 
-  ASSERT_TRUE(gen.EmitType(program->TypeOf(c), "ary")) << gen.error();
-  EXPECT_EQ(gen.result(), "bool ary[6][5][4]");
+  std::stringstream out;
+  ASSERT_TRUE(gen.EmitType(out, program->TypeOf(c), "ary")) << gen.error();
+  EXPECT_EQ(out.str(), "bool ary[6][5][4]");
 }
 
 TEST_F(MslGeneratorImplTest, EmitType_Array_WithoutName) {
@@ -99,8 +102,9 @@
 
   GeneratorImpl& gen = Build();
 
-  ASSERT_TRUE(gen.EmitType(program->TypeOf(arr), "")) << gen.error();
-  EXPECT_EQ(gen.result(), "bool[4]");
+  std::stringstream out;
+  ASSERT_TRUE(gen.EmitType(out, program->TypeOf(arr), "")) << gen.error();
+  EXPECT_EQ(out.str(), "bool[4]");
 }
 
 TEST_F(MslGeneratorImplTest, EmitType_RuntimeArray) {
@@ -109,8 +113,9 @@
 
   GeneratorImpl& gen = Build();
 
-  ASSERT_TRUE(gen.EmitType(program->TypeOf(arr), "ary")) << gen.error();
-  EXPECT_EQ(gen.result(), "bool ary[1]");
+  std::stringstream out;
+  ASSERT_TRUE(gen.EmitType(out, program->TypeOf(arr), "ary")) << gen.error();
+  EXPECT_EQ(out.str(), "bool ary[1]");
 }
 
 TEST_F(MslGeneratorImplTest, EmitType_ArrayWithStride) {
@@ -143,8 +148,9 @@
 
   GeneratorImpl& gen = Build();
 
-  ASSERT_TRUE(gen.EmitType(bool_, "")) << gen.error();
-  EXPECT_EQ(gen.result(), "bool");
+  std::stringstream out;
+  ASSERT_TRUE(gen.EmitType(out, bool_, "")) << gen.error();
+  EXPECT_EQ(out.str(), "bool");
 }
 
 TEST_F(MslGeneratorImplTest, EmitType_F32) {
@@ -152,8 +158,9 @@
 
   GeneratorImpl& gen = Build();
 
-  ASSERT_TRUE(gen.EmitType(f32, "")) << gen.error();
-  EXPECT_EQ(gen.result(), "float");
+  std::stringstream out;
+  ASSERT_TRUE(gen.EmitType(out, f32, "")) << gen.error();
+  EXPECT_EQ(out.str(), "float");
 }
 
 TEST_F(MslGeneratorImplTest, EmitType_I32) {
@@ -161,8 +168,9 @@
 
   GeneratorImpl& gen = Build();
 
-  ASSERT_TRUE(gen.EmitType(i32, "")) << gen.error();
-  EXPECT_EQ(gen.result(), "int");
+  std::stringstream out;
+  ASSERT_TRUE(gen.EmitType(out, i32, "")) << gen.error();
+  EXPECT_EQ(out.str(), "int");
 }
 
 TEST_F(MslGeneratorImplTest, EmitType_Matrix) {
@@ -172,8 +180,9 @@
 
   GeneratorImpl& gen = Build();
 
-  ASSERT_TRUE(gen.EmitType(mat2x3, "")) << gen.error();
-  EXPECT_EQ(gen.result(), "float2x3");
+  std::stringstream out;
+  ASSERT_TRUE(gen.EmitType(out, mat2x3, "")) << gen.error();
+  EXPECT_EQ(out.str(), "float2x3");
 }
 
 TEST_F(MslGeneratorImplTest, EmitType_Pointer) {
@@ -183,8 +192,9 @@
 
   GeneratorImpl& gen = Build();
 
-  ASSERT_TRUE(gen.EmitType(p, "")) << gen.error();
-  EXPECT_EQ(gen.result(), "threadgroup float* ");
+  std::stringstream out;
+  ASSERT_TRUE(gen.EmitType(out, p, "")) << gen.error();
+  EXPECT_EQ(out.str(), "threadgroup float* ");
 }
 
 TEST_F(MslGeneratorImplTest, EmitType_Struct) {
@@ -195,8 +205,9 @@
 
   GeneratorImpl& gen = Build();
 
-  ASSERT_TRUE(gen.EmitType(program->TypeOf(s), "")) << gen.error();
-  EXPECT_EQ(gen.result(), "S");
+  std::stringstream out;
+  ASSERT_TRUE(gen.EmitType(out, program->TypeOf(s), "")) << gen.error();
+  EXPECT_EQ(out.str(), "S");
 }
 
 TEST_F(MslGeneratorImplTest, EmitType_StructDecl) {
@@ -670,8 +681,9 @@
 
   GeneratorImpl& gen = Build();
 
-  ASSERT_TRUE(gen.EmitType(program->TypeOf(s), "")) << gen.error();
-  EXPECT_EQ(gen.result(), R"(struct {
+  std::stringstream out;
+  ASSERT_TRUE(gen.EmitType(out, program->TypeOf(s), "")) << gen.error();
+  EXPECT_EQ(out.str(), R"(struct {
   /* 0x0000 */ int a;
   /* 0x0004 */ float b;
 })");
@@ -682,8 +694,9 @@
 
   GeneratorImpl& gen = Build();
 
-  ASSERT_TRUE(gen.EmitType(u32, "")) << gen.error();
-  EXPECT_EQ(gen.result(), "uint");
+  std::stringstream out;
+  ASSERT_TRUE(gen.EmitType(out, u32, "")) << gen.error();
+  EXPECT_EQ(out.str(), "uint");
 }
 
 TEST_F(MslGeneratorImplTest, EmitType_Vector) {
@@ -692,8 +705,9 @@
 
   GeneratorImpl& gen = Build();
 
-  ASSERT_TRUE(gen.EmitType(vec3, "")) << gen.error();
-  EXPECT_EQ(gen.result(), "float3");
+  std::stringstream out;
+  ASSERT_TRUE(gen.EmitType(out, vec3, "")) << gen.error();
+  EXPECT_EQ(out.str(), "float3");
 }
 
 TEST_F(MslGeneratorImplTest, EmitType_Void) {
@@ -701,8 +715,9 @@
 
   GeneratorImpl& gen = Build();
 
-  ASSERT_TRUE(gen.EmitType(void_, "")) << gen.error();
-  EXPECT_EQ(gen.result(), "void");
+  std::stringstream out;
+  ASSERT_TRUE(gen.EmitType(out, void_, "")) << gen.error();
+  EXPECT_EQ(out.str(), "void");
 }
 
 TEST_F(MslGeneratorImplTest, EmitType_Sampler) {
@@ -710,8 +725,9 @@
 
   GeneratorImpl& gen = Build();
 
-  ASSERT_TRUE(gen.EmitType(sampler, "")) << gen.error();
-  EXPECT_EQ(gen.result(), "sampler");
+  std::stringstream out;
+  ASSERT_TRUE(gen.EmitType(out, sampler, "")) << gen.error();
+  EXPECT_EQ(out.str(), "sampler");
 }
 
 TEST_F(MslGeneratorImplTest, EmitType_SamplerComparison) {
@@ -719,8 +735,9 @@
 
   GeneratorImpl& gen = Build();
 
-  ASSERT_TRUE(gen.EmitType(sampler, "")) << gen.error();
-  EXPECT_EQ(gen.result(), "sampler");
+  std::stringstream out;
+  ASSERT_TRUE(gen.EmitType(out, sampler, "")) << gen.error();
+  EXPECT_EQ(out.str(), "sampler");
 }
 
 struct MslDepthTextureData {
@@ -739,8 +756,9 @@
 
   GeneratorImpl& gen = Build();
 
-  ASSERT_TRUE(gen.EmitType(&s, "")) << gen.error();
-  EXPECT_EQ(gen.result(), params.result);
+  std::stringstream out;
+  ASSERT_TRUE(gen.EmitType(out, &s, "")) << gen.error();
+  EXPECT_EQ(out.str(), params.result);
 }
 INSTANTIATE_TEST_SUITE_P(
     MslGeneratorImplTest,
@@ -772,8 +790,9 @@
 
   GeneratorImpl& gen = Build();
 
-  ASSERT_TRUE(gen.EmitType(s, "")) << gen.error();
-  EXPECT_EQ(gen.result(), params.result);
+  std::stringstream out;
+  ASSERT_TRUE(gen.EmitType(out, s, "")) << gen.error();
+  EXPECT_EQ(out.str(), params.result);
 }
 INSTANTIATE_TEST_SUITE_P(
     MslGeneratorImplTest,
@@ -798,8 +817,9 @@
 
   GeneratorImpl& gen = Build();
 
-  ASSERT_TRUE(gen.EmitType(ms, "")) << gen.error();
-  EXPECT_EQ(gen.result(), "texture2d_ms<uint, access::read>");
+  std::stringstream out;
+  ASSERT_TRUE(gen.EmitType(out, ms, "")) << gen.error();
+  EXPECT_EQ(out.str(), "texture2d_ms<uint, access::read>");
 }
 
 struct MslStorageTextureData {
@@ -826,8 +846,9 @@
 
   GeneratorImpl& gen = Build();
 
-  ASSERT_TRUE(gen.EmitType(program->TypeOf(s), "")) << gen.error();
-  EXPECT_EQ(gen.result(), params.result);
+  std::stringstream out;
+  ASSERT_TRUE(gen.EmitType(out, program->TypeOf(s), "")) << gen.error();
+  EXPECT_EQ(out.str(), params.result);
 }
 INSTANTIATE_TEST_SUITE_P(
     MslGeneratorImplTest,
diff --git a/src/writer/msl/generator_impl_unary_op_test.cc b/src/writer/msl/generator_impl_unary_op_test.cc
index 2dfe8a9..9254494 100644
--- a/src/writer/msl/generator_impl_unary_op_test.cc
+++ b/src/writer/msl/generator_impl_unary_op_test.cc
@@ -29,8 +29,9 @@
 
   GeneratorImpl& gen = Build();
 
-  ASSERT_TRUE(gen.EmitExpression(op)) << gen.error();
-  EXPECT_EQ(gen.result(), "&(expr)");
+  std::stringstream out;
+  ASSERT_TRUE(gen.EmitExpression(out, op)) << gen.error();
+  EXPECT_EQ(out.str(), "&(expr)");
 }
 
 TEST_F(MslUnaryOpTest, Complement) {
@@ -41,8 +42,9 @@
 
   GeneratorImpl& gen = Build();
 
-  ASSERT_TRUE(gen.EmitExpression(op)) << gen.error();
-  EXPECT_EQ(gen.result(), "~(expr)");
+  std::stringstream out;
+  ASSERT_TRUE(gen.EmitExpression(out, op)) << gen.error();
+  EXPECT_EQ(out.str(), "~(expr)");
 }
 
 TEST_F(MslUnaryOpTest, Indirection) {
@@ -56,8 +58,9 @@
 
   GeneratorImpl& gen = Build();
 
-  ASSERT_TRUE(gen.EmitExpression(op)) << gen.error();
-  EXPECT_EQ(gen.result(), "*(expr)");
+  std::stringstream out;
+  ASSERT_TRUE(gen.EmitExpression(out, op)) << gen.error();
+  EXPECT_EQ(out.str(), "*(expr)");
 }
 
 TEST_F(MslUnaryOpTest, Not) {
@@ -67,8 +70,9 @@
 
   GeneratorImpl& gen = Build();
 
-  ASSERT_TRUE(gen.EmitExpression(op)) << gen.error();
-  EXPECT_EQ(gen.result(), "!(expr)");
+  std::stringstream out;
+  ASSERT_TRUE(gen.EmitExpression(out, op)) << gen.error();
+  EXPECT_EQ(out.str(), "!(expr)");
 }
 
 TEST_F(MslUnaryOpTest, Negation) {
@@ -79,8 +83,9 @@
 
   GeneratorImpl& gen = Build();
 
-  ASSERT_TRUE(gen.EmitExpression(op)) << gen.error();
-  EXPECT_EQ(gen.result(), "-(expr)");
+  std::stringstream out;
+  ASSERT_TRUE(gen.EmitExpression(out, op)) << gen.error();
+  EXPECT_EQ(out.str(), "-(expr)");
 }
 
 }  // namespace
diff --git a/src/writer/text_generator.cc b/src/writer/text_generator.cc
index 624d72c..a3ec05c 100644
--- a/src/writer/text_generator.cc
+++ b/src/writer/text_generator.cc
@@ -44,8 +44,9 @@
     auto str = os.str();
     if (!str.empty()) {
       gen->make_indent();
-      gen->out_ << str << std::endl;
+      gen->out_ << str;
     }
+    gen->out_ << std::endl;
   }
 }
 
diff --git a/test/bug/dawn/947.wgsl.expected.msl b/test/bug/dawn/947.wgsl.expected.msl
index b33557a..2ad00ea 100644
--- a/test/bug/dawn/947.wgsl.expected.msl
+++ b/test/bug/dawn/947.wgsl.expected.msl
@@ -39,8 +39,8 @@
 
 fragment tint_symbol_4 fs_main(texture2d<float, access::sample> tint_symbol_7 [[texture(2)]], sampler tint_symbol_8 [[sampler(1)]], tint_symbol_3 tint_symbol_2 [[stage_in]]) {
   float2 const texcoord = tint_symbol_2.texcoord;
-  float2 clampedTexcoord =   clamp(texcoord, float2(0.0f, 0.0f), float2(1.0f, 1.0f));
-  if (!(  all((clampedTexcoord == texcoord)))) {
+  float2 clampedTexcoord = clamp(texcoord, float2(0.0f, 0.0f), float2(1.0f, 1.0f));
+  if (!(all((clampedTexcoord == texcoord)))) {
     discard_fragment();
   }
   float4 srcColor = tint_symbol_7.sample(tint_symbol_8, texcoord);
diff --git a/test/bug/tint/749.spvasm.expected.msl b/test/bug/tint/749.spvasm.expected.msl
index 1e5e850..9e417f0 100644
--- a/test/bug/tint/749.spvasm.expected.msl
+++ b/test/bug/tint/749.spvasm.expected.msl
@@ -1451,7 +1451,7 @@
   int const x_909 = (*(tint_symbol_86)).numbers.arr[4];
   (*(tint_symbol_86)).numbers.arr[4] = 0;
   (*(tint_symbol_86)).numbers.arr[4] = x_909;
-  if ((  fabs((x_308 - x_310)) < 0.25f)) {
+  if ((fabs((x_308 - x_310)) < 0.25f)) {
     float const x_910 = uv.x;
     uv.x = 0.0f;
     uv.x = x_910;
@@ -1505,7 +1505,7 @@
   uv[0] = 0.0f;
   uv[0] = x_922;
   float3 const x_519 = float3(x_447.x, x_446.x, x_446.y);
-  float3 const x_326 =   normalize(x_325);
+  float3 const x_326 = normalize(x_325);
   float const x_923 = uv.x;
   uv.x = 0.0f;
   uv.x = x_923;
diff --git a/test/bug/tint/913.wgsl.expected.msl b/test/bug/tint/913.wgsl.expected.msl
index e30f694..87536c3 100644
--- a/test/bug/tint/913.wgsl.expected.msl
+++ b/test/bug/tint/913.wgsl.expected.msl
@@ -13,7 +13,7 @@
 };
 
 bool aboutEqual(float value, float expect) {
-  return (  fabs((value - expect)) < 0.001f);
+  return (fabs((value - expect)) < 0.001f);
 }
 
 kernel void tint_symbol(texture2d<float, access::sample> tint_symbol_2 [[texture(0)]], texture2d<float, access::sample> tint_symbol_3 [[texture(1)]], uint3 GlobalInvocationID [[thread_position_in_grid]], constant Uniforms& uniforms [[buffer(3)]], device OutputBuf& output [[buffer(2)]]) {
@@ -23,7 +23,7 @@
   float4 const nonCoveredColor = float4(0.0f, 1.0f, 0.0f, 1.0f);
   bool success = true;
   if (((((dstTexCoord.x < uniforms.dstCopyOrigin.x) || (dstTexCoord.y < uniforms.dstCopyOrigin.y)) || (dstTexCoord.x >= (uniforms.dstCopyOrigin.x + uniforms.copySize.x))) || (dstTexCoord.y >= (uniforms.dstCopyOrigin.y + uniforms.copySize.y)))) {
-    success = (success &&     all((tint_symbol_3.read(uint2(int2(dstTexCoord)), 0) == nonCoveredColor)));
+    success = (success && all((tint_symbol_3.read(uint2(int2(dstTexCoord)), 0) == nonCoveredColor)));
   } else {
     uint2 srcTexCoord = ((dstTexCoord - uniforms.dstCopyOrigin) + uniforms.srcCopyOrigin);
     if ((uniforms.dstTextureFlipY == 1u)) {
diff --git a/test/bug/tint/914.wgsl.expected.msl b/test/bug/tint/914.wgsl.expected.msl
index bdb650c..d9a4b82 100644
--- a/test/bug/tint/914.wgsl.expected.msl
+++ b/test/bug/tint/914.wgsl.expected.msl
@@ -59,7 +59,7 @@
     tint_array_wrapper const tint_symbol_3 = {.arr={}};
     tint_symbol_5 = tint_symbol_3;
   }
-    threadgroup_barrier(mem_flags::mem_threadgroup);
+  threadgroup_barrier(mem_flags::mem_threadgroup);
   uint const tileRow = (local_id.y * RowPerThread);
   uint const tileCol = (local_id.x * ColPerThread);
   uint const globalRow = (global_id.y * RowPerThread);
@@ -140,7 +140,7 @@
           }
         }
       }
-            threadgroup_barrier(mem_flags::mem_threadgroup);
+      threadgroup_barrier(mem_flags::mem_threadgroup);
       {
         uint k = 0u;
         while (true) {
@@ -189,7 +189,7 @@
           }
         }
       }
-            threadgroup_barrier(mem_flags::mem_threadgroup);
+      threadgroup_barrier(mem_flags::mem_threadgroup);
       {
         t = (t + 1u);
       }
diff --git a/test/intrinsics/gen/abs/002533.wgsl.expected.msl b/test/intrinsics/gen/abs/002533.wgsl.expected.msl
index 1258a26..84bfd68 100644
--- a/test/intrinsics/gen/abs/002533.wgsl.expected.msl
+++ b/test/intrinsics/gen/abs/002533.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void abs_002533() {
-  float4 res =   fabs(float4());
+  float4 res = fabs(float4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/abs/005174.wgsl.expected.msl b/test/intrinsics/gen/abs/005174.wgsl.expected.msl
index 3babfb7..05c0490 100644
--- a/test/intrinsics/gen/abs/005174.wgsl.expected.msl
+++ b/test/intrinsics/gen/abs/005174.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void abs_005174() {
-  float3 res =   fabs(float3());
+  float3 res = fabs(float3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/abs/1ce782.wgsl.expected.msl b/test/intrinsics/gen/abs/1ce782.wgsl.expected.msl
index 987b8fb..0efe442 100644
--- a/test/intrinsics/gen/abs/1ce782.wgsl.expected.msl
+++ b/test/intrinsics/gen/abs/1ce782.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void abs_1ce782() {
-  uint4 res =   abs(uint4());
+  uint4 res = abs(uint4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/abs/1e9d53.wgsl.expected.msl b/test/intrinsics/gen/abs/1e9d53.wgsl.expected.msl
index 944edf8..82d59b8 100644
--- a/test/intrinsics/gen/abs/1e9d53.wgsl.expected.msl
+++ b/test/intrinsics/gen/abs/1e9d53.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void abs_1e9d53() {
-  float2 res =   fabs(float2());
+  float2 res = fabs(float2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/abs/467cd1.wgsl.expected.msl b/test/intrinsics/gen/abs/467cd1.wgsl.expected.msl
index 76477c2..3764d7f 100644
--- a/test/intrinsics/gen/abs/467cd1.wgsl.expected.msl
+++ b/test/intrinsics/gen/abs/467cd1.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void abs_467cd1() {
-  uint res =   abs(1u);
+  uint res = abs(1u);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/abs/4ad288.wgsl.expected.msl b/test/intrinsics/gen/abs/4ad288.wgsl.expected.msl
index 081a994..e9edc03 100644
--- a/test/intrinsics/gen/abs/4ad288.wgsl.expected.msl
+++ b/test/intrinsics/gen/abs/4ad288.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void abs_4ad288() {
-  int res =   abs(1);
+  int res = abs(1);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/abs/5ad50a.wgsl.expected.msl b/test/intrinsics/gen/abs/5ad50a.wgsl.expected.msl
index bcc027b..dd6bdd7 100644
--- a/test/intrinsics/gen/abs/5ad50a.wgsl.expected.msl
+++ b/test/intrinsics/gen/abs/5ad50a.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void abs_5ad50a() {
-  int3 res =   abs(int3());
+  int3 res = abs(int3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/abs/7326de.wgsl.expected.msl b/test/intrinsics/gen/abs/7326de.wgsl.expected.msl
index 3de8a49..e17b21e 100644
--- a/test/intrinsics/gen/abs/7326de.wgsl.expected.msl
+++ b/test/intrinsics/gen/abs/7326de.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void abs_7326de() {
-  uint3 res =   abs(uint3());
+  uint3 res = abs(uint3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/abs/7f28e6.wgsl.expected.msl b/test/intrinsics/gen/abs/7f28e6.wgsl.expected.msl
index 9c154aa..471ff15 100644
--- a/test/intrinsics/gen/abs/7f28e6.wgsl.expected.msl
+++ b/test/intrinsics/gen/abs/7f28e6.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void abs_7f28e6() {
-  uint2 res =   abs(uint2());
+  uint2 res = abs(uint2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/abs/7faa9e.wgsl.expected.msl b/test/intrinsics/gen/abs/7faa9e.wgsl.expected.msl
index d4e4668..1738b04 100644
--- a/test/intrinsics/gen/abs/7faa9e.wgsl.expected.msl
+++ b/test/intrinsics/gen/abs/7faa9e.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void abs_7faa9e() {
-  int2 res =   abs(int2());
+  int2 res = abs(int2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/abs/9c80a6.wgsl.expected.msl b/test/intrinsics/gen/abs/9c80a6.wgsl.expected.msl
index 09179b9..87ef75d 100644
--- a/test/intrinsics/gen/abs/9c80a6.wgsl.expected.msl
+++ b/test/intrinsics/gen/abs/9c80a6.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void abs_9c80a6() {
-  int4 res =   abs(int4());
+  int4 res = abs(int4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/abs/b96037.wgsl.expected.msl b/test/intrinsics/gen/abs/b96037.wgsl.expected.msl
index 86cbf29..a8928f1 100644
--- a/test/intrinsics/gen/abs/b96037.wgsl.expected.msl
+++ b/test/intrinsics/gen/abs/b96037.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void abs_b96037() {
-  float res =   fabs(1.0f);
+  float res = fabs(1.0f);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/acos/489247.wgsl.expected.msl b/test/intrinsics/gen/acos/489247.wgsl.expected.msl
index 8a12c8a..f0b164f 100644
--- a/test/intrinsics/gen/acos/489247.wgsl.expected.msl
+++ b/test/intrinsics/gen/acos/489247.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void acos_489247() {
-  float res =   acos(1.0f);
+  float res = acos(1.0f);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/acos/8e2acf.wgsl.expected.msl b/test/intrinsics/gen/acos/8e2acf.wgsl.expected.msl
index fe56d67..99d4c08 100644
--- a/test/intrinsics/gen/acos/8e2acf.wgsl.expected.msl
+++ b/test/intrinsics/gen/acos/8e2acf.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void acos_8e2acf() {
-  float4 res =   acos(float4());
+  float4 res = acos(float4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/acos/a610c4.wgsl.expected.msl b/test/intrinsics/gen/acos/a610c4.wgsl.expected.msl
index aaf328f..e1d07a9 100644
--- a/test/intrinsics/gen/acos/a610c4.wgsl.expected.msl
+++ b/test/intrinsics/gen/acos/a610c4.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void acos_a610c4() {
-  float3 res =   acos(float3());
+  float3 res = acos(float3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/acos/dfc915.wgsl.expected.msl b/test/intrinsics/gen/acos/dfc915.wgsl.expected.msl
index 9257d33..48e93aa 100644
--- a/test/intrinsics/gen/acos/dfc915.wgsl.expected.msl
+++ b/test/intrinsics/gen/acos/dfc915.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void acos_dfc915() {
-  float2 res =   acos(float2());
+  float2 res = acos(float2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/all/986c7b.wgsl.expected.msl b/test/intrinsics/gen/all/986c7b.wgsl.expected.msl
index 022b58e..032da53 100644
--- a/test/intrinsics/gen/all/986c7b.wgsl.expected.msl
+++ b/test/intrinsics/gen/all/986c7b.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void all_986c7b() {
-  bool res =   all(bool4());
+  bool res = all(bool4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/all/bd2dba.wgsl.expected.msl b/test/intrinsics/gen/all/bd2dba.wgsl.expected.msl
index 9ad60e3..6c7a2fb 100644
--- a/test/intrinsics/gen/all/bd2dba.wgsl.expected.msl
+++ b/test/intrinsics/gen/all/bd2dba.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void all_bd2dba() {
-  bool res =   all(bool3());
+  bool res = all(bool3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/all/f46790.wgsl.expected.msl b/test/intrinsics/gen/all/f46790.wgsl.expected.msl
index f2813f5..9b337fb 100644
--- a/test/intrinsics/gen/all/f46790.wgsl.expected.msl
+++ b/test/intrinsics/gen/all/f46790.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void all_f46790() {
-  bool res =   all(bool2());
+  bool res = all(bool2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/any/083428.wgsl.expected.msl b/test/intrinsics/gen/any/083428.wgsl.expected.msl
index 3b69c0a..e76e344 100644
--- a/test/intrinsics/gen/any/083428.wgsl.expected.msl
+++ b/test/intrinsics/gen/any/083428.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void any_083428() {
-  bool res =   any(bool4());
+  bool res = any(bool4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/any/0e3e58.wgsl.expected.msl b/test/intrinsics/gen/any/0e3e58.wgsl.expected.msl
index 8efaca1..9933be1 100644
--- a/test/intrinsics/gen/any/0e3e58.wgsl.expected.msl
+++ b/test/intrinsics/gen/any/0e3e58.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void any_0e3e58() {
-  bool res =   any(bool2());
+  bool res = any(bool2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/any/e755c1.wgsl.expected.msl b/test/intrinsics/gen/any/e755c1.wgsl.expected.msl
index 0814a03..a789697 100644
--- a/test/intrinsics/gen/any/e755c1.wgsl.expected.msl
+++ b/test/intrinsics/gen/any/e755c1.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void any_e755c1() {
-  bool res =   any(bool3());
+  bool res = any(bool3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/asin/064953.wgsl.expected.msl b/test/intrinsics/gen/asin/064953.wgsl.expected.msl
index 3a5bbeb..e5ae534 100644
--- a/test/intrinsics/gen/asin/064953.wgsl.expected.msl
+++ b/test/intrinsics/gen/asin/064953.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void asin_064953() {
-  float4 res =   asin(float4());
+  float4 res = asin(float4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/asin/7b6a44.wgsl.expected.msl b/test/intrinsics/gen/asin/7b6a44.wgsl.expected.msl
index ae9dd48..bccf8b9 100644
--- a/test/intrinsics/gen/asin/7b6a44.wgsl.expected.msl
+++ b/test/intrinsics/gen/asin/7b6a44.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void asin_7b6a44() {
-  float2 res =   asin(float2());
+  float2 res = asin(float2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/asin/8cd9c9.wgsl.expected.msl b/test/intrinsics/gen/asin/8cd9c9.wgsl.expected.msl
index e246b62..9fdb5c6 100644
--- a/test/intrinsics/gen/asin/8cd9c9.wgsl.expected.msl
+++ b/test/intrinsics/gen/asin/8cd9c9.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void asin_8cd9c9() {
-  float3 res =   asin(float3());
+  float3 res = asin(float3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/asin/c0c272.wgsl.expected.msl b/test/intrinsics/gen/asin/c0c272.wgsl.expected.msl
index 8a7e083..9467bed 100644
--- a/test/intrinsics/gen/asin/c0c272.wgsl.expected.msl
+++ b/test/intrinsics/gen/asin/c0c272.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void asin_c0c272() {
-  float res =   asin(1.0f);
+  float res = asin(1.0f);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/atan/02979a.wgsl.expected.msl b/test/intrinsics/gen/atan/02979a.wgsl.expected.msl
index 411c3bd..d7f68f1 100644
--- a/test/intrinsics/gen/atan/02979a.wgsl.expected.msl
+++ b/test/intrinsics/gen/atan/02979a.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void atan_02979a() {
-  float res =   atan(1.0f);
+  float res = atan(1.0f);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/atan/331e6d.wgsl.expected.msl b/test/intrinsics/gen/atan/331e6d.wgsl.expected.msl
index 0978363..2474bec 100644
--- a/test/intrinsics/gen/atan/331e6d.wgsl.expected.msl
+++ b/test/intrinsics/gen/atan/331e6d.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void atan_331e6d() {
-  float3 res =   atan(float3());
+  float3 res = atan(float3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/atan/a8b696.wgsl.expected.msl b/test/intrinsics/gen/atan/a8b696.wgsl.expected.msl
index 16ab64a..a985ca9 100644
--- a/test/intrinsics/gen/atan/a8b696.wgsl.expected.msl
+++ b/test/intrinsics/gen/atan/a8b696.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void atan_a8b696() {
-  float4 res =   atan(float4());
+  float4 res = atan(float4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/atan/ad96e4.wgsl.expected.msl b/test/intrinsics/gen/atan/ad96e4.wgsl.expected.msl
index 080c24a..3301ece 100644
--- a/test/intrinsics/gen/atan/ad96e4.wgsl.expected.msl
+++ b/test/intrinsics/gen/atan/ad96e4.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void atan_ad96e4() {
-  float2 res =   atan(float2());
+  float2 res = atan(float2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/atan2/57fb13.wgsl.expected.msl b/test/intrinsics/gen/atan2/57fb13.wgsl.expected.msl
index f647ab6..75f4759 100644
--- a/test/intrinsics/gen/atan2/57fb13.wgsl.expected.msl
+++ b/test/intrinsics/gen/atan2/57fb13.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void atan2_57fb13() {
-  float2 res =   atan2(float2(), float2());
+  float2 res = atan2(float2(), float2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/atan2/96057c.wgsl.expected.msl b/test/intrinsics/gen/atan2/96057c.wgsl.expected.msl
index eda44b5..ca9d89e 100644
--- a/test/intrinsics/gen/atan2/96057c.wgsl.expected.msl
+++ b/test/intrinsics/gen/atan2/96057c.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void atan2_96057c() {
-  float res =   atan2(1.0f, 1.0f);
+  float res = atan2(1.0f, 1.0f);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/atan2/a70d0d.wgsl.expected.msl b/test/intrinsics/gen/atan2/a70d0d.wgsl.expected.msl
index 6a52430..041777f 100644
--- a/test/intrinsics/gen/atan2/a70d0d.wgsl.expected.msl
+++ b/test/intrinsics/gen/atan2/a70d0d.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void atan2_a70d0d() {
-  float3 res =   atan2(float3(), float3());
+  float3 res = atan2(float3(), float3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/atan2/ae713e.wgsl.expected.msl b/test/intrinsics/gen/atan2/ae713e.wgsl.expected.msl
index 9aa0aa7..5823a53 100644
--- a/test/intrinsics/gen/atan2/ae713e.wgsl.expected.msl
+++ b/test/intrinsics/gen/atan2/ae713e.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void atan2_ae713e() {
-  float4 res =   atan2(float4(), float4());
+  float4 res = atan2(float4(), float4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/ceil/34064b.wgsl.expected.msl b/test/intrinsics/gen/ceil/34064b.wgsl.expected.msl
index 6a9eba0..5593646 100644
--- a/test/intrinsics/gen/ceil/34064b.wgsl.expected.msl
+++ b/test/intrinsics/gen/ceil/34064b.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void ceil_34064b() {
-  float3 res =   ceil(float3());
+  float3 res = ceil(float3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/ceil/678655.wgsl.expected.msl b/test/intrinsics/gen/ceil/678655.wgsl.expected.msl
index 1dc8a90..fdc9079 100644
--- a/test/intrinsics/gen/ceil/678655.wgsl.expected.msl
+++ b/test/intrinsics/gen/ceil/678655.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void ceil_678655() {
-  float res =   ceil(1.0f);
+  float res = ceil(1.0f);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/ceil/96f597.wgsl.expected.msl b/test/intrinsics/gen/ceil/96f597.wgsl.expected.msl
index 355e7c3..0e7d8d7 100644
--- a/test/intrinsics/gen/ceil/96f597.wgsl.expected.msl
+++ b/test/intrinsics/gen/ceil/96f597.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void ceil_96f597() {
-  float2 res =   ceil(float2());
+  float2 res = ceil(float2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/ceil/b74c16.wgsl.expected.msl b/test/intrinsics/gen/ceil/b74c16.wgsl.expected.msl
index 982d1d0..baef3df 100644
--- a/test/intrinsics/gen/ceil/b74c16.wgsl.expected.msl
+++ b/test/intrinsics/gen/ceil/b74c16.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void ceil_b74c16() {
-  float4 res =   ceil(float4());
+  float4 res = ceil(float4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/clamp/0acf8f.wgsl.expected.msl b/test/intrinsics/gen/clamp/0acf8f.wgsl.expected.msl
index dce861e..601db26 100644
--- a/test/intrinsics/gen/clamp/0acf8f.wgsl.expected.msl
+++ b/test/intrinsics/gen/clamp/0acf8f.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void clamp_0acf8f() {
-  float2 res =   clamp(float2(), float2(), float2());
+  float2 res = clamp(float2(), float2(), float2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/clamp/1a32e3.wgsl.expected.msl b/test/intrinsics/gen/clamp/1a32e3.wgsl.expected.msl
index 062a582..faac6ae 100644
--- a/test/intrinsics/gen/clamp/1a32e3.wgsl.expected.msl
+++ b/test/intrinsics/gen/clamp/1a32e3.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void clamp_1a32e3() {
-  int4 res =   clamp(int4(), int4(), int4());
+  int4 res = clamp(int4(), int4(), int4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/clamp/2bd567.wgsl.expected.msl b/test/intrinsics/gen/clamp/2bd567.wgsl.expected.msl
index 533e9e4..676b575 100644
--- a/test/intrinsics/gen/clamp/2bd567.wgsl.expected.msl
+++ b/test/intrinsics/gen/clamp/2bd567.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void clamp_2bd567() {
-  float res =   clamp(1.0f, 1.0f, 1.0f);
+  float res = clamp(1.0f, 1.0f, 1.0f);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/clamp/2bde41.wgsl.expected.msl b/test/intrinsics/gen/clamp/2bde41.wgsl.expected.msl
index aa99935..1db29d6 100644
--- a/test/intrinsics/gen/clamp/2bde41.wgsl.expected.msl
+++ b/test/intrinsics/gen/clamp/2bde41.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void clamp_2bde41() {
-  float4 res =   clamp(float4(), float4(), float4());
+  float4 res = clamp(float4(), float4(), float4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/clamp/548fc7.wgsl.expected.msl b/test/intrinsics/gen/clamp/548fc7.wgsl.expected.msl
index ecfc1ad..633a63a 100644
--- a/test/intrinsics/gen/clamp/548fc7.wgsl.expected.msl
+++ b/test/intrinsics/gen/clamp/548fc7.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void clamp_548fc7() {
-  uint3 res =   clamp(uint3(), uint3(), uint3());
+  uint3 res = clamp(uint3(), uint3(), uint3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/clamp/5f0819.wgsl.expected.msl b/test/intrinsics/gen/clamp/5f0819.wgsl.expected.msl
index 5a6317d..22d535b 100644
--- a/test/intrinsics/gen/clamp/5f0819.wgsl.expected.msl
+++ b/test/intrinsics/gen/clamp/5f0819.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void clamp_5f0819() {
-  int3 res =   clamp(int3(), int3(), int3());
+  int3 res = clamp(int3(), int3(), int3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/clamp/6c1749.wgsl.expected.msl b/test/intrinsics/gen/clamp/6c1749.wgsl.expected.msl
index 654a545..87c439c 100644
--- a/test/intrinsics/gen/clamp/6c1749.wgsl.expected.msl
+++ b/test/intrinsics/gen/clamp/6c1749.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void clamp_6c1749() {
-  int2 res =   clamp(int2(), int2(), int2());
+  int2 res = clamp(int2(), int2(), int2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/clamp/7706d7.wgsl.expected.msl b/test/intrinsics/gen/clamp/7706d7.wgsl.expected.msl
index 634bdf5..f2bf5f6 100644
--- a/test/intrinsics/gen/clamp/7706d7.wgsl.expected.msl
+++ b/test/intrinsics/gen/clamp/7706d7.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void clamp_7706d7() {
-  uint2 res =   clamp(uint2(), uint2(), uint2());
+  uint2 res = clamp(uint2(), uint2(), uint2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/clamp/867397.wgsl.expected.msl b/test/intrinsics/gen/clamp/867397.wgsl.expected.msl
index 6c8eeef..a020584 100644
--- a/test/intrinsics/gen/clamp/867397.wgsl.expected.msl
+++ b/test/intrinsics/gen/clamp/867397.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void clamp_867397() {
-  float3 res =   clamp(float3(), float3(), float3());
+  float3 res = clamp(float3(), float3(), float3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/clamp/a2de25.wgsl.expected.msl b/test/intrinsics/gen/clamp/a2de25.wgsl.expected.msl
index 00bbc2a..1e92fe7 100644
--- a/test/intrinsics/gen/clamp/a2de25.wgsl.expected.msl
+++ b/test/intrinsics/gen/clamp/a2de25.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void clamp_a2de25() {
-  uint res =   clamp(1u, 1u, 1u);
+  uint res = clamp(1u, 1u, 1u);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/clamp/b07c65.wgsl.expected.msl b/test/intrinsics/gen/clamp/b07c65.wgsl.expected.msl
index 15d67e6..f702d9f 100644
--- a/test/intrinsics/gen/clamp/b07c65.wgsl.expected.msl
+++ b/test/intrinsics/gen/clamp/b07c65.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void clamp_b07c65() {
-  int res =   clamp(1, 1, 1);
+  int res = clamp(1, 1, 1);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/clamp/bd43ce.wgsl.expected.msl b/test/intrinsics/gen/clamp/bd43ce.wgsl.expected.msl
index 7e2562c..e774770 100644
--- a/test/intrinsics/gen/clamp/bd43ce.wgsl.expected.msl
+++ b/test/intrinsics/gen/clamp/bd43ce.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void clamp_bd43ce() {
-  uint4 res =   clamp(uint4(), uint4(), uint4());
+  uint4 res = clamp(uint4(), uint4(), uint4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/cos/16dc15.wgsl.expected.msl b/test/intrinsics/gen/cos/16dc15.wgsl.expected.msl
index 4aeac90..083cc8e 100644
--- a/test/intrinsics/gen/cos/16dc15.wgsl.expected.msl
+++ b/test/intrinsics/gen/cos/16dc15.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void cos_16dc15() {
-  float3 res =   cos(float3());
+  float3 res = cos(float3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/cos/29d66d.wgsl.expected.msl b/test/intrinsics/gen/cos/29d66d.wgsl.expected.msl
index 9c74fa2..432218b 100644
--- a/test/intrinsics/gen/cos/29d66d.wgsl.expected.msl
+++ b/test/intrinsics/gen/cos/29d66d.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void cos_29d66d() {
-  float4 res =   cos(float4());
+  float4 res = cos(float4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/cos/c3b486.wgsl.expected.msl b/test/intrinsics/gen/cos/c3b486.wgsl.expected.msl
index fa7aafc..c09cc02 100644
--- a/test/intrinsics/gen/cos/c3b486.wgsl.expected.msl
+++ b/test/intrinsics/gen/cos/c3b486.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void cos_c3b486() {
-  float2 res =   cos(float2());
+  float2 res = cos(float2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/cos/c5c28e.wgsl.expected.msl b/test/intrinsics/gen/cos/c5c28e.wgsl.expected.msl
index 1650815..547bb12 100644
--- a/test/intrinsics/gen/cos/c5c28e.wgsl.expected.msl
+++ b/test/intrinsics/gen/cos/c5c28e.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void cos_c5c28e() {
-  float res =   cos(1.0f);
+  float res = cos(1.0f);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/cosh/377652.wgsl.expected.msl b/test/intrinsics/gen/cosh/377652.wgsl.expected.msl
index f52361f..b9dd371 100644
--- a/test/intrinsics/gen/cosh/377652.wgsl.expected.msl
+++ b/test/intrinsics/gen/cosh/377652.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void cosh_377652() {
-  float3 res =   cosh(float3());
+  float3 res = cosh(float3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/cosh/c13756.wgsl.expected.msl b/test/intrinsics/gen/cosh/c13756.wgsl.expected.msl
index 7cf7bca..1cb1cc9 100644
--- a/test/intrinsics/gen/cosh/c13756.wgsl.expected.msl
+++ b/test/intrinsics/gen/cosh/c13756.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void cosh_c13756() {
-  float2 res =   cosh(float2());
+  float2 res = cosh(float2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/cosh/da92dd.wgsl.expected.msl b/test/intrinsics/gen/cosh/da92dd.wgsl.expected.msl
index 88231f2..9a53964 100644
--- a/test/intrinsics/gen/cosh/da92dd.wgsl.expected.msl
+++ b/test/intrinsics/gen/cosh/da92dd.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void cosh_da92dd() {
-  float res =   cosh(1.0f);
+  float res = cosh(1.0f);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/cosh/e0c1de.wgsl.expected.msl b/test/intrinsics/gen/cosh/e0c1de.wgsl.expected.msl
index 9bc5d43..30c334b 100644
--- a/test/intrinsics/gen/cosh/e0c1de.wgsl.expected.msl
+++ b/test/intrinsics/gen/cosh/e0c1de.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void cosh_e0c1de() {
-  float4 res =   cosh(float4());
+  float4 res = cosh(float4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/countOneBits/0d0e46.wgsl.expected.msl b/test/intrinsics/gen/countOneBits/0d0e46.wgsl.expected.msl
index c08490e..010ad82 100644
--- a/test/intrinsics/gen/countOneBits/0d0e46.wgsl.expected.msl
+++ b/test/intrinsics/gen/countOneBits/0d0e46.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void countOneBits_0d0e46() {
-  uint4 res =   popcount(uint4());
+  uint4 res = popcount(uint4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/countOneBits/0f7980.wgsl.expected.msl b/test/intrinsics/gen/countOneBits/0f7980.wgsl.expected.msl
index 25b509d..78a9670 100644
--- a/test/intrinsics/gen/countOneBits/0f7980.wgsl.expected.msl
+++ b/test/intrinsics/gen/countOneBits/0f7980.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void countOneBits_0f7980() {
-  int4 res =   popcount(int4());
+  int4 res = popcount(int4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/countOneBits/65d2ae.wgsl.expected.msl b/test/intrinsics/gen/countOneBits/65d2ae.wgsl.expected.msl
index aad3dd4..7bb8d1f 100644
--- a/test/intrinsics/gen/countOneBits/65d2ae.wgsl.expected.msl
+++ b/test/intrinsics/gen/countOneBits/65d2ae.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void countOneBits_65d2ae() {
-  int3 res =   popcount(int3());
+  int3 res = popcount(int3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/countOneBits/690cfc.wgsl.expected.msl b/test/intrinsics/gen/countOneBits/690cfc.wgsl.expected.msl
index 1ead1f9..3790052 100644
--- a/test/intrinsics/gen/countOneBits/690cfc.wgsl.expected.msl
+++ b/test/intrinsics/gen/countOneBits/690cfc.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void countOneBits_690cfc() {
-  uint3 res =   popcount(uint3());
+  uint3 res = popcount(uint3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/countOneBits/94fd81.wgsl.expected.msl b/test/intrinsics/gen/countOneBits/94fd81.wgsl.expected.msl
index 57d94f3..6648c06 100644
--- a/test/intrinsics/gen/countOneBits/94fd81.wgsl.expected.msl
+++ b/test/intrinsics/gen/countOneBits/94fd81.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void countOneBits_94fd81() {
-  uint2 res =   popcount(uint2());
+  uint2 res = popcount(uint2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/countOneBits/ae44f9.wgsl.expected.msl b/test/intrinsics/gen/countOneBits/ae44f9.wgsl.expected.msl
index 8626141..94e43c8 100644
--- a/test/intrinsics/gen/countOneBits/ae44f9.wgsl.expected.msl
+++ b/test/intrinsics/gen/countOneBits/ae44f9.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void countOneBits_ae44f9() {
-  uint res =   popcount(1u);
+  uint res = popcount(1u);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/countOneBits/af90e2.wgsl.expected.msl b/test/intrinsics/gen/countOneBits/af90e2.wgsl.expected.msl
index 3aeaa26..5b4944e 100644
--- a/test/intrinsics/gen/countOneBits/af90e2.wgsl.expected.msl
+++ b/test/intrinsics/gen/countOneBits/af90e2.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void countOneBits_af90e2() {
-  int2 res =   popcount(int2());
+  int2 res = popcount(int2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/countOneBits/fd88b2.wgsl.expected.msl b/test/intrinsics/gen/countOneBits/fd88b2.wgsl.expected.msl
index 7002fce..74a0621 100644
--- a/test/intrinsics/gen/countOneBits/fd88b2.wgsl.expected.msl
+++ b/test/intrinsics/gen/countOneBits/fd88b2.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void countOneBits_fd88b2() {
-  int res =   popcount(1);
+  int res = popcount(1);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/cross/041cb0.wgsl.expected.msl b/test/intrinsics/gen/cross/041cb0.wgsl.expected.msl
index a70d5f1..0b0432b 100644
--- a/test/intrinsics/gen/cross/041cb0.wgsl.expected.msl
+++ b/test/intrinsics/gen/cross/041cb0.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void cross_041cb0() {
-  float3 res =   cross(float3(), float3());
+  float3 res = cross(float3(), float3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/determinant/2b62ba.wgsl.expected.msl b/test/intrinsics/gen/determinant/2b62ba.wgsl.expected.msl
index d3fd820..aa4fabf 100644
--- a/test/intrinsics/gen/determinant/2b62ba.wgsl.expected.msl
+++ b/test/intrinsics/gen/determinant/2b62ba.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void determinant_2b62ba() {
-  float res =   determinant(float3x3());
+  float res = determinant(float3x3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/determinant/a0a87c.wgsl.expected.msl b/test/intrinsics/gen/determinant/a0a87c.wgsl.expected.msl
index c53e2bd..188a9d3 100644
--- a/test/intrinsics/gen/determinant/a0a87c.wgsl.expected.msl
+++ b/test/intrinsics/gen/determinant/a0a87c.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void determinant_a0a87c() {
-  float res =   determinant(float4x4());
+  float res = determinant(float4x4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/determinant/e19305.wgsl.expected.msl b/test/intrinsics/gen/determinant/e19305.wgsl.expected.msl
index 025f871..c902c38 100644
--- a/test/intrinsics/gen/determinant/e19305.wgsl.expected.msl
+++ b/test/intrinsics/gen/determinant/e19305.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void determinant_e19305() {
-  float res =   determinant(float2x2());
+  float res = determinant(float2x2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/distance/0657d4.wgsl.expected.msl b/test/intrinsics/gen/distance/0657d4.wgsl.expected.msl
index a1f835f..3c80f04 100644
--- a/test/intrinsics/gen/distance/0657d4.wgsl.expected.msl
+++ b/test/intrinsics/gen/distance/0657d4.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void distance_0657d4() {
-  float res =   distance(float3(), float3());
+  float res = distance(float3(), float3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/distance/9646ea.wgsl.expected.msl b/test/intrinsics/gen/distance/9646ea.wgsl.expected.msl
index 6b6b77e..b9690c3 100644
--- a/test/intrinsics/gen/distance/9646ea.wgsl.expected.msl
+++ b/test/intrinsics/gen/distance/9646ea.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void distance_9646ea() {
-  float res =   distance(float4(), float4());
+  float res = distance(float4(), float4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/distance/aa4055.wgsl.expected.msl b/test/intrinsics/gen/distance/aa4055.wgsl.expected.msl
index bf66f8e..ae20aaa 100644
--- a/test/intrinsics/gen/distance/aa4055.wgsl.expected.msl
+++ b/test/intrinsics/gen/distance/aa4055.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void distance_aa4055() {
-  float res =   distance(float2(), float2());
+  float res = distance(float2(), float2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/dot/0c577b.wgsl.expected.msl b/test/intrinsics/gen/dot/0c577b.wgsl.expected.msl
index 4ed2419..c354cf7 100644
--- a/test/intrinsics/gen/dot/0c577b.wgsl.expected.msl
+++ b/test/intrinsics/gen/dot/0c577b.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void dot_0c577b() {
-  float res =   dot(float4(), float4());
+  float res = dot(float4(), float4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/dot/883f0e.wgsl.expected.msl b/test/intrinsics/gen/dot/883f0e.wgsl.expected.msl
index 4326cad..f099d39 100644
--- a/test/intrinsics/gen/dot/883f0e.wgsl.expected.msl
+++ b/test/intrinsics/gen/dot/883f0e.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void dot_883f0e() {
-  float res =   dot(float2(), float2());
+  float res = dot(float2(), float2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/dot/ba4246.wgsl.expected.msl b/test/intrinsics/gen/dot/ba4246.wgsl.expected.msl
index ff18b2d..b67deb5 100644
--- a/test/intrinsics/gen/dot/ba4246.wgsl.expected.msl
+++ b/test/intrinsics/gen/dot/ba4246.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void dot_ba4246() {
-  float res =   dot(float3(), float3());
+  float res = dot(float3(), float3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/dpdx/0763f7.wgsl.expected.msl b/test/intrinsics/gen/dpdx/0763f7.wgsl.expected.msl
index 082d924..a7719d7 100644
--- a/test/intrinsics/gen/dpdx/0763f7.wgsl.expected.msl
+++ b/test/intrinsics/gen/dpdx/0763f7.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void dpdx_0763f7() {
-  float3 res =   dfdx(float3());
+  float3 res = dfdx(float3());
 }
 
 fragment void fragment_main() {
diff --git a/test/intrinsics/gen/dpdx/99edb1.wgsl.expected.msl b/test/intrinsics/gen/dpdx/99edb1.wgsl.expected.msl
index 1c389c8..c158382 100644
--- a/test/intrinsics/gen/dpdx/99edb1.wgsl.expected.msl
+++ b/test/intrinsics/gen/dpdx/99edb1.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void dpdx_99edb1() {
-  float2 res =   dfdx(float2());
+  float2 res = dfdx(float2());
 }
 
 fragment void fragment_main() {
diff --git a/test/intrinsics/gen/dpdx/c487fa.wgsl.expected.msl b/test/intrinsics/gen/dpdx/c487fa.wgsl.expected.msl
index 06e584f..bb43c52 100644
--- a/test/intrinsics/gen/dpdx/c487fa.wgsl.expected.msl
+++ b/test/intrinsics/gen/dpdx/c487fa.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void dpdx_c487fa() {
-  float4 res =   dfdx(float4());
+  float4 res = dfdx(float4());
 }
 
 fragment void fragment_main() {
diff --git a/test/intrinsics/gen/dpdx/e263de.wgsl.expected.msl b/test/intrinsics/gen/dpdx/e263de.wgsl.expected.msl
index 9a63d08..69792e1 100644
--- a/test/intrinsics/gen/dpdx/e263de.wgsl.expected.msl
+++ b/test/intrinsics/gen/dpdx/e263de.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void dpdx_e263de() {
-  float res =   dfdx(1.0f);
+  float res = dfdx(1.0f);
 }
 
 fragment void fragment_main() {
diff --git a/test/intrinsics/gen/dpdxCoarse/029152.wgsl.expected.msl b/test/intrinsics/gen/dpdxCoarse/029152.wgsl.expected.msl
index fc27f74..b566d55 100644
--- a/test/intrinsics/gen/dpdxCoarse/029152.wgsl.expected.msl
+++ b/test/intrinsics/gen/dpdxCoarse/029152.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void dpdxCoarse_029152() {
-  float res =   dfdx(1.0f);
+  float res = dfdx(1.0f);
 }
 
 fragment void fragment_main() {
diff --git a/test/intrinsics/gen/dpdxCoarse/9581cf.wgsl.expected.msl b/test/intrinsics/gen/dpdxCoarse/9581cf.wgsl.expected.msl
index 283a082..8bbf1ac 100644
--- a/test/intrinsics/gen/dpdxCoarse/9581cf.wgsl.expected.msl
+++ b/test/intrinsics/gen/dpdxCoarse/9581cf.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void dpdxCoarse_9581cf() {
-  float2 res =   dfdx(float2());
+  float2 res = dfdx(float2());
 }
 
 fragment void fragment_main() {
diff --git a/test/intrinsics/gen/dpdxCoarse/c28641.wgsl.expected.msl b/test/intrinsics/gen/dpdxCoarse/c28641.wgsl.expected.msl
index 7134062..62b43ef 100644
--- a/test/intrinsics/gen/dpdxCoarse/c28641.wgsl.expected.msl
+++ b/test/intrinsics/gen/dpdxCoarse/c28641.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void dpdxCoarse_c28641() {
-  float4 res =   dfdx(float4());
+  float4 res = dfdx(float4());
 }
 
 fragment void fragment_main() {
diff --git a/test/intrinsics/gen/dpdxCoarse/f64d7b.wgsl.expected.msl b/test/intrinsics/gen/dpdxCoarse/f64d7b.wgsl.expected.msl
index e04364e..8c4d038 100644
--- a/test/intrinsics/gen/dpdxCoarse/f64d7b.wgsl.expected.msl
+++ b/test/intrinsics/gen/dpdxCoarse/f64d7b.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void dpdxCoarse_f64d7b() {
-  float3 res =   dfdx(float3());
+  float3 res = dfdx(float3());
 }
 
 fragment void fragment_main() {
diff --git a/test/intrinsics/gen/dpdxFine/8c5069.wgsl.expected.msl b/test/intrinsics/gen/dpdxFine/8c5069.wgsl.expected.msl
index c4a18ed..6b2bc94 100644
--- a/test/intrinsics/gen/dpdxFine/8c5069.wgsl.expected.msl
+++ b/test/intrinsics/gen/dpdxFine/8c5069.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void dpdxFine_8c5069() {
-  float4 res =   dfdx(float4());
+  float4 res = dfdx(float4());
 }
 
 fragment void fragment_main() {
diff --git a/test/intrinsics/gen/dpdxFine/9631de.wgsl.expected.msl b/test/intrinsics/gen/dpdxFine/9631de.wgsl.expected.msl
index be6ed51..60055fb 100644
--- a/test/intrinsics/gen/dpdxFine/9631de.wgsl.expected.msl
+++ b/test/intrinsics/gen/dpdxFine/9631de.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void dpdxFine_9631de() {
-  float2 res =   dfdx(float2());
+  float2 res = dfdx(float2());
 }
 
 fragment void fragment_main() {
diff --git a/test/intrinsics/gen/dpdxFine/f401a2.wgsl.expected.msl b/test/intrinsics/gen/dpdxFine/f401a2.wgsl.expected.msl
index b618db9..26f6c10 100644
--- a/test/intrinsics/gen/dpdxFine/f401a2.wgsl.expected.msl
+++ b/test/intrinsics/gen/dpdxFine/f401a2.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void dpdxFine_f401a2() {
-  float res =   dfdx(1.0f);
+  float res = dfdx(1.0f);
 }
 
 fragment void fragment_main() {
diff --git a/test/intrinsics/gen/dpdxFine/f92fb6.wgsl.expected.msl b/test/intrinsics/gen/dpdxFine/f92fb6.wgsl.expected.msl
index f19db09..8149873 100644
--- a/test/intrinsics/gen/dpdxFine/f92fb6.wgsl.expected.msl
+++ b/test/intrinsics/gen/dpdxFine/f92fb6.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void dpdxFine_f92fb6() {
-  float3 res =   dfdx(float3());
+  float3 res = dfdx(float3());
 }
 
 fragment void fragment_main() {
diff --git a/test/intrinsics/gen/dpdy/699a05.wgsl.expected.msl b/test/intrinsics/gen/dpdy/699a05.wgsl.expected.msl
index 9a2a776..f996365 100644
--- a/test/intrinsics/gen/dpdy/699a05.wgsl.expected.msl
+++ b/test/intrinsics/gen/dpdy/699a05.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void dpdy_699a05() {
-  float4 res =   dfdy(float4());
+  float4 res = dfdy(float4());
 }
 
 fragment void fragment_main() {
diff --git a/test/intrinsics/gen/dpdy/7f8d84.wgsl.expected.msl b/test/intrinsics/gen/dpdy/7f8d84.wgsl.expected.msl
index 5efaf9e..d4f274e 100644
--- a/test/intrinsics/gen/dpdy/7f8d84.wgsl.expected.msl
+++ b/test/intrinsics/gen/dpdy/7f8d84.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void dpdy_7f8d84() {
-  float res =   dfdy(1.0f);
+  float res = dfdy(1.0f);
 }
 
 fragment void fragment_main() {
diff --git a/test/intrinsics/gen/dpdy/a8b56e.wgsl.expected.msl b/test/intrinsics/gen/dpdy/a8b56e.wgsl.expected.msl
index 74fa551..98a29ea 100644
--- a/test/intrinsics/gen/dpdy/a8b56e.wgsl.expected.msl
+++ b/test/intrinsics/gen/dpdy/a8b56e.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void dpdy_a8b56e() {
-  float2 res =   dfdy(float2());
+  float2 res = dfdy(float2());
 }
 
 fragment void fragment_main() {
diff --git a/test/intrinsics/gen/dpdy/feb40f.wgsl.expected.msl b/test/intrinsics/gen/dpdy/feb40f.wgsl.expected.msl
index 5c4fdf7..d0236ba 100644
--- a/test/intrinsics/gen/dpdy/feb40f.wgsl.expected.msl
+++ b/test/intrinsics/gen/dpdy/feb40f.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void dpdy_feb40f() {
-  float3 res =   dfdy(float3());
+  float3 res = dfdy(float3());
 }
 
 fragment void fragment_main() {
diff --git a/test/intrinsics/gen/dpdyCoarse/3e1ab4.wgsl.expected.msl b/test/intrinsics/gen/dpdyCoarse/3e1ab4.wgsl.expected.msl
index 55be7be..83cceec 100644
--- a/test/intrinsics/gen/dpdyCoarse/3e1ab4.wgsl.expected.msl
+++ b/test/intrinsics/gen/dpdyCoarse/3e1ab4.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void dpdyCoarse_3e1ab4() {
-  float2 res =   dfdy(float2());
+  float2 res = dfdy(float2());
 }
 
 fragment void fragment_main() {
diff --git a/test/intrinsics/gen/dpdyCoarse/445d24.wgsl.expected.msl b/test/intrinsics/gen/dpdyCoarse/445d24.wgsl.expected.msl
index 32038dd..cbc5f50 100644
--- a/test/intrinsics/gen/dpdyCoarse/445d24.wgsl.expected.msl
+++ b/test/intrinsics/gen/dpdyCoarse/445d24.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void dpdyCoarse_445d24() {
-  float4 res =   dfdy(float4());
+  float4 res = dfdy(float4());
 }
 
 fragment void fragment_main() {
diff --git a/test/intrinsics/gen/dpdyCoarse/870a7e.wgsl.expected.msl b/test/intrinsics/gen/dpdyCoarse/870a7e.wgsl.expected.msl
index 42c9c5d..f77b122 100644
--- a/test/intrinsics/gen/dpdyCoarse/870a7e.wgsl.expected.msl
+++ b/test/intrinsics/gen/dpdyCoarse/870a7e.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void dpdyCoarse_870a7e() {
-  float res =   dfdy(1.0f);
+  float res = dfdy(1.0f);
 }
 
 fragment void fragment_main() {
diff --git a/test/intrinsics/gen/dpdyCoarse/ae1873.wgsl.expected.msl b/test/intrinsics/gen/dpdyCoarse/ae1873.wgsl.expected.msl
index 9f1ea7f..048ceee 100644
--- a/test/intrinsics/gen/dpdyCoarse/ae1873.wgsl.expected.msl
+++ b/test/intrinsics/gen/dpdyCoarse/ae1873.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void dpdyCoarse_ae1873() {
-  float3 res =   dfdy(float3());
+  float3 res = dfdy(float3());
 }
 
 fragment void fragment_main() {
diff --git a/test/intrinsics/gen/dpdyFine/1fb7ab.wgsl.expected.msl b/test/intrinsics/gen/dpdyFine/1fb7ab.wgsl.expected.msl
index bc48a42..cfbdf5d 100644
--- a/test/intrinsics/gen/dpdyFine/1fb7ab.wgsl.expected.msl
+++ b/test/intrinsics/gen/dpdyFine/1fb7ab.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void dpdyFine_1fb7ab() {
-  float3 res =   dfdy(float3());
+  float3 res = dfdy(float3());
 }
 
 fragment void fragment_main() {
diff --git a/test/intrinsics/gen/dpdyFine/6eb673.wgsl.expected.msl b/test/intrinsics/gen/dpdyFine/6eb673.wgsl.expected.msl
index a30960e..38d8c93 100644
--- a/test/intrinsics/gen/dpdyFine/6eb673.wgsl.expected.msl
+++ b/test/intrinsics/gen/dpdyFine/6eb673.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void dpdyFine_6eb673() {
-  float res =   dfdy(1.0f);
+  float res = dfdy(1.0f);
 }
 
 fragment void fragment_main() {
diff --git a/test/intrinsics/gen/dpdyFine/d0a648.wgsl.expected.msl b/test/intrinsics/gen/dpdyFine/d0a648.wgsl.expected.msl
index 93ecdf6..b728bff 100644
--- a/test/intrinsics/gen/dpdyFine/d0a648.wgsl.expected.msl
+++ b/test/intrinsics/gen/dpdyFine/d0a648.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void dpdyFine_d0a648() {
-  float4 res =   dfdy(float4());
+  float4 res = dfdy(float4());
 }
 
 fragment void fragment_main() {
diff --git a/test/intrinsics/gen/dpdyFine/df33aa.wgsl.expected.msl b/test/intrinsics/gen/dpdyFine/df33aa.wgsl.expected.msl
index a8dcab8..a2e88c9 100644
--- a/test/intrinsics/gen/dpdyFine/df33aa.wgsl.expected.msl
+++ b/test/intrinsics/gen/dpdyFine/df33aa.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void dpdyFine_df33aa() {
-  float2 res =   dfdy(float2());
+  float2 res = dfdy(float2());
 }
 
 fragment void fragment_main() {
diff --git a/test/intrinsics/gen/exp/0f70eb.wgsl.expected.msl b/test/intrinsics/gen/exp/0f70eb.wgsl.expected.msl
index 53549b7..022ea5d 100644
--- a/test/intrinsics/gen/exp/0f70eb.wgsl.expected.msl
+++ b/test/intrinsics/gen/exp/0f70eb.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void exp_0f70eb() {
-  float4 res =   exp(float4());
+  float4 res = exp(float4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/exp/1951e7.wgsl.expected.msl b/test/intrinsics/gen/exp/1951e7.wgsl.expected.msl
index 726f80d..2123f97 100644
--- a/test/intrinsics/gen/exp/1951e7.wgsl.expected.msl
+++ b/test/intrinsics/gen/exp/1951e7.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void exp_1951e7() {
-  float2 res =   exp(float2());
+  float2 res = exp(float2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/exp/771fd2.wgsl.expected.msl b/test/intrinsics/gen/exp/771fd2.wgsl.expected.msl
index 0a161db..345a5f8 100644
--- a/test/intrinsics/gen/exp/771fd2.wgsl.expected.msl
+++ b/test/intrinsics/gen/exp/771fd2.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void exp_771fd2() {
-  float res =   exp(1.0f);
+  float res = exp(1.0f);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/exp/d98450.wgsl.expected.msl b/test/intrinsics/gen/exp/d98450.wgsl.expected.msl
index 1ec8727..073deec 100644
--- a/test/intrinsics/gen/exp/d98450.wgsl.expected.msl
+++ b/test/intrinsics/gen/exp/d98450.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void exp_d98450() {
-  float3 res =   exp(float3());
+  float3 res = exp(float3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/exp2/1f8680.wgsl.expected.msl b/test/intrinsics/gen/exp2/1f8680.wgsl.expected.msl
index 057b984..4929bd0 100644
--- a/test/intrinsics/gen/exp2/1f8680.wgsl.expected.msl
+++ b/test/intrinsics/gen/exp2/1f8680.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void exp2_1f8680() {
-  float3 res =   exp2(float3());
+  float3 res = exp2(float3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/exp2/a9d0a7.wgsl.expected.msl b/test/intrinsics/gen/exp2/a9d0a7.wgsl.expected.msl
index ed2faac..d727ef8 100644
--- a/test/intrinsics/gen/exp2/a9d0a7.wgsl.expected.msl
+++ b/test/intrinsics/gen/exp2/a9d0a7.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void exp2_a9d0a7() {
-  float4 res =   exp2(float4());
+  float4 res = exp2(float4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/exp2/d6777c.wgsl.expected.msl b/test/intrinsics/gen/exp2/d6777c.wgsl.expected.msl
index 6149c4d..71e0186 100644
--- a/test/intrinsics/gen/exp2/d6777c.wgsl.expected.msl
+++ b/test/intrinsics/gen/exp2/d6777c.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void exp2_d6777c() {
-  float2 res =   exp2(float2());
+  float2 res = exp2(float2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/exp2/dea523.wgsl.expected.msl b/test/intrinsics/gen/exp2/dea523.wgsl.expected.msl
index 491945c..7eba951 100644
--- a/test/intrinsics/gen/exp2/dea523.wgsl.expected.msl
+++ b/test/intrinsics/gen/exp2/dea523.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void exp2_dea523() {
-  float res =   exp2(1.0f);
+  float res = exp2(1.0f);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/faceForward/5afbd5.wgsl.expected.msl b/test/intrinsics/gen/faceForward/5afbd5.wgsl.expected.msl
index fcd07b6..8e29e89 100644
--- a/test/intrinsics/gen/faceForward/5afbd5.wgsl.expected.msl
+++ b/test/intrinsics/gen/faceForward/5afbd5.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void faceForward_5afbd5() {
-  float3 res =   faceforward(float3(), float3(), float3());
+  float3 res = faceforward(float3(), float3(), float3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/faceForward/b316e5.wgsl.expected.msl b/test/intrinsics/gen/faceForward/b316e5.wgsl.expected.msl
index 1048b00..1ca663a 100644
--- a/test/intrinsics/gen/faceForward/b316e5.wgsl.expected.msl
+++ b/test/intrinsics/gen/faceForward/b316e5.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void faceForward_b316e5() {
-  float4 res =   faceforward(float4(), float4(), float4());
+  float4 res = faceforward(float4(), float4(), float4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/faceForward/e6908b.wgsl.expected.msl b/test/intrinsics/gen/faceForward/e6908b.wgsl.expected.msl
index ca8e6ef..0136e3a 100644
--- a/test/intrinsics/gen/faceForward/e6908b.wgsl.expected.msl
+++ b/test/intrinsics/gen/faceForward/e6908b.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void faceForward_e6908b() {
-  float2 res =   faceforward(float2(), float2(), float2());
+  float2 res = faceforward(float2(), float2(), float2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/floor/3bccc4.wgsl.expected.msl b/test/intrinsics/gen/floor/3bccc4.wgsl.expected.msl
index 7802674..50ec31e 100644
--- a/test/intrinsics/gen/floor/3bccc4.wgsl.expected.msl
+++ b/test/intrinsics/gen/floor/3bccc4.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void floor_3bccc4() {
-  float4 res =   floor(float4());
+  float4 res = floor(float4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/floor/5fc9ac.wgsl.expected.msl b/test/intrinsics/gen/floor/5fc9ac.wgsl.expected.msl
index 36b78f8..f50587a 100644
--- a/test/intrinsics/gen/floor/5fc9ac.wgsl.expected.msl
+++ b/test/intrinsics/gen/floor/5fc9ac.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void floor_5fc9ac() {
-  float2 res =   floor(float2());
+  float2 res = floor(float2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/floor/60d7ea.wgsl.expected.msl b/test/intrinsics/gen/floor/60d7ea.wgsl.expected.msl
index 95b42aa..8ed07d4 100644
--- a/test/intrinsics/gen/floor/60d7ea.wgsl.expected.msl
+++ b/test/intrinsics/gen/floor/60d7ea.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void floor_60d7ea() {
-  float3 res =   floor(float3());
+  float3 res = floor(float3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/floor/66f154.wgsl.expected.msl b/test/intrinsics/gen/floor/66f154.wgsl.expected.msl
index c93a90e..a5b9f9d 100644
--- a/test/intrinsics/gen/floor/66f154.wgsl.expected.msl
+++ b/test/intrinsics/gen/floor/66f154.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void floor_66f154() {
-  float res =   floor(1.0f);
+  float res = floor(1.0f);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/fma/26a7a9.wgsl.expected.msl b/test/intrinsics/gen/fma/26a7a9.wgsl.expected.msl
index 2acc8ac..f9349e9 100644
--- a/test/intrinsics/gen/fma/26a7a9.wgsl.expected.msl
+++ b/test/intrinsics/gen/fma/26a7a9.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void fma_26a7a9() {
-  float2 res =   fma(float2(), float2(), float2());
+  float2 res = fma(float2(), float2(), float2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/fma/6a3283.wgsl.expected.msl b/test/intrinsics/gen/fma/6a3283.wgsl.expected.msl
index 962630d..f964054 100644
--- a/test/intrinsics/gen/fma/6a3283.wgsl.expected.msl
+++ b/test/intrinsics/gen/fma/6a3283.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void fma_6a3283() {
-  float4 res =   fma(float4(), float4(), float4());
+  float4 res = fma(float4(), float4(), float4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/fma/c10ba3.wgsl.expected.msl b/test/intrinsics/gen/fma/c10ba3.wgsl.expected.msl
index b0409f3..0f9a195 100644
--- a/test/intrinsics/gen/fma/c10ba3.wgsl.expected.msl
+++ b/test/intrinsics/gen/fma/c10ba3.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void fma_c10ba3() {
-  float res =   fma(1.0f, 1.0f, 1.0f);
+  float res = fma(1.0f, 1.0f, 1.0f);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/fma/e17c5c.wgsl.expected.msl b/test/intrinsics/gen/fma/e17c5c.wgsl.expected.msl
index c40dff0..e606075 100644
--- a/test/intrinsics/gen/fma/e17c5c.wgsl.expected.msl
+++ b/test/intrinsics/gen/fma/e17c5c.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void fma_e17c5c() {
-  float3 res =   fma(float3(), float3(), float3());
+  float3 res = fma(float3(), float3(), float3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/fract/8bc1e9.wgsl.expected.msl b/test/intrinsics/gen/fract/8bc1e9.wgsl.expected.msl
index d4d52b2..b786696 100644
--- a/test/intrinsics/gen/fract/8bc1e9.wgsl.expected.msl
+++ b/test/intrinsics/gen/fract/8bc1e9.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void fract_8bc1e9() {
-  float4 res =   fract(float4());
+  float4 res = fract(float4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/fract/943cb1.wgsl.expected.msl b/test/intrinsics/gen/fract/943cb1.wgsl.expected.msl
index 1c89583..c8596ab 100644
--- a/test/intrinsics/gen/fract/943cb1.wgsl.expected.msl
+++ b/test/intrinsics/gen/fract/943cb1.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void fract_943cb1() {
-  float2 res =   fract(float2());
+  float2 res = fract(float2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/fract/a49758.wgsl.expected.msl b/test/intrinsics/gen/fract/a49758.wgsl.expected.msl
index 400fc0a..1dbebec 100644
--- a/test/intrinsics/gen/fract/a49758.wgsl.expected.msl
+++ b/test/intrinsics/gen/fract/a49758.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void fract_a49758() {
-  float3 res =   fract(float3());
+  float3 res = fract(float3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/fract/fa5c71.wgsl.expected.msl b/test/intrinsics/gen/fract/fa5c71.wgsl.expected.msl
index 5d6f2fc..03f3ed2 100644
--- a/test/intrinsics/gen/fract/fa5c71.wgsl.expected.msl
+++ b/test/intrinsics/gen/fract/fa5c71.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void fract_fa5c71() {
-  float res =   fract(1.0f);
+  float res = fract(1.0f);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/fwidth/5d1b39.wgsl.expected.msl b/test/intrinsics/gen/fwidth/5d1b39.wgsl.expected.msl
index 28a57ce..671ca48 100644
--- a/test/intrinsics/gen/fwidth/5d1b39.wgsl.expected.msl
+++ b/test/intrinsics/gen/fwidth/5d1b39.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void fwidth_5d1b39() {
-  float3 res =   fwidth(float3());
+  float3 res = fwidth(float3());
 }
 
 fragment void fragment_main() {
diff --git a/test/intrinsics/gen/fwidth/b83ebb.wgsl.expected.msl b/test/intrinsics/gen/fwidth/b83ebb.wgsl.expected.msl
index 303cfba..2dce76c 100644
--- a/test/intrinsics/gen/fwidth/b83ebb.wgsl.expected.msl
+++ b/test/intrinsics/gen/fwidth/b83ebb.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void fwidth_b83ebb() {
-  float2 res =   fwidth(float2());
+  float2 res = fwidth(float2());
 }
 
 fragment void fragment_main() {
diff --git a/test/intrinsics/gen/fwidth/d2ab9a.wgsl.expected.msl b/test/intrinsics/gen/fwidth/d2ab9a.wgsl.expected.msl
index 16b46fc..076783c 100644
--- a/test/intrinsics/gen/fwidth/d2ab9a.wgsl.expected.msl
+++ b/test/intrinsics/gen/fwidth/d2ab9a.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void fwidth_d2ab9a() {
-  float4 res =   fwidth(float4());
+  float4 res = fwidth(float4());
 }
 
 fragment void fragment_main() {
diff --git a/test/intrinsics/gen/fwidth/df38ef.wgsl.expected.msl b/test/intrinsics/gen/fwidth/df38ef.wgsl.expected.msl
index 21b2f40..3af325a 100644
--- a/test/intrinsics/gen/fwidth/df38ef.wgsl.expected.msl
+++ b/test/intrinsics/gen/fwidth/df38ef.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void fwidth_df38ef() {
-  float res =   fwidth(1.0f);
+  float res = fwidth(1.0f);
 }
 
 fragment void fragment_main() {
diff --git a/test/intrinsics/gen/fwidthCoarse/159c8a.wgsl.expected.msl b/test/intrinsics/gen/fwidthCoarse/159c8a.wgsl.expected.msl
index 82190f3..31ad6a1 100644
--- a/test/intrinsics/gen/fwidthCoarse/159c8a.wgsl.expected.msl
+++ b/test/intrinsics/gen/fwidthCoarse/159c8a.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void fwidthCoarse_159c8a() {
-  float res =   fwidth(1.0f);
+  float res = fwidth(1.0f);
 }
 
 fragment void fragment_main() {
diff --git a/test/intrinsics/gen/fwidthCoarse/1e59d9.wgsl.expected.msl b/test/intrinsics/gen/fwidthCoarse/1e59d9.wgsl.expected.msl
index 621c237..b2f9f1e 100644
--- a/test/intrinsics/gen/fwidthCoarse/1e59d9.wgsl.expected.msl
+++ b/test/intrinsics/gen/fwidthCoarse/1e59d9.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void fwidthCoarse_1e59d9() {
-  float3 res =   fwidth(float3());
+  float3 res = fwidth(float3());
 }
 
 fragment void fragment_main() {
diff --git a/test/intrinsics/gen/fwidthCoarse/4e4fc4.wgsl.expected.msl b/test/intrinsics/gen/fwidthCoarse/4e4fc4.wgsl.expected.msl
index 29dba71..88298dd 100644
--- a/test/intrinsics/gen/fwidthCoarse/4e4fc4.wgsl.expected.msl
+++ b/test/intrinsics/gen/fwidthCoarse/4e4fc4.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void fwidthCoarse_4e4fc4() {
-  float4 res =   fwidth(float4());
+  float4 res = fwidth(float4());
 }
 
 fragment void fragment_main() {
diff --git a/test/intrinsics/gen/fwidthCoarse/e653f7.wgsl.expected.msl b/test/intrinsics/gen/fwidthCoarse/e653f7.wgsl.expected.msl
index cfd9703..63409de 100644
--- a/test/intrinsics/gen/fwidthCoarse/e653f7.wgsl.expected.msl
+++ b/test/intrinsics/gen/fwidthCoarse/e653f7.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void fwidthCoarse_e653f7() {
-  float2 res =   fwidth(float2());
+  float2 res = fwidth(float2());
 }
 
 fragment void fragment_main() {
diff --git a/test/intrinsics/gen/fwidthFine/523fdc.wgsl.expected.msl b/test/intrinsics/gen/fwidthFine/523fdc.wgsl.expected.msl
index aa1d73d..ba43d3c 100644
--- a/test/intrinsics/gen/fwidthFine/523fdc.wgsl.expected.msl
+++ b/test/intrinsics/gen/fwidthFine/523fdc.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void fwidthFine_523fdc() {
-  float3 res =   fwidth(float3());
+  float3 res = fwidth(float3());
 }
 
 fragment void fragment_main() {
diff --git a/test/intrinsics/gen/fwidthFine/68f4ef.wgsl.expected.msl b/test/intrinsics/gen/fwidthFine/68f4ef.wgsl.expected.msl
index b7c53d9..7d756f8 100644
--- a/test/intrinsics/gen/fwidthFine/68f4ef.wgsl.expected.msl
+++ b/test/intrinsics/gen/fwidthFine/68f4ef.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void fwidthFine_68f4ef() {
-  float4 res =   fwidth(float4());
+  float4 res = fwidth(float4());
 }
 
 fragment void fragment_main() {
diff --git a/test/intrinsics/gen/fwidthFine/f1742d.wgsl.expected.msl b/test/intrinsics/gen/fwidthFine/f1742d.wgsl.expected.msl
index 5a98fd6..33102d3 100644
--- a/test/intrinsics/gen/fwidthFine/f1742d.wgsl.expected.msl
+++ b/test/intrinsics/gen/fwidthFine/f1742d.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void fwidthFine_f1742d() {
-  float res =   fwidth(1.0f);
+  float res = fwidth(1.0f);
 }
 
 fragment void fragment_main() {
diff --git a/test/intrinsics/gen/fwidthFine/ff6aa0.wgsl.expected.msl b/test/intrinsics/gen/fwidthFine/ff6aa0.wgsl.expected.msl
index 7ebd710..b7225af 100644
--- a/test/intrinsics/gen/fwidthFine/ff6aa0.wgsl.expected.msl
+++ b/test/intrinsics/gen/fwidthFine/ff6aa0.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void fwidthFine_ff6aa0() {
-  float2 res =   fwidth(float2());
+  float2 res = fwidth(float2());
 }
 
 fragment void fragment_main() {
diff --git a/test/intrinsics/gen/inverseSqrt/84407e.wgsl.expected.msl b/test/intrinsics/gen/inverseSqrt/84407e.wgsl.expected.msl
index 0ff2cd0..07861bc 100644
--- a/test/intrinsics/gen/inverseSqrt/84407e.wgsl.expected.msl
+++ b/test/intrinsics/gen/inverseSqrt/84407e.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void inverseSqrt_84407e() {
-  float res =   rsqrt(1.0f);
+  float res = rsqrt(1.0f);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/inverseSqrt/8f2bd2.wgsl.expected.msl b/test/intrinsics/gen/inverseSqrt/8f2bd2.wgsl.expected.msl
index beeb2cb..fdc64f9 100644
--- a/test/intrinsics/gen/inverseSqrt/8f2bd2.wgsl.expected.msl
+++ b/test/intrinsics/gen/inverseSqrt/8f2bd2.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void inverseSqrt_8f2bd2() {
-  float2 res =   rsqrt(float2());
+  float2 res = rsqrt(float2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/inverseSqrt/b197b1.wgsl.expected.msl b/test/intrinsics/gen/inverseSqrt/b197b1.wgsl.expected.msl
index da0d971..65ebe3a 100644
--- a/test/intrinsics/gen/inverseSqrt/b197b1.wgsl.expected.msl
+++ b/test/intrinsics/gen/inverseSqrt/b197b1.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void inverseSqrt_b197b1() {
-  float3 res =   rsqrt(float3());
+  float3 res = rsqrt(float3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/inverseSqrt/c22347.wgsl.expected.msl b/test/intrinsics/gen/inverseSqrt/c22347.wgsl.expected.msl
index 07deeaad..891de7e 100644
--- a/test/intrinsics/gen/inverseSqrt/c22347.wgsl.expected.msl
+++ b/test/intrinsics/gen/inverseSqrt/c22347.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void inverseSqrt_c22347() {
-  float4 res =   rsqrt(float4());
+  float4 res = rsqrt(float4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/isFinite/34d32b.wgsl.expected.msl b/test/intrinsics/gen/isFinite/34d32b.wgsl.expected.msl
index be2ba66..d6adc3b 100644
--- a/test/intrinsics/gen/isFinite/34d32b.wgsl.expected.msl
+++ b/test/intrinsics/gen/isFinite/34d32b.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void isFinite_34d32b() {
-  bool2 res =   isfinite(float2());
+  bool2 res = isfinite(float2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/isFinite/426f9f.wgsl.expected.msl b/test/intrinsics/gen/isFinite/426f9f.wgsl.expected.msl
index fc6d588..7b88dba 100644
--- a/test/intrinsics/gen/isFinite/426f9f.wgsl.expected.msl
+++ b/test/intrinsics/gen/isFinite/426f9f.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void isFinite_426f9f() {
-  bool res =   isfinite(1.0f);
+  bool res = isfinite(1.0f);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/isFinite/8a23ad.wgsl.expected.msl b/test/intrinsics/gen/isFinite/8a23ad.wgsl.expected.msl
index 9ecb4a4..c0f197b 100644
--- a/test/intrinsics/gen/isFinite/8a23ad.wgsl.expected.msl
+++ b/test/intrinsics/gen/isFinite/8a23ad.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void isFinite_8a23ad() {
-  bool3 res =   isfinite(float3());
+  bool3 res = isfinite(float3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/isFinite/f31987.wgsl.expected.msl b/test/intrinsics/gen/isFinite/f31987.wgsl.expected.msl
index 0cd88d9..775a799 100644
--- a/test/intrinsics/gen/isFinite/f31987.wgsl.expected.msl
+++ b/test/intrinsics/gen/isFinite/f31987.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void isFinite_f31987() {
-  bool4 res =   isfinite(float4());
+  bool4 res = isfinite(float4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/isInf/666f2a.wgsl.expected.msl b/test/intrinsics/gen/isInf/666f2a.wgsl.expected.msl
index 39d8aa9..61fdda6 100644
--- a/test/intrinsics/gen/isInf/666f2a.wgsl.expected.msl
+++ b/test/intrinsics/gen/isInf/666f2a.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void isInf_666f2a() {
-  bool3 res =   isinf(float3());
+  bool3 res = isinf(float3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/isInf/7bd98f.wgsl.expected.msl b/test/intrinsics/gen/isInf/7bd98f.wgsl.expected.msl
index 6cec857..0850ae5 100644
--- a/test/intrinsics/gen/isInf/7bd98f.wgsl.expected.msl
+++ b/test/intrinsics/gen/isInf/7bd98f.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void isInf_7bd98f() {
-  bool res =   isinf(1.0f);
+  bool res = isinf(1.0f);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/isInf/7e81b5.wgsl.expected.msl b/test/intrinsics/gen/isInf/7e81b5.wgsl.expected.msl
index e8636d9..0362bce 100644
--- a/test/intrinsics/gen/isInf/7e81b5.wgsl.expected.msl
+++ b/test/intrinsics/gen/isInf/7e81b5.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void isInf_7e81b5() {
-  bool4 res =   isinf(float4());
+  bool4 res = isinf(float4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/isInf/a46d6f.wgsl.expected.msl b/test/intrinsics/gen/isInf/a46d6f.wgsl.expected.msl
index d423213..e5ed9f2 100644
--- a/test/intrinsics/gen/isInf/a46d6f.wgsl.expected.msl
+++ b/test/intrinsics/gen/isInf/a46d6f.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void isInf_a46d6f() {
-  bool2 res =   isinf(float2());
+  bool2 res = isinf(float2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/isNan/1280ab.wgsl.expected.msl b/test/intrinsics/gen/isNan/1280ab.wgsl.expected.msl
index aa45bd0..64b9ace 100644
--- a/test/intrinsics/gen/isNan/1280ab.wgsl.expected.msl
+++ b/test/intrinsics/gen/isNan/1280ab.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void isNan_1280ab() {
-  bool3 res =   isnan(float3());
+  bool3 res = isnan(float3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/isNan/4d280d.wgsl.expected.msl b/test/intrinsics/gen/isNan/4d280d.wgsl.expected.msl
index 28fc710..b8a2e22 100644
--- a/test/intrinsics/gen/isNan/4d280d.wgsl.expected.msl
+++ b/test/intrinsics/gen/isNan/4d280d.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void isNan_4d280d() {
-  bool4 res =   isnan(float4());
+  bool4 res = isnan(float4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/isNan/67ecd3.wgsl.expected.msl b/test/intrinsics/gen/isNan/67ecd3.wgsl.expected.msl
index 12439ba..932d0cc 100644
--- a/test/intrinsics/gen/isNan/67ecd3.wgsl.expected.msl
+++ b/test/intrinsics/gen/isNan/67ecd3.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void isNan_67ecd3() {
-  bool2 res =   isnan(float2());
+  bool2 res = isnan(float2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/isNan/e4978e.wgsl.expected.msl b/test/intrinsics/gen/isNan/e4978e.wgsl.expected.msl
index cad8c71..c94a9af 100644
--- a/test/intrinsics/gen/isNan/e4978e.wgsl.expected.msl
+++ b/test/intrinsics/gen/isNan/e4978e.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void isNan_e4978e() {
-  bool res =   isnan(1.0f);
+  bool res = isnan(1.0f);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/isNormal/863dcd.wgsl.expected.msl b/test/intrinsics/gen/isNormal/863dcd.wgsl.expected.msl
index 67595de..b086c06 100644
--- a/test/intrinsics/gen/isNormal/863dcd.wgsl.expected.msl
+++ b/test/intrinsics/gen/isNormal/863dcd.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void isNormal_863dcd() {
-  bool4 res =   isnormal(float4());
+  bool4 res = isnormal(float4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/isNormal/b00ab1.wgsl.expected.msl b/test/intrinsics/gen/isNormal/b00ab1.wgsl.expected.msl
index 898dd73..6bcb392 100644
--- a/test/intrinsics/gen/isNormal/b00ab1.wgsl.expected.msl
+++ b/test/intrinsics/gen/isNormal/b00ab1.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void isNormal_b00ab1() {
-  bool2 res =   isnormal(float2());
+  bool2 res = isnormal(float2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/isNormal/c286b7.wgsl.expected.msl b/test/intrinsics/gen/isNormal/c286b7.wgsl.expected.msl
index e7bac05..f3e7527 100644
--- a/test/intrinsics/gen/isNormal/c286b7.wgsl.expected.msl
+++ b/test/intrinsics/gen/isNormal/c286b7.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void isNormal_c286b7() {
-  bool3 res =   isnormal(float3());
+  bool3 res = isnormal(float3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/isNormal/c6e880.wgsl.expected.msl b/test/intrinsics/gen/isNormal/c6e880.wgsl.expected.msl
index 2df6a24..e5b54cb 100644
--- a/test/intrinsics/gen/isNormal/c6e880.wgsl.expected.msl
+++ b/test/intrinsics/gen/isNormal/c6e880.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void isNormal_c6e880() {
-  bool res =   isnormal(1.0f);
+  bool res = isnormal(1.0f);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/ldexp/a31cdc.wgsl.expected.msl b/test/intrinsics/gen/ldexp/a31cdc.wgsl.expected.msl
index 12ec936..ad04640 100644
--- a/test/intrinsics/gen/ldexp/a31cdc.wgsl.expected.msl
+++ b/test/intrinsics/gen/ldexp/a31cdc.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void ldexp_a31cdc() {
-  float3 res =   ldexp(float3(), int3());
+  float3 res = ldexp(float3(), int3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/ldexp/abd718.wgsl.expected.msl b/test/intrinsics/gen/ldexp/abd718.wgsl.expected.msl
index 2fa4009..ca0e3a5 100644
--- a/test/intrinsics/gen/ldexp/abd718.wgsl.expected.msl
+++ b/test/intrinsics/gen/ldexp/abd718.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void ldexp_abd718() {
-  float2 res =   ldexp(float2(), int2());
+  float2 res = ldexp(float2(), int2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/ldexp/cc9cde.wgsl.expected.msl b/test/intrinsics/gen/ldexp/cc9cde.wgsl.expected.msl
index c8a2dc9..5a3b811 100644
--- a/test/intrinsics/gen/ldexp/cc9cde.wgsl.expected.msl
+++ b/test/intrinsics/gen/ldexp/cc9cde.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void ldexp_cc9cde() {
-  float4 res =   ldexp(float4(), int4());
+  float4 res = ldexp(float4(), int4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/ldexp/db8b49.wgsl.expected.msl b/test/intrinsics/gen/ldexp/db8b49.wgsl.expected.msl
index cc7fbc1..650cce2 100644
--- a/test/intrinsics/gen/ldexp/db8b49.wgsl.expected.msl
+++ b/test/intrinsics/gen/ldexp/db8b49.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void ldexp_db8b49() {
-  float res =   ldexp(1.0f, 1);
+  float res = ldexp(1.0f, 1);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/ldexp/f54ff2.wgsl.expected.msl b/test/intrinsics/gen/ldexp/f54ff2.wgsl.expected.msl
index 9cef87e..e861389 100644
--- a/test/intrinsics/gen/ldexp/f54ff2.wgsl.expected.msl
+++ b/test/intrinsics/gen/ldexp/f54ff2.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void ldexp_f54ff2() {
-  float res =   ldexp(1.0f, 1u);
+  float res = ldexp(1.0f, 1u);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/length/056071.wgsl.expected.msl b/test/intrinsics/gen/length/056071.wgsl.expected.msl
index bddb507..fb40a90 100644
--- a/test/intrinsics/gen/length/056071.wgsl.expected.msl
+++ b/test/intrinsics/gen/length/056071.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void length_056071() {
-  float res =   length(float3());
+  float res = length(float3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/length/afde8b.wgsl.expected.msl b/test/intrinsics/gen/length/afde8b.wgsl.expected.msl
index 1902264..6587bc0 100644
--- a/test/intrinsics/gen/length/afde8b.wgsl.expected.msl
+++ b/test/intrinsics/gen/length/afde8b.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void length_afde8b() {
-  float res =   length(float2());
+  float res = length(float2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/length/becebf.wgsl.expected.msl b/test/intrinsics/gen/length/becebf.wgsl.expected.msl
index 9cd6341..4fa8cd2 100644
--- a/test/intrinsics/gen/length/becebf.wgsl.expected.msl
+++ b/test/intrinsics/gen/length/becebf.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void length_becebf() {
-  float res =   length(float4());
+  float res = length(float4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/log/3da25a.wgsl.expected.msl b/test/intrinsics/gen/log/3da25a.wgsl.expected.msl
index 87551df..c5e7404 100644
--- a/test/intrinsics/gen/log/3da25a.wgsl.expected.msl
+++ b/test/intrinsics/gen/log/3da25a.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void log_3da25a() {
-  float4 res =   log(float4());
+  float4 res = log(float4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/log/7114a6.wgsl.expected.msl b/test/intrinsics/gen/log/7114a6.wgsl.expected.msl
index ca21705..72b940a 100644
--- a/test/intrinsics/gen/log/7114a6.wgsl.expected.msl
+++ b/test/intrinsics/gen/log/7114a6.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void log_7114a6() {
-  float res =   log(1.0f);
+  float res = log(1.0f);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/log/b2ce28.wgsl.expected.msl b/test/intrinsics/gen/log/b2ce28.wgsl.expected.msl
index 43777d4..576f8af 100644
--- a/test/intrinsics/gen/log/b2ce28.wgsl.expected.msl
+++ b/test/intrinsics/gen/log/b2ce28.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void log_b2ce28() {
-  float2 res =   log(float2());
+  float2 res = log(float2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/log/f4c570.wgsl.expected.msl b/test/intrinsics/gen/log/f4c570.wgsl.expected.msl
index 6344246..a89a44b 100644
--- a/test/intrinsics/gen/log/f4c570.wgsl.expected.msl
+++ b/test/intrinsics/gen/log/f4c570.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void log_f4c570() {
-  float3 res =   log(float3());
+  float3 res = log(float3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/log2/4036ed.wgsl.expected.msl b/test/intrinsics/gen/log2/4036ed.wgsl.expected.msl
index 49dc07a..a5303eb 100644
--- a/test/intrinsics/gen/log2/4036ed.wgsl.expected.msl
+++ b/test/intrinsics/gen/log2/4036ed.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void log2_4036ed() {
-  float res =   log2(1.0f);
+  float res = log2(1.0f);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/log2/902988.wgsl.expected.msl b/test/intrinsics/gen/log2/902988.wgsl.expected.msl
index d7828e6..292fbee 100644
--- a/test/intrinsics/gen/log2/902988.wgsl.expected.msl
+++ b/test/intrinsics/gen/log2/902988.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void log2_902988() {
-  float4 res =   log2(float4());
+  float4 res = log2(float4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/log2/adb233.wgsl.expected.msl b/test/intrinsics/gen/log2/adb233.wgsl.expected.msl
index ee68aab..7ccc7f4 100644
--- a/test/intrinsics/gen/log2/adb233.wgsl.expected.msl
+++ b/test/intrinsics/gen/log2/adb233.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void log2_adb233() {
-  float3 res =   log2(float3());
+  float3 res = log2(float3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/log2/aea659.wgsl.expected.msl b/test/intrinsics/gen/log2/aea659.wgsl.expected.msl
index 4e44b11..f603d99 100644
--- a/test/intrinsics/gen/log2/aea659.wgsl.expected.msl
+++ b/test/intrinsics/gen/log2/aea659.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void log2_aea659() {
-  float2 res =   log2(float2());
+  float2 res = log2(float2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/max/0c0aae.wgsl.expected.msl b/test/intrinsics/gen/max/0c0aae.wgsl.expected.msl
index 9ebf54a..2c07924 100644
--- a/test/intrinsics/gen/max/0c0aae.wgsl.expected.msl
+++ b/test/intrinsics/gen/max/0c0aae.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void max_0c0aae() {
-  uint res =   max(1u, 1u);
+  uint res = max(1u, 1u);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/max/25eafe.wgsl.expected.msl b/test/intrinsics/gen/max/25eafe.wgsl.expected.msl
index b8eca1d..ff0ddf5 100644
--- a/test/intrinsics/gen/max/25eafe.wgsl.expected.msl
+++ b/test/intrinsics/gen/max/25eafe.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void max_25eafe() {
-  int3 res =   max(int3(), int3());
+  int3 res = max(int3(), int3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/max/320815.wgsl.expected.msl b/test/intrinsics/gen/max/320815.wgsl.expected.msl
index 9ecdcb9..4a75eea 100644
--- a/test/intrinsics/gen/max/320815.wgsl.expected.msl
+++ b/test/intrinsics/gen/max/320815.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void max_320815() {
-  uint2 res =   max(uint2(), uint2());
+  uint2 res = max(uint2(), uint2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/max/44a39d.wgsl.expected.msl b/test/intrinsics/gen/max/44a39d.wgsl.expected.msl
index ba3fcf1..1ed6073 100644
--- a/test/intrinsics/gen/max/44a39d.wgsl.expected.msl
+++ b/test/intrinsics/gen/max/44a39d.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void max_44a39d() {
-  float res =   fmax(1.0f, 1.0f);
+  float res = fmax(1.0f, 1.0f);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/max/453e04.wgsl.expected.msl b/test/intrinsics/gen/max/453e04.wgsl.expected.msl
index d8b12c6..8d03301 100644
--- a/test/intrinsics/gen/max/453e04.wgsl.expected.msl
+++ b/test/intrinsics/gen/max/453e04.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void max_453e04() {
-  uint4 res =   max(uint4(), uint4());
+  uint4 res = max(uint4(), uint4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/max/462050.wgsl.expected.msl b/test/intrinsics/gen/max/462050.wgsl.expected.msl
index ef47fd2..be9f1c6 100644
--- a/test/intrinsics/gen/max/462050.wgsl.expected.msl
+++ b/test/intrinsics/gen/max/462050.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void max_462050() {
-  float2 res =   fmax(float2(), float2());
+  float2 res = fmax(float2(), float2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/max/4883ac.wgsl.expected.msl b/test/intrinsics/gen/max/4883ac.wgsl.expected.msl
index fc31548..42a266f 100644
--- a/test/intrinsics/gen/max/4883ac.wgsl.expected.msl
+++ b/test/intrinsics/gen/max/4883ac.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void max_4883ac() {
-  float3 res =   fmax(float3(), float3());
+  float3 res = fmax(float3(), float3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/max/85e6bc.wgsl.expected.msl b/test/intrinsics/gen/max/85e6bc.wgsl.expected.msl
index 8606e9a..0728359 100644
--- a/test/intrinsics/gen/max/85e6bc.wgsl.expected.msl
+++ b/test/intrinsics/gen/max/85e6bc.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void max_85e6bc() {
-  int4 res =   max(int4(), int4());
+  int4 res = max(int4(), int4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/max/a93419.wgsl.expected.msl b/test/intrinsics/gen/max/a93419.wgsl.expected.msl
index 056c4b8..edf5f84 100644
--- a/test/intrinsics/gen/max/a93419.wgsl.expected.msl
+++ b/test/intrinsics/gen/max/a93419.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void max_a93419() {
-  float4 res =   fmax(float4(), float4());
+  float4 res = fmax(float4(), float4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/max/b1b73a.wgsl.expected.msl b/test/intrinsics/gen/max/b1b73a.wgsl.expected.msl
index 3dfa68c..401b97f 100644
--- a/test/intrinsics/gen/max/b1b73a.wgsl.expected.msl
+++ b/test/intrinsics/gen/max/b1b73a.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void max_b1b73a() {
-  uint3 res =   max(uint3(), uint3());
+  uint3 res = max(uint3(), uint3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/max/ce7c30.wgsl.expected.msl b/test/intrinsics/gen/max/ce7c30.wgsl.expected.msl
index 4f300ff..041e137 100644
--- a/test/intrinsics/gen/max/ce7c30.wgsl.expected.msl
+++ b/test/intrinsics/gen/max/ce7c30.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void max_ce7c30() {
-  int res =   max(1, 1);
+  int res = max(1, 1);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/max/e8192f.wgsl.expected.msl b/test/intrinsics/gen/max/e8192f.wgsl.expected.msl
index e35eb46..5c158fa 100644
--- a/test/intrinsics/gen/max/e8192f.wgsl.expected.msl
+++ b/test/intrinsics/gen/max/e8192f.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void max_e8192f() {
-  int2 res =   max(int2(), int2());
+  int2 res = max(int2(), int2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/min/03c7e3.wgsl.expected.msl b/test/intrinsics/gen/min/03c7e3.wgsl.expected.msl
index 7ae789a..0d57026 100644
--- a/test/intrinsics/gen/min/03c7e3.wgsl.expected.msl
+++ b/test/intrinsics/gen/min/03c7e3.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void min_03c7e3() {
-  int2 res =   min(int2(), int2());
+  int2 res = min(int2(), int2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/min/0dc614.wgsl.expected.msl b/test/intrinsics/gen/min/0dc614.wgsl.expected.msl
index c50267d..f179d77 100644
--- a/test/intrinsics/gen/min/0dc614.wgsl.expected.msl
+++ b/test/intrinsics/gen/min/0dc614.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void min_0dc614() {
-  uint4 res =   min(uint4(), uint4());
+  uint4 res = min(uint4(), uint4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/min/3941e1.wgsl.expected.msl b/test/intrinsics/gen/min/3941e1.wgsl.expected.msl
index d7b4550..cc0012f 100644
--- a/test/intrinsics/gen/min/3941e1.wgsl.expected.msl
+++ b/test/intrinsics/gen/min/3941e1.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void min_3941e1() {
-  int4 res =   min(int4(), int4());
+  int4 res = min(int4(), int4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/min/46c5d3.wgsl.expected.msl b/test/intrinsics/gen/min/46c5d3.wgsl.expected.msl
index 60276ce..5ab20e3 100644
--- a/test/intrinsics/gen/min/46c5d3.wgsl.expected.msl
+++ b/test/intrinsics/gen/min/46c5d3.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void min_46c5d3() {
-  uint res =   min(1u, 1u);
+  uint res = min(1u, 1u);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/min/82b28f.wgsl.expected.msl b/test/intrinsics/gen/min/82b28f.wgsl.expected.msl
index 7bd80b5..5b2913c 100644
--- a/test/intrinsics/gen/min/82b28f.wgsl.expected.msl
+++ b/test/intrinsics/gen/min/82b28f.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void min_82b28f() {
-  uint2 res =   min(uint2(), uint2());
+  uint2 res = min(uint2(), uint2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/min/93cfc4.wgsl.expected.msl b/test/intrinsics/gen/min/93cfc4.wgsl.expected.msl
index 97dc1ce..f102283 100644
--- a/test/intrinsics/gen/min/93cfc4.wgsl.expected.msl
+++ b/test/intrinsics/gen/min/93cfc4.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void min_93cfc4() {
-  float3 res =   fmin(float3(), float3());
+  float3 res = fmin(float3(), float3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/min/a45171.wgsl.expected.msl b/test/intrinsics/gen/min/a45171.wgsl.expected.msl
index 42a9bf7..3f9bfb1 100644
--- a/test/intrinsics/gen/min/a45171.wgsl.expected.msl
+++ b/test/intrinsics/gen/min/a45171.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void min_a45171() {
-  int3 res =   min(int3(), int3());
+  int3 res = min(int3(), int3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/min/aa28ad.wgsl.expected.msl b/test/intrinsics/gen/min/aa28ad.wgsl.expected.msl
index 7959144..64cfee3 100644
--- a/test/intrinsics/gen/min/aa28ad.wgsl.expected.msl
+++ b/test/intrinsics/gen/min/aa28ad.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void min_aa28ad() {
-  float2 res =   fmin(float2(), float2());
+  float2 res = fmin(float2(), float2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/min/af326d.wgsl.expected.msl b/test/intrinsics/gen/min/af326d.wgsl.expected.msl
index d0e009b..c8d4c23 100644
--- a/test/intrinsics/gen/min/af326d.wgsl.expected.msl
+++ b/test/intrinsics/gen/min/af326d.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void min_af326d() {
-  float res =   fmin(1.0f, 1.0f);
+  float res = fmin(1.0f, 1.0f);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/min/c70bb7.wgsl.expected.msl b/test/intrinsics/gen/min/c70bb7.wgsl.expected.msl
index 09c6b44..c1968a2 100644
--- a/test/intrinsics/gen/min/c70bb7.wgsl.expected.msl
+++ b/test/intrinsics/gen/min/c70bb7.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void min_c70bb7() {
-  uint3 res =   min(uint3(), uint3());
+  uint3 res = min(uint3(), uint3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/min/c73147.wgsl.expected.msl b/test/intrinsics/gen/min/c73147.wgsl.expected.msl
index 7ec0d47..45fd9b0 100644
--- a/test/intrinsics/gen/min/c73147.wgsl.expected.msl
+++ b/test/intrinsics/gen/min/c73147.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void min_c73147() {
-  int res =   min(1, 1);
+  int res = min(1, 1);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/min/c76fa6.wgsl.expected.msl b/test/intrinsics/gen/min/c76fa6.wgsl.expected.msl
index 015d645..bed1dc6 100644
--- a/test/intrinsics/gen/min/c76fa6.wgsl.expected.msl
+++ b/test/intrinsics/gen/min/c76fa6.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void min_c76fa6() {
-  float4 res =   fmin(float4(), float4());
+  float4 res = fmin(float4(), float4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/mix/0c8c33.wgsl.expected.msl b/test/intrinsics/gen/mix/0c8c33.wgsl.expected.msl
index 6cc23a6..2e50a70 100644
--- a/test/intrinsics/gen/mix/0c8c33.wgsl.expected.msl
+++ b/test/intrinsics/gen/mix/0c8c33.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void mix_0c8c33() {
-  float3 res =   mix(float3(), float3(), float3());
+  float3 res = mix(float3(), float3(), float3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/mix/4f0b5e.wgsl.expected.msl b/test/intrinsics/gen/mix/4f0b5e.wgsl.expected.msl
index 9e549fa..98d7121 100644
--- a/test/intrinsics/gen/mix/4f0b5e.wgsl.expected.msl
+++ b/test/intrinsics/gen/mix/4f0b5e.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void mix_4f0b5e() {
-  float res =   mix(1.0f, 1.0f, 1.0f);
+  float res = mix(1.0f, 1.0f, 1.0f);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/mix/6f8adc.wgsl.expected.msl b/test/intrinsics/gen/mix/6f8adc.wgsl.expected.msl
index 34ac943..d205533 100644
--- a/test/intrinsics/gen/mix/6f8adc.wgsl.expected.msl
+++ b/test/intrinsics/gen/mix/6f8adc.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void mix_6f8adc() {
-  float2 res =   mix(float2(), float2(), float2());
+  float2 res = mix(float2(), float2(), float2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/mix/c37ede.wgsl.expected.msl b/test/intrinsics/gen/mix/c37ede.wgsl.expected.msl
index 246ff75..c4434f9 100644
--- a/test/intrinsics/gen/mix/c37ede.wgsl.expected.msl
+++ b/test/intrinsics/gen/mix/c37ede.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void mix_c37ede() {
-  float4 res =   mix(float4(), float4(), float4());
+  float4 res = mix(float4(), float4(), float4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/normalize/64d8c0.wgsl.expected.msl b/test/intrinsics/gen/normalize/64d8c0.wgsl.expected.msl
index 39c6462..3886bbd 100644
--- a/test/intrinsics/gen/normalize/64d8c0.wgsl.expected.msl
+++ b/test/intrinsics/gen/normalize/64d8c0.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void normalize_64d8c0() {
-  float3 res =   normalize(float3());
+  float3 res = normalize(float3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/normalize/9a0aab.wgsl.expected.msl b/test/intrinsics/gen/normalize/9a0aab.wgsl.expected.msl
index 2dc22f3..85b9339 100644
--- a/test/intrinsics/gen/normalize/9a0aab.wgsl.expected.msl
+++ b/test/intrinsics/gen/normalize/9a0aab.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void normalize_9a0aab() {
-  float4 res =   normalize(float4());
+  float4 res = normalize(float4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/normalize/fc2ef1.wgsl.expected.msl b/test/intrinsics/gen/normalize/fc2ef1.wgsl.expected.msl
index 7e5afe0..09c836c 100644
--- a/test/intrinsics/gen/normalize/fc2ef1.wgsl.expected.msl
+++ b/test/intrinsics/gen/normalize/fc2ef1.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void normalize_fc2ef1() {
-  float2 res =   normalize(float2());
+  float2 res = normalize(float2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/pack2x16float/0e97b3.wgsl.expected.msl b/test/intrinsics/gen/pack2x16float/0e97b3.wgsl.expected.msl
index 05f90db..eaf483e 100644
--- a/test/intrinsics/gen/pack2x16float/0e97b3.wgsl.expected.msl
+++ b/test/intrinsics/gen/pack2x16float/0e97b3.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void pack2x16float_0e97b3() {
-  uint res =   as_type<uint>(half2(float2()));
+  uint res = as_type<uint>(half2(float2()));
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/pack2x16snorm/6c169b.wgsl.expected.msl b/test/intrinsics/gen/pack2x16snorm/6c169b.wgsl.expected.msl
index 7e91e3b..8acd8d9 100644
--- a/test/intrinsics/gen/pack2x16snorm/6c169b.wgsl.expected.msl
+++ b/test/intrinsics/gen/pack2x16snorm/6c169b.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void pack2x16snorm_6c169b() {
-  uint res =   pack_float_to_snorm2x16(float2());
+  uint res = pack_float_to_snorm2x16(float2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/pack2x16unorm/0f08e4.wgsl.expected.msl b/test/intrinsics/gen/pack2x16unorm/0f08e4.wgsl.expected.msl
index 5f507aa..0c21bdc 100644
--- a/test/intrinsics/gen/pack2x16unorm/0f08e4.wgsl.expected.msl
+++ b/test/intrinsics/gen/pack2x16unorm/0f08e4.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void pack2x16unorm_0f08e4() {
-  uint res =   pack_float_to_unorm2x16(float2());
+  uint res = pack_float_to_unorm2x16(float2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/pack4x8snorm/4d22e7.wgsl.expected.msl b/test/intrinsics/gen/pack4x8snorm/4d22e7.wgsl.expected.msl
index f4311c9..e07cd5d 100644
--- a/test/intrinsics/gen/pack4x8snorm/4d22e7.wgsl.expected.msl
+++ b/test/intrinsics/gen/pack4x8snorm/4d22e7.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void pack4x8snorm_4d22e7() {
-  uint res =   pack_float_to_snorm4x8(float4());
+  uint res = pack_float_to_snorm4x8(float4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/pack4x8unorm/95c456.wgsl.expected.msl b/test/intrinsics/gen/pack4x8unorm/95c456.wgsl.expected.msl
index 6edb56f..91aabb4 100644
--- a/test/intrinsics/gen/pack4x8unorm/95c456.wgsl.expected.msl
+++ b/test/intrinsics/gen/pack4x8unorm/95c456.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void pack4x8unorm_95c456() {
-  uint res =   pack_float_to_unorm4x8(float4());
+  uint res = pack_float_to_unorm4x8(float4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/pow/04a908.wgsl.expected.msl b/test/intrinsics/gen/pow/04a908.wgsl.expected.msl
index 73909be..90e90cd 100644
--- a/test/intrinsics/gen/pow/04a908.wgsl.expected.msl
+++ b/test/intrinsics/gen/pow/04a908.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void pow_04a908() {
-  float4 res =   pow(float4(), float4());
+  float4 res = pow(float4(), float4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/pow/46e029.wgsl.expected.msl b/test/intrinsics/gen/pow/46e029.wgsl.expected.msl
index d1bd4b9..84e867b 100644
--- a/test/intrinsics/gen/pow/46e029.wgsl.expected.msl
+++ b/test/intrinsics/gen/pow/46e029.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void pow_46e029() {
-  float res =   pow(1.0f, 1.0f);
+  float res = pow(1.0f, 1.0f);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/pow/4a46c9.wgsl.expected.msl b/test/intrinsics/gen/pow/4a46c9.wgsl.expected.msl
index 6765ee7..caebacf 100644
--- a/test/intrinsics/gen/pow/4a46c9.wgsl.expected.msl
+++ b/test/intrinsics/gen/pow/4a46c9.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void pow_4a46c9() {
-  float3 res =   pow(float3(), float3());
+  float3 res = pow(float3(), float3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/pow/e60ea5.wgsl.expected.msl b/test/intrinsics/gen/pow/e60ea5.wgsl.expected.msl
index 7e1c6f7..7bb9fc4 100644
--- a/test/intrinsics/gen/pow/e60ea5.wgsl.expected.msl
+++ b/test/intrinsics/gen/pow/e60ea5.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void pow_e60ea5() {
-  float2 res =   pow(float2(), float2());
+  float2 res = pow(float2(), float2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/reflect/05357e.wgsl.expected.msl b/test/intrinsics/gen/reflect/05357e.wgsl.expected.msl
index 10fb0cb..b61d634 100644
--- a/test/intrinsics/gen/reflect/05357e.wgsl.expected.msl
+++ b/test/intrinsics/gen/reflect/05357e.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void reflect_05357e() {
-  float4 res =   reflect(float4(), float4());
+  float4 res = reflect(float4(), float4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/reflect/b61e10.wgsl.expected.msl b/test/intrinsics/gen/reflect/b61e10.wgsl.expected.msl
index e8c412a..c10208d 100644
--- a/test/intrinsics/gen/reflect/b61e10.wgsl.expected.msl
+++ b/test/intrinsics/gen/reflect/b61e10.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void reflect_b61e10() {
-  float2 res =   reflect(float2(), float2());
+  float2 res = reflect(float2(), float2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/reflect/f47fdb.wgsl.expected.msl b/test/intrinsics/gen/reflect/f47fdb.wgsl.expected.msl
index c0b9c40..9032eca 100644
--- a/test/intrinsics/gen/reflect/f47fdb.wgsl.expected.msl
+++ b/test/intrinsics/gen/reflect/f47fdb.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void reflect_f47fdb() {
-  float3 res =   reflect(float3(), float3());
+  float3 res = reflect(float3(), float3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/reverseBits/222177.wgsl.expected.msl b/test/intrinsics/gen/reverseBits/222177.wgsl.expected.msl
index 210f3b3..525e9d1 100644
--- a/test/intrinsics/gen/reverseBits/222177.wgsl.expected.msl
+++ b/test/intrinsics/gen/reverseBits/222177.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void reverseBits_222177() {
-  int2 res =   reverse_bits(int2());
+  int2 res = reverse_bits(int2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/reverseBits/35fea9.wgsl.expected.msl b/test/intrinsics/gen/reverseBits/35fea9.wgsl.expected.msl
index 2d0b471..8aee00a 100644
--- a/test/intrinsics/gen/reverseBits/35fea9.wgsl.expected.msl
+++ b/test/intrinsics/gen/reverseBits/35fea9.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void reverseBits_35fea9() {
-  uint4 res =   reverse_bits(uint4());
+  uint4 res = reverse_bits(uint4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/reverseBits/4dbd6f.wgsl.expected.msl b/test/intrinsics/gen/reverseBits/4dbd6f.wgsl.expected.msl
index 5dde8a3..966cfe2 100644
--- a/test/intrinsics/gen/reverseBits/4dbd6f.wgsl.expected.msl
+++ b/test/intrinsics/gen/reverseBits/4dbd6f.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void reverseBits_4dbd6f() {
-  int4 res =   reverse_bits(int4());
+  int4 res = reverse_bits(int4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/reverseBits/7c4269.wgsl.expected.msl b/test/intrinsics/gen/reverseBits/7c4269.wgsl.expected.msl
index 5621f10..ed2c1db 100644
--- a/test/intrinsics/gen/reverseBits/7c4269.wgsl.expected.msl
+++ b/test/intrinsics/gen/reverseBits/7c4269.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void reverseBits_7c4269() {
-  int res =   reverse_bits(1);
+  int res = reverse_bits(1);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/reverseBits/a6ccd4.wgsl.expected.msl b/test/intrinsics/gen/reverseBits/a6ccd4.wgsl.expected.msl
index 0158aed..72fbdb0 100644
--- a/test/intrinsics/gen/reverseBits/a6ccd4.wgsl.expected.msl
+++ b/test/intrinsics/gen/reverseBits/a6ccd4.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void reverseBits_a6ccd4() {
-  uint3 res =   reverse_bits(uint3());
+  uint3 res = reverse_bits(uint3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/reverseBits/c21bc1.wgsl.expected.msl b/test/intrinsics/gen/reverseBits/c21bc1.wgsl.expected.msl
index b8623bc..442fcae 100644
--- a/test/intrinsics/gen/reverseBits/c21bc1.wgsl.expected.msl
+++ b/test/intrinsics/gen/reverseBits/c21bc1.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void reverseBits_c21bc1() {
-  int3 res =   reverse_bits(int3());
+  int3 res = reverse_bits(int3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/reverseBits/e1f4c1.wgsl.expected.msl b/test/intrinsics/gen/reverseBits/e1f4c1.wgsl.expected.msl
index ba544b7..069f1d2 100644
--- a/test/intrinsics/gen/reverseBits/e1f4c1.wgsl.expected.msl
+++ b/test/intrinsics/gen/reverseBits/e1f4c1.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void reverseBits_e1f4c1() {
-  uint2 res =   reverse_bits(uint2());
+  uint2 res = reverse_bits(uint2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/reverseBits/e31adf.wgsl.expected.msl b/test/intrinsics/gen/reverseBits/e31adf.wgsl.expected.msl
index bc9b4af..14abcb8 100644
--- a/test/intrinsics/gen/reverseBits/e31adf.wgsl.expected.msl
+++ b/test/intrinsics/gen/reverseBits/e31adf.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void reverseBits_e31adf() {
-  uint res =   reverse_bits(1u);
+  uint res = reverse_bits(1u);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/round/106c0b.wgsl.expected.msl b/test/intrinsics/gen/round/106c0b.wgsl.expected.msl
index 2ae782a..280de5d 100644
--- a/test/intrinsics/gen/round/106c0b.wgsl.expected.msl
+++ b/test/intrinsics/gen/round/106c0b.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void round_106c0b() {
-  float4 res =   rint(float4());
+  float4 res = rint(float4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/round/1c7897.wgsl.expected.msl b/test/intrinsics/gen/round/1c7897.wgsl.expected.msl
index 608a2fe..d9c7757 100644
--- a/test/intrinsics/gen/round/1c7897.wgsl.expected.msl
+++ b/test/intrinsics/gen/round/1c7897.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void round_1c7897() {
-  float3 res =   rint(float3());
+  float3 res = rint(float3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/round/52c84d.wgsl.expected.msl b/test/intrinsics/gen/round/52c84d.wgsl.expected.msl
index b9fc56f..06d2683 100644
--- a/test/intrinsics/gen/round/52c84d.wgsl.expected.msl
+++ b/test/intrinsics/gen/round/52c84d.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void round_52c84d() {
-  float2 res =   rint(float2());
+  float2 res = rint(float2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/round/9edc38.wgsl.expected.msl b/test/intrinsics/gen/round/9edc38.wgsl.expected.msl
index 0361b22..f970449 100644
--- a/test/intrinsics/gen/round/9edc38.wgsl.expected.msl
+++ b/test/intrinsics/gen/round/9edc38.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void round_9edc38() {
-  float res =   rint(1.0f);
+  float res = rint(1.0f);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/select/00b848.wgsl.expected.msl b/test/intrinsics/gen/select/00b848.wgsl.expected.msl
index 2b431a8..4541cbd 100644
--- a/test/intrinsics/gen/select/00b848.wgsl.expected.msl
+++ b/test/intrinsics/gen/select/00b848.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void select_00b848() {
-  int2 res =   select(int2(), int2(), bool2());
+  int2 res = select(int2(), int2(), bool2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/select/01e2cd.wgsl.expected.msl b/test/intrinsics/gen/select/01e2cd.wgsl.expected.msl
index 9f29574..57e3844 100644
--- a/test/intrinsics/gen/select/01e2cd.wgsl.expected.msl
+++ b/test/intrinsics/gen/select/01e2cd.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void select_01e2cd() {
-  int3 res =   select(int3(), int3(), bool3());
+  int3 res = select(int3(), int3(), bool3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/select/1e960b.wgsl.expected.msl b/test/intrinsics/gen/select/1e960b.wgsl.expected.msl
index 172ac62..ed4c2d6 100644
--- a/test/intrinsics/gen/select/1e960b.wgsl.expected.msl
+++ b/test/intrinsics/gen/select/1e960b.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void select_1e960b() {
-  uint2 res =   select(uint2(), uint2(), bool2());
+  uint2 res = select(uint2(), uint2(), bool2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/select/266aff.wgsl.expected.msl b/test/intrinsics/gen/select/266aff.wgsl.expected.msl
index 347ac27..167dca3 100644
--- a/test/intrinsics/gen/select/266aff.wgsl.expected.msl
+++ b/test/intrinsics/gen/select/266aff.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void select_266aff() {
-  float2 res =   select(float2(), float2(), bool2());
+  float2 res = select(float2(), float2(), bool2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/select/28a27e.wgsl.expected.msl b/test/intrinsics/gen/select/28a27e.wgsl.expected.msl
index 667c9a1..813376f 100644
--- a/test/intrinsics/gen/select/28a27e.wgsl.expected.msl
+++ b/test/intrinsics/gen/select/28a27e.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void select_28a27e() {
-  uint3 res =   select(uint3(), uint3(), bool3());
+  uint3 res = select(uint3(), uint3(), bool3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/select/416e14.wgsl.expected.msl b/test/intrinsics/gen/select/416e14.wgsl.expected.msl
index 85cd25a..728f9e1 100644
--- a/test/intrinsics/gen/select/416e14.wgsl.expected.msl
+++ b/test/intrinsics/gen/select/416e14.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void select_416e14() {
-  float res =   select(1.0f, 1.0f, bool());
+  float res = select(1.0f, 1.0f, bool());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/select/80a9a9.wgsl.expected.msl b/test/intrinsics/gen/select/80a9a9.wgsl.expected.msl
index 3aff43f..0e8e4b9 100644
--- a/test/intrinsics/gen/select/80a9a9.wgsl.expected.msl
+++ b/test/intrinsics/gen/select/80a9a9.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void select_80a9a9() {
-  bool3 res =   select(bool3(), bool3(), bool3());
+  bool3 res = select(bool3(), bool3(), bool3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/select/99f883.wgsl.expected.msl b/test/intrinsics/gen/select/99f883.wgsl.expected.msl
index 45e38cf..fde3d24 100644
--- a/test/intrinsics/gen/select/99f883.wgsl.expected.msl
+++ b/test/intrinsics/gen/select/99f883.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void select_99f883() {
-  uint res =   select(1u, 1u, bool());
+  uint res = select(1u, 1u, bool());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/select/a2860e.wgsl.expected.msl b/test/intrinsics/gen/select/a2860e.wgsl.expected.msl
index d57b00a..992519d 100644
--- a/test/intrinsics/gen/select/a2860e.wgsl.expected.msl
+++ b/test/intrinsics/gen/select/a2860e.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void select_a2860e() {
-  int4 res =   select(int4(), int4(), bool4());
+  int4 res = select(int4(), int4(), bool4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/select/bb8aae.wgsl.expected.msl b/test/intrinsics/gen/select/bb8aae.wgsl.expected.msl
index 0ac6179..23ef980 100644
--- a/test/intrinsics/gen/select/bb8aae.wgsl.expected.msl
+++ b/test/intrinsics/gen/select/bb8aae.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void select_bb8aae() {
-  float4 res =   select(float4(), float4(), bool4());
+  float4 res = select(float4(), float4(), bool4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/select/c31f9e.wgsl.expected.msl b/test/intrinsics/gen/select/c31f9e.wgsl.expected.msl
index 21695bd..f348bbb 100644
--- a/test/intrinsics/gen/select/c31f9e.wgsl.expected.msl
+++ b/test/intrinsics/gen/select/c31f9e.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void select_c31f9e() {
-  bool res =   select(bool(), bool(), bool());
+  bool res = select(bool(), bool(), bool());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/select/c4a4ef.wgsl.expected.msl b/test/intrinsics/gen/select/c4a4ef.wgsl.expected.msl
index eb6e007..5de96a5 100644
--- a/test/intrinsics/gen/select/c4a4ef.wgsl.expected.msl
+++ b/test/intrinsics/gen/select/c4a4ef.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void select_c4a4ef() {
-  uint4 res =   select(uint4(), uint4(), bool4());
+  uint4 res = select(uint4(), uint4(), bool4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/select/cb9301.wgsl.expected.msl b/test/intrinsics/gen/select/cb9301.wgsl.expected.msl
index 846a79f..975962f 100644
--- a/test/intrinsics/gen/select/cb9301.wgsl.expected.msl
+++ b/test/intrinsics/gen/select/cb9301.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void select_cb9301() {
-  bool2 res =   select(bool2(), bool2(), bool2());
+  bool2 res = select(bool2(), bool2(), bool2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/select/e3e028.wgsl.expected.msl b/test/intrinsics/gen/select/e3e028.wgsl.expected.msl
index a1f57f6..659778e 100644
--- a/test/intrinsics/gen/select/e3e028.wgsl.expected.msl
+++ b/test/intrinsics/gen/select/e3e028.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void select_e3e028() {
-  bool4 res =   select(bool4(), bool4(), bool4());
+  bool4 res = select(bool4(), bool4(), bool4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/select/ebfea2.wgsl.expected.msl b/test/intrinsics/gen/select/ebfea2.wgsl.expected.msl
index 81db84c..a4c6a13 100644
--- a/test/intrinsics/gen/select/ebfea2.wgsl.expected.msl
+++ b/test/intrinsics/gen/select/ebfea2.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void select_ebfea2() {
-  float3 res =   select(float3(), float3(), bool3());
+  float3 res = select(float3(), float3(), bool3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/select/ed8a15.wgsl.expected.msl b/test/intrinsics/gen/select/ed8a15.wgsl.expected.msl
index 2c84ce4..e2ec08e 100644
--- a/test/intrinsics/gen/select/ed8a15.wgsl.expected.msl
+++ b/test/intrinsics/gen/select/ed8a15.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void select_ed8a15() {
-  int res =   select(1, 1, bool());
+  int res = select(1, 1, bool());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/sign/159665.wgsl.expected.msl b/test/intrinsics/gen/sign/159665.wgsl.expected.msl
index 9a0fcb0..63ef07d 100644
--- a/test/intrinsics/gen/sign/159665.wgsl.expected.msl
+++ b/test/intrinsics/gen/sign/159665.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void sign_159665() {
-  float3 res =   sign(float3());
+  float3 res = sign(float3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/sign/b8f634.wgsl.expected.msl b/test/intrinsics/gen/sign/b8f634.wgsl.expected.msl
index b13803a..ede9127 100644
--- a/test/intrinsics/gen/sign/b8f634.wgsl.expected.msl
+++ b/test/intrinsics/gen/sign/b8f634.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void sign_b8f634() {
-  float4 res =   sign(float4());
+  float4 res = sign(float4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/sign/d065d8.wgsl.expected.msl b/test/intrinsics/gen/sign/d065d8.wgsl.expected.msl
index dc48e61..dfe0aa9 100644
--- a/test/intrinsics/gen/sign/d065d8.wgsl.expected.msl
+++ b/test/intrinsics/gen/sign/d065d8.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void sign_d065d8() {
-  float2 res =   sign(float2());
+  float2 res = sign(float2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/sign/dd790e.wgsl.expected.msl b/test/intrinsics/gen/sign/dd790e.wgsl.expected.msl
index b77013a..756a812 100644
--- a/test/intrinsics/gen/sign/dd790e.wgsl.expected.msl
+++ b/test/intrinsics/gen/sign/dd790e.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void sign_dd790e() {
-  float res =   sign(1.0f);
+  float res = sign(1.0f);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/sin/01f241.wgsl.expected.msl b/test/intrinsics/gen/sin/01f241.wgsl.expected.msl
index 72d06c0..656086c 100644
--- a/test/intrinsics/gen/sin/01f241.wgsl.expected.msl
+++ b/test/intrinsics/gen/sin/01f241.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void sin_01f241() {
-  float3 res =   sin(float3());
+  float3 res = sin(float3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/sin/4e3979.wgsl.expected.msl b/test/intrinsics/gen/sin/4e3979.wgsl.expected.msl
index 8490349..fbce764 100644
--- a/test/intrinsics/gen/sin/4e3979.wgsl.expected.msl
+++ b/test/intrinsics/gen/sin/4e3979.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void sin_4e3979() {
-  float4 res =   sin(float4());
+  float4 res = sin(float4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/sin/b78c91.wgsl.expected.msl b/test/intrinsics/gen/sin/b78c91.wgsl.expected.msl
index b356483..2b5020f 100644
--- a/test/intrinsics/gen/sin/b78c91.wgsl.expected.msl
+++ b/test/intrinsics/gen/sin/b78c91.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void sin_b78c91() {
-  float res =   sin(1.0f);
+  float res = sin(1.0f);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/sin/fc8bc4.wgsl.expected.msl b/test/intrinsics/gen/sin/fc8bc4.wgsl.expected.msl
index e66435a..63129b8 100644
--- a/test/intrinsics/gen/sin/fc8bc4.wgsl.expected.msl
+++ b/test/intrinsics/gen/sin/fc8bc4.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void sin_fc8bc4() {
-  float2 res =   sin(float2());
+  float2 res = sin(float2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/sinh/445e33.wgsl.expected.msl b/test/intrinsics/gen/sinh/445e33.wgsl.expected.msl
index aa95482..78d2be0 100644
--- a/test/intrinsics/gen/sinh/445e33.wgsl.expected.msl
+++ b/test/intrinsics/gen/sinh/445e33.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void sinh_445e33() {
-  float4 res =   sinh(float4());
+  float4 res = sinh(float4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/sinh/7bb598.wgsl.expected.msl b/test/intrinsics/gen/sinh/7bb598.wgsl.expected.msl
index e6c5990..79ca78d 100644
--- a/test/intrinsics/gen/sinh/7bb598.wgsl.expected.msl
+++ b/test/intrinsics/gen/sinh/7bb598.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void sinh_7bb598() {
-  float res =   sinh(1.0f);
+  float res = sinh(1.0f);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/sinh/b9860e.wgsl.expected.msl b/test/intrinsics/gen/sinh/b9860e.wgsl.expected.msl
index 5bc5bc4..2122b18 100644
--- a/test/intrinsics/gen/sinh/b9860e.wgsl.expected.msl
+++ b/test/intrinsics/gen/sinh/b9860e.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void sinh_b9860e() {
-  float2 res =   sinh(float2());
+  float2 res = sinh(float2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/sinh/c9a5eb.wgsl.expected.msl b/test/intrinsics/gen/sinh/c9a5eb.wgsl.expected.msl
index 05558c7..27475f4 100644
--- a/test/intrinsics/gen/sinh/c9a5eb.wgsl.expected.msl
+++ b/test/intrinsics/gen/sinh/c9a5eb.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void sinh_c9a5eb() {
-  float3 res =   sinh(float3());
+  float3 res = sinh(float3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/smoothStep/5f615b.wgsl.expected.msl b/test/intrinsics/gen/smoothStep/5f615b.wgsl.expected.msl
index 22a3ab7..8ab52a3 100644
--- a/test/intrinsics/gen/smoothStep/5f615b.wgsl.expected.msl
+++ b/test/intrinsics/gen/smoothStep/5f615b.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void smoothStep_5f615b() {
-  float4 res =   smoothstep(float4(), float4(), float4());
+  float4 res = smoothstep(float4(), float4(), float4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/smoothStep/658be3.wgsl.expected.msl b/test/intrinsics/gen/smoothStep/658be3.wgsl.expected.msl
index 42d4a3a..097061c 100644
--- a/test/intrinsics/gen/smoothStep/658be3.wgsl.expected.msl
+++ b/test/intrinsics/gen/smoothStep/658be3.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void smoothStep_658be3() {
-  float3 res =   smoothstep(float3(), float3(), float3());
+  float3 res = smoothstep(float3(), float3(), float3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/smoothStep/c11eef.wgsl.expected.msl b/test/intrinsics/gen/smoothStep/c11eef.wgsl.expected.msl
index 7788c35..2d1f4a4 100644
--- a/test/intrinsics/gen/smoothStep/c11eef.wgsl.expected.msl
+++ b/test/intrinsics/gen/smoothStep/c11eef.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void smoothStep_c11eef() {
-  float2 res =   smoothstep(float2(), float2(), float2());
+  float2 res = smoothstep(float2(), float2(), float2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/smoothStep/cb0bfb.wgsl.expected.msl b/test/intrinsics/gen/smoothStep/cb0bfb.wgsl.expected.msl
index f963d98..dda677c 100644
--- a/test/intrinsics/gen/smoothStep/cb0bfb.wgsl.expected.msl
+++ b/test/intrinsics/gen/smoothStep/cb0bfb.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void smoothStep_cb0bfb() {
-  float res =   smoothstep(1.0f, 1.0f, 1.0f);
+  float res = smoothstep(1.0f, 1.0f, 1.0f);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/sqrt/20c74e.wgsl.expected.msl b/test/intrinsics/gen/sqrt/20c74e.wgsl.expected.msl
index ebe9cc5..c8dff4a 100644
--- a/test/intrinsics/gen/sqrt/20c74e.wgsl.expected.msl
+++ b/test/intrinsics/gen/sqrt/20c74e.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void sqrt_20c74e() {
-  float res =   sqrt(1.0f);
+  float res = sqrt(1.0f);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/sqrt/8c7024.wgsl.expected.msl b/test/intrinsics/gen/sqrt/8c7024.wgsl.expected.msl
index c6e76d0..f36c0bc 100644
--- a/test/intrinsics/gen/sqrt/8c7024.wgsl.expected.msl
+++ b/test/intrinsics/gen/sqrt/8c7024.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void sqrt_8c7024() {
-  float2 res =   sqrt(float2());
+  float2 res = sqrt(float2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/sqrt/aa0d7a.wgsl.expected.msl b/test/intrinsics/gen/sqrt/aa0d7a.wgsl.expected.msl
index 7de1194..d0b0a61 100644
--- a/test/intrinsics/gen/sqrt/aa0d7a.wgsl.expected.msl
+++ b/test/intrinsics/gen/sqrt/aa0d7a.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void sqrt_aa0d7a() {
-  float4 res =   sqrt(float4());
+  float4 res = sqrt(float4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/sqrt/f8c59a.wgsl.expected.msl b/test/intrinsics/gen/sqrt/f8c59a.wgsl.expected.msl
index a0281f7..b39cb0c 100644
--- a/test/intrinsics/gen/sqrt/f8c59a.wgsl.expected.msl
+++ b/test/intrinsics/gen/sqrt/f8c59a.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void sqrt_f8c59a() {
-  float3 res =   sqrt(float3());
+  float3 res = sqrt(float3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/step/0b073b.wgsl.expected.msl b/test/intrinsics/gen/step/0b073b.wgsl.expected.msl
index 0a76b20..b5d5d02 100644
--- a/test/intrinsics/gen/step/0b073b.wgsl.expected.msl
+++ b/test/intrinsics/gen/step/0b073b.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void step_0b073b() {
-  float res =   step(1.0f, 1.0f);
+  float res = step(1.0f, 1.0f);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/step/19accd.wgsl.expected.msl b/test/intrinsics/gen/step/19accd.wgsl.expected.msl
index a26cee5..51c0088 100644
--- a/test/intrinsics/gen/step/19accd.wgsl.expected.msl
+++ b/test/intrinsics/gen/step/19accd.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void step_19accd() {
-  float2 res =   step(float2(), float2());
+  float2 res = step(float2(), float2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/step/334303.wgsl.expected.msl b/test/intrinsics/gen/step/334303.wgsl.expected.msl
index 8594bfc..82916a6 100644
--- a/test/intrinsics/gen/step/334303.wgsl.expected.msl
+++ b/test/intrinsics/gen/step/334303.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void step_334303() {
-  float3 res =   step(float3(), float3());
+  float3 res = step(float3(), float3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/step/e2b337.wgsl.expected.msl b/test/intrinsics/gen/step/e2b337.wgsl.expected.msl
index d35db64..cb536db 100644
--- a/test/intrinsics/gen/step/e2b337.wgsl.expected.msl
+++ b/test/intrinsics/gen/step/e2b337.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void step_e2b337() {
-  float4 res =   step(float4(), float4());
+  float4 res = step(float4(), float4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/storageBarrier/d87211.wgsl.expected.msl b/test/intrinsics/gen/storageBarrier/d87211.wgsl.expected.msl
index daafd40..53da747 100644
--- a/test/intrinsics/gen/storageBarrier/d87211.wgsl.expected.msl
+++ b/test/intrinsics/gen/storageBarrier/d87211.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void storageBarrier_d87211() {
-    threadgroup_barrier(mem_flags::mem_device);
+  threadgroup_barrier(mem_flags::mem_device);
 }
 
 kernel void compute_main() {
diff --git a/test/intrinsics/gen/tan/244e2a.wgsl.expected.msl b/test/intrinsics/gen/tan/244e2a.wgsl.expected.msl
index 71c4d77..d1b34a4 100644
--- a/test/intrinsics/gen/tan/244e2a.wgsl.expected.msl
+++ b/test/intrinsics/gen/tan/244e2a.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void tan_244e2a() {
-  float4 res =   tan(float4());
+  float4 res = tan(float4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/tan/2f030e.wgsl.expected.msl b/test/intrinsics/gen/tan/2f030e.wgsl.expected.msl
index 10fd660..81c0766 100644
--- a/test/intrinsics/gen/tan/2f030e.wgsl.expected.msl
+++ b/test/intrinsics/gen/tan/2f030e.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void tan_2f030e() {
-  float res =   tan(1.0f);
+  float res = tan(1.0f);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/tan/7ea104.wgsl.expected.msl b/test/intrinsics/gen/tan/7ea104.wgsl.expected.msl
index f4ef836..89db1ac 100644
--- a/test/intrinsics/gen/tan/7ea104.wgsl.expected.msl
+++ b/test/intrinsics/gen/tan/7ea104.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void tan_7ea104() {
-  float3 res =   tan(float3());
+  float3 res = tan(float3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/tan/8ce3e9.wgsl.expected.msl b/test/intrinsics/gen/tan/8ce3e9.wgsl.expected.msl
index 89bfdfe..e460fae 100644
--- a/test/intrinsics/gen/tan/8ce3e9.wgsl.expected.msl
+++ b/test/intrinsics/gen/tan/8ce3e9.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void tan_8ce3e9() {
-  float2 res =   tan(float2());
+  float2 res = tan(float2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/tanh/5663c5.wgsl.expected.msl b/test/intrinsics/gen/tanh/5663c5.wgsl.expected.msl
index 421d1a1..5a82feb 100644
--- a/test/intrinsics/gen/tanh/5663c5.wgsl.expected.msl
+++ b/test/intrinsics/gen/tanh/5663c5.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void tanh_5663c5() {
-  float4 res =   tanh(float4());
+  float4 res = tanh(float4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/tanh/5724b3.wgsl.expected.msl b/test/intrinsics/gen/tanh/5724b3.wgsl.expected.msl
index 90440da..878775f 100644
--- a/test/intrinsics/gen/tanh/5724b3.wgsl.expected.msl
+++ b/test/intrinsics/gen/tanh/5724b3.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void tanh_5724b3() {
-  float2 res =   tanh(float2());
+  float2 res = tanh(float2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/tanh/9f9fb9.wgsl.expected.msl b/test/intrinsics/gen/tanh/9f9fb9.wgsl.expected.msl
index 9e0039b..b93aca0 100644
--- a/test/intrinsics/gen/tanh/9f9fb9.wgsl.expected.msl
+++ b/test/intrinsics/gen/tanh/9f9fb9.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void tanh_9f9fb9() {
-  float3 res =   tanh(float3());
+  float3 res = tanh(float3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/tanh/c15fdb.wgsl.expected.msl b/test/intrinsics/gen/tanh/c15fdb.wgsl.expected.msl
index 31287f6..be4a4b6 100644
--- a/test/intrinsics/gen/tanh/c15fdb.wgsl.expected.msl
+++ b/test/intrinsics/gen/tanh/c15fdb.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void tanh_c15fdb() {
-  float res =   tanh(1.0f);
+  float res = tanh(1.0f);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/transpose/2585cd.wgsl.expected.msl b/test/intrinsics/gen/transpose/2585cd.wgsl.expected.msl
index 4ee05b0..6ae1bbd 100644
--- a/test/intrinsics/gen/transpose/2585cd.wgsl.expected.msl
+++ b/test/intrinsics/gen/transpose/2585cd.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void transpose_2585cd() {
-  float3x4 res =   transpose(float4x3());
+  float3x4 res = transpose(float4x3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/transpose/31d679.wgsl.expected.msl b/test/intrinsics/gen/transpose/31d679.wgsl.expected.msl
index 83a7f16..f76b6eb 100644
--- a/test/intrinsics/gen/transpose/31d679.wgsl.expected.msl
+++ b/test/intrinsics/gen/transpose/31d679.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void transpose_31d679() {
-  float2x2 res =   transpose(float2x2());
+  float2x2 res = transpose(float2x2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/transpose/31e37e.wgsl.expected.msl b/test/intrinsics/gen/transpose/31e37e.wgsl.expected.msl
index 8dad9cd..6549c60 100644
--- a/test/intrinsics/gen/transpose/31e37e.wgsl.expected.msl
+++ b/test/intrinsics/gen/transpose/31e37e.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void transpose_31e37e() {
-  float2x4 res =   transpose(float4x2());
+  float2x4 res = transpose(float4x2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/transpose/4ce359.wgsl.expected.msl b/test/intrinsics/gen/transpose/4ce359.wgsl.expected.msl
index 56e2901..82ad61f 100644
--- a/test/intrinsics/gen/transpose/4ce359.wgsl.expected.msl
+++ b/test/intrinsics/gen/transpose/4ce359.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void transpose_4ce359() {
-  float4x2 res =   transpose(float2x4());
+  float4x2 res = transpose(float2x4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/transpose/4dc9a1.wgsl.expected.msl b/test/intrinsics/gen/transpose/4dc9a1.wgsl.expected.msl
index d152f3c..856b2cc 100644
--- a/test/intrinsics/gen/transpose/4dc9a1.wgsl.expected.msl
+++ b/test/intrinsics/gen/transpose/4dc9a1.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void transpose_4dc9a1() {
-  float3x2 res =   transpose(float2x3());
+  float3x2 res = transpose(float2x3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/transpose/854336.wgsl.expected.msl b/test/intrinsics/gen/transpose/854336.wgsl.expected.msl
index 66006f0..11184d7 100644
--- a/test/intrinsics/gen/transpose/854336.wgsl.expected.msl
+++ b/test/intrinsics/gen/transpose/854336.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void transpose_854336() {
-  float3x3 res =   transpose(float3x3());
+  float3x3 res = transpose(float3x3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/transpose/c1b600.wgsl.expected.msl b/test/intrinsics/gen/transpose/c1b600.wgsl.expected.msl
index 0a3a993..59920dc 100644
--- a/test/intrinsics/gen/transpose/c1b600.wgsl.expected.msl
+++ b/test/intrinsics/gen/transpose/c1b600.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void transpose_c1b600() {
-  float4x4 res =   transpose(float4x4());
+  float4x4 res = transpose(float4x4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/transpose/d8f8ba.wgsl.expected.msl b/test/intrinsics/gen/transpose/d8f8ba.wgsl.expected.msl
index ff3a0b9..98f2384 100644
--- a/test/intrinsics/gen/transpose/d8f8ba.wgsl.expected.msl
+++ b/test/intrinsics/gen/transpose/d8f8ba.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void transpose_d8f8ba() {
-  float4x3 res =   transpose(float3x4());
+  float4x3 res = transpose(float3x4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/transpose/ed4bdc.wgsl.expected.msl b/test/intrinsics/gen/transpose/ed4bdc.wgsl.expected.msl
index 87823db..4fdec15 100644
--- a/test/intrinsics/gen/transpose/ed4bdc.wgsl.expected.msl
+++ b/test/intrinsics/gen/transpose/ed4bdc.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void transpose_ed4bdc() {
-  float2x3 res =   transpose(float3x2());
+  float2x3 res = transpose(float3x2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/trunc/562d05.wgsl.expected.msl b/test/intrinsics/gen/trunc/562d05.wgsl.expected.msl
index 061a926..062cae4 100644
--- a/test/intrinsics/gen/trunc/562d05.wgsl.expected.msl
+++ b/test/intrinsics/gen/trunc/562d05.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void trunc_562d05() {
-  float3 res =   trunc(float3());
+  float3 res = trunc(float3());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/trunc/e183aa.wgsl.expected.msl b/test/intrinsics/gen/trunc/e183aa.wgsl.expected.msl
index 4844235..847cb9d 100644
--- a/test/intrinsics/gen/trunc/e183aa.wgsl.expected.msl
+++ b/test/intrinsics/gen/trunc/e183aa.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void trunc_e183aa() {
-  float4 res =   trunc(float4());
+  float4 res = trunc(float4());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/trunc/eb83df.wgsl.expected.msl b/test/intrinsics/gen/trunc/eb83df.wgsl.expected.msl
index 4e8c7ac..e9b0df0 100644
--- a/test/intrinsics/gen/trunc/eb83df.wgsl.expected.msl
+++ b/test/intrinsics/gen/trunc/eb83df.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void trunc_eb83df() {
-  float res =   trunc(1.0f);
+  float res = trunc(1.0f);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/trunc/f370d3.wgsl.expected.msl b/test/intrinsics/gen/trunc/f370d3.wgsl.expected.msl
index 2b58e71..34e6620 100644
--- a/test/intrinsics/gen/trunc/f370d3.wgsl.expected.msl
+++ b/test/intrinsics/gen/trunc/f370d3.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void trunc_f370d3() {
-  float2 res =   trunc(float2());
+  float2 res = trunc(float2());
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/unpack2x16float/32a5cf.wgsl.expected.msl b/test/intrinsics/gen/unpack2x16float/32a5cf.wgsl.expected.msl
index 210f23e..e5746f1 100644
--- a/test/intrinsics/gen/unpack2x16float/32a5cf.wgsl.expected.msl
+++ b/test/intrinsics/gen/unpack2x16float/32a5cf.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void unpack2x16float_32a5cf() {
-  float2 res =   float2(as_type<half2>(1u));
+  float2 res = float2(as_type<half2>(1u));
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/unpack2x16snorm/b4aea6.wgsl.expected.msl b/test/intrinsics/gen/unpack2x16snorm/b4aea6.wgsl.expected.msl
index 2795c37..2374a87 100644
--- a/test/intrinsics/gen/unpack2x16snorm/b4aea6.wgsl.expected.msl
+++ b/test/intrinsics/gen/unpack2x16snorm/b4aea6.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void unpack2x16snorm_b4aea6() {
-  float2 res =   unpack_snorm2x16_to_float(1u);
+  float2 res = unpack_snorm2x16_to_float(1u);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/unpack2x16unorm/7699c0.wgsl.expected.msl b/test/intrinsics/gen/unpack2x16unorm/7699c0.wgsl.expected.msl
index 706b45e..45815ca 100644
--- a/test/intrinsics/gen/unpack2x16unorm/7699c0.wgsl.expected.msl
+++ b/test/intrinsics/gen/unpack2x16unorm/7699c0.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void unpack2x16unorm_7699c0() {
-  float2 res =   unpack_unorm2x16_to_float(1u);
+  float2 res = unpack_unorm2x16_to_float(1u);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/unpack4x8snorm/523fb3.wgsl.expected.msl b/test/intrinsics/gen/unpack4x8snorm/523fb3.wgsl.expected.msl
index af4fb45..06cc514 100644
--- a/test/intrinsics/gen/unpack4x8snorm/523fb3.wgsl.expected.msl
+++ b/test/intrinsics/gen/unpack4x8snorm/523fb3.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void unpack4x8snorm_523fb3() {
-  float4 res =   unpack_snorm4x8_to_float(1u);
+  float4 res = unpack_snorm4x8_to_float(1u);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/unpack4x8unorm/750c74.wgsl.expected.msl b/test/intrinsics/gen/unpack4x8unorm/750c74.wgsl.expected.msl
index 5c4da0d..e6226c8 100644
--- a/test/intrinsics/gen/unpack4x8unorm/750c74.wgsl.expected.msl
+++ b/test/intrinsics/gen/unpack4x8unorm/750c74.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 void unpack4x8unorm_750c74() {
-  float4 res =   unpack_unorm4x8_to_float(1u);
+  float4 res = unpack_unorm4x8_to_float(1u);
 }
 
 vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/workgroupBarrier/a17f7f.wgsl.expected.msl b/test/intrinsics/gen/workgroupBarrier/a17f7f.wgsl.expected.msl
index a3dcb47..ed5ed22 100644
--- a/test/intrinsics/gen/workgroupBarrier/a17f7f.wgsl.expected.msl
+++ b/test/intrinsics/gen/workgroupBarrier/a17f7f.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void workgroupBarrier_a17f7f() {
-    threadgroup_barrier(mem_flags::mem_threadgroup);
+  threadgroup_barrier(mem_flags::mem_threadgroup);
 }
 
 kernel void compute_main() {
diff --git a/test/ptr_ref/load/local/ptr_workgroup.wgsl.expected.msl b/test/ptr_ref/load/local/ptr_workgroup.wgsl.expected.msl
index 124f375..f8f9031 100644
--- a/test/ptr_ref/load/local/ptr_workgroup.wgsl.expected.msl
+++ b/test/ptr_ref/load/local/ptr_workgroup.wgsl.expected.msl
@@ -6,7 +6,7 @@
   if ((local_invocation_index == 0u)) {
     tint_symbol_2 = int();
   }
-    threadgroup_barrier(mem_flags::mem_threadgroup);
+  threadgroup_barrier(mem_flags::mem_threadgroup);
   tint_symbol_2 = 123;
   int const use = (tint_symbol_2 + 1);
   return;
diff --git a/test/samples/compute_boids.wgsl.expected.msl b/test/samples/compute_boids.wgsl.expected.msl
index f0a1ab8..dae2f1f 100644
--- a/test/samples/compute_boids.wgsl.expected.msl
+++ b/test/samples/compute_boids.wgsl.expected.msl
@@ -36,8 +36,8 @@
   float2 const a_particlePos = tint_symbol.a_particlePos;
   float2 const a_particleVel = tint_symbol.a_particleVel;
   float2 const a_pos = tint_symbol.a_pos;
-  float angle = -(  atan2(a_particleVel.x, a_particleVel.y));
-  float2 pos = float2(((a_pos.x *   cos(angle)) - (a_pos.y *   sin(angle))), ((a_pos.x *   sin(angle)) + (a_pos.y *   cos(angle))));
+  float angle = -(atan2(a_particleVel.x, a_particleVel.y));
+  float2 pos = float2(((a_pos.x * cos(angle)) - (a_pos.y * sin(angle))), ((a_pos.x * sin(angle)) + (a_pos.y * cos(angle))));
   tint_symbol_2 const tint_symbol_5 = {.value=float4((pos + a_particlePos), 0.0f, 1.0f)};
   return tint_symbol_5;
 }
@@ -75,14 +75,14 @@
       }
       pos = particlesA.particles.arr[i].pos.xy;
       vel = particlesA.particles.arr[i].vel.xy;
-      if ((      distance(pos, vPos) < params.rule1Distance)) {
+      if ((distance(pos, vPos) < params.rule1Distance)) {
         cMass = (cMass + pos);
         cMassCount = (cMassCount + 1);
       }
-      if ((      distance(pos, vPos) < params.rule2Distance)) {
+      if ((distance(pos, vPos) < params.rule2Distance)) {
         colVel = (colVel - (pos - vPos));
       }
-      if ((      distance(pos, vPos) < params.rule3Distance)) {
+      if ((distance(pos, vPos) < params.rule3Distance)) {
         cVel = (cVel + vel);
         cVelCount = (cVelCount + 1);
       }
@@ -98,7 +98,7 @@
     cVel = (cVel / float2(float(cVelCount), float(cVelCount)));
   }
   vVel = (((vVel + (cMass * params.rule1Scale)) + (colVel * params.rule2Scale)) + (cVel * params.rule3Scale));
-  vVel = (  normalize(vVel) *   clamp(  length(vVel), 0.0f, 0.100000001f));
+  vVel = (normalize(vVel) * clamp(length(vVel), 0.0f, 0.100000001f));
   vPos = (vPos + (vVel * params.deltaT));
   if ((vPos.x < -1.0f)) {
     vPos.x = 1.0f;
diff --git a/test/var/workgroup.wgsl.expected.msl b/test/var/workgroup.wgsl.expected.msl
index a0c3800..2105f71 100644
--- a/test/var/workgroup.wgsl.expected.msl
+++ b/test/var/workgroup.wgsl.expected.msl
@@ -29,7 +29,7 @@
   if ((local_invocation_index == 0u)) {
     tint_symbol_9 = int();
   }
-    threadgroup_barrier(mem_flags::mem_threadgroup);
+  threadgroup_barrier(mem_flags::mem_threadgroup);
   tint_symbol_9 = 42;
   uses_a(&(tint_symbol_9));
   return;
@@ -40,7 +40,7 @@
   if ((local_invocation_index_1 == 0u)) {
     tint_symbol_10 = int();
   }
-    threadgroup_barrier(mem_flags::mem_threadgroup);
+  threadgroup_barrier(mem_flags::mem_threadgroup);
   tint_symbol_10 = 7;
   uses_b(&(tint_symbol_10));
   return;
@@ -53,7 +53,7 @@
     tint_symbol_11 = int();
     tint_symbol_12 = int();
   }
-    threadgroup_barrier(mem_flags::mem_threadgroup);
+  threadgroup_barrier(mem_flags::mem_threadgroup);
   outer(&(tint_symbol_11), &(tint_symbol_12));
   no_uses();
   return;