diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 9d55ca8..a77e480 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -408,6 +408,7 @@
     writer/wgsl/generator_impl_array_accessor_test.cc
     writer/wgsl/generator_impl_as_test.cc
     writer/wgsl/generator_impl_assign_test.cc
+    writer/wgsl/generator_impl_break_test.cc
     writer/wgsl/generator_impl_call_test.cc
     writer/wgsl/generator_impl_cast_test.cc
     writer/wgsl/generator_impl_entry_point_test.cc
diff --git a/src/ast/function.h b/src/ast/function.h
index 6a1158b..691f059 100644
--- a/src/ast/function.h
+++ b/src/ast/function.h
@@ -86,7 +86,7 @@
   /// @returns the function body
   const std::vector<std::unique_ptr<Statement>>& body() const { return body_; }
 
-  /// @returns true if the name and path are both present
+  /// @returns true if the name and type are both present
   bool IsValid() const override;
 
   /// Writes a representation of the node to the output stream
diff --git a/src/writer/wgsl/generator_impl.cc b/src/writer/wgsl/generator_impl.cc
index 7a728e1..ad9b3da 100644
--- a/src/writer/wgsl/generator_impl.cc
+++ b/src/writer/wgsl/generator_impl.cc
@@ -22,6 +22,7 @@
 #include "src/ast/assignment_statement.h"
 #include "src/ast/binding_decoration.h"
 #include "src/ast/bool_literal.h"
+#include "src/ast/break_statement.h"
 #include "src/ast/builtin_decoration.h"
 #include "src/ast/call_expression.h"
 #include "src/ast/cast_expression.h"
@@ -645,12 +646,17 @@
   if (stmt->IsAssign()) {
     return EmitAssign(stmt->AsAssign());
   }
+  if (stmt->IsBreak()) {
+    return EmitBreak(stmt->AsBreak());
+  }
 
   error_ = "unknown statement type";
   return false;
 }
 
 bool GeneratorImpl::EmitAssign(ast::AssignmentStatement* stmt) {
+  make_indent();
+
   if (!EmitExpression(stmt->lhs())) {
     return false;
   }
@@ -666,6 +672,31 @@
   return true;
 }
 
+bool GeneratorImpl::EmitBreak(ast::BreakStatement* stmt) {
+  make_indent();
+
+  out_ << "break";
+
+  if (stmt->condition() != ast::StatementCondition::kNone) {
+    out_ << " ";
+    if (stmt->condition() == ast::StatementCondition::kIf) {
+      out_ << "if";
+    } else {
+      out_ << "unless";
+    }
+
+    out_ << " (";
+    if (!EmitExpression(stmt->conditional())) {
+      return false;
+    }
+    out_ << ")";
+  }
+
+  out_ << ";";
+
+  return true;
+}
+
 }  // namespace wgsl
 }  // namespace writer
 }  // namespace tint
diff --git a/src/writer/wgsl/generator_impl.h b/src/writer/wgsl/generator_impl.h
index 7b8f542..6dc47e2 100644
--- a/src/writer/wgsl/generator_impl.h
+++ b/src/writer/wgsl/generator_impl.h
@@ -82,6 +82,10 @@
   /// @param stmt the statement to emit
   /// @returns true if the statement was emitted successfully
   bool EmitAssign(ast::AssignmentStatement* 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 expr the call expression
   /// @returns true if the call expression is emitted
diff --git a/src/writer/wgsl/generator_impl_assign_test.cc b/src/writer/wgsl/generator_impl_assign_test.cc
index 16d973d..a3e2ece 100644
--- a/src/writer/wgsl/generator_impl_assign_test.cc
+++ b/src/writer/wgsl/generator_impl_assign_test.cc
@@ -33,8 +33,10 @@
   ast::AssignmentStatement assign(std::move(lhs), std::move(rhs));
 
   GeneratorImpl g;
+  g.increment_indent();
+
   ASSERT_TRUE(g.EmitStatement(&assign)) << g.error();
-  EXPECT_EQ(g.result(), "lhs = rhs;");
+  EXPECT_EQ(g.result(), "  lhs = rhs;");
 }
 
 }  // namespace
diff --git a/src/writer/wgsl/generator_impl_break_test.cc b/src/writer/wgsl/generator_impl_break_test.cc
new file mode 100644
index 0000000..da057a6
--- /dev/null
+++ b/src/writer/wgsl/generator_impl_break_test.cc
@@ -0,0 +1,65 @@
+// Copyright 2020 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include <memory>
+#include <vector>
+
+#include "gtest/gtest.h"
+#include "src/ast/break_statement.h"
+#include "src/ast/identifier_expression.h"
+#include "src/writer/wgsl/generator_impl.h"
+
+namespace tint {
+namespace writer {
+namespace wgsl {
+namespace {
+
+using GeneratorImplTest = testing::Test;
+
+TEST_F(GeneratorImplTest, Emit_Break) {
+  ast::BreakStatement b;
+
+  GeneratorImpl g;
+  g.increment_indent();
+
+  ASSERT_TRUE(g.EmitStatement(&b)) << g.error();
+  EXPECT_EQ(g.result(), "  break;");
+}
+
+TEST_F(GeneratorImplTest, Emit_BreakWithIf) {
+  auto expr = std::make_unique<ast::IdentifierExpression>("expr");
+  ast::BreakStatement b(ast::StatementCondition::kIf, std::move(expr));
+
+  GeneratorImpl g;
+  g.increment_indent();
+
+  ASSERT_TRUE(g.EmitStatement(&b)) << g.error();
+  EXPECT_EQ(g.result(), "  break if (expr);");
+}
+
+TEST_F(GeneratorImplTest, Emit_BreakWithUnless) {
+  auto expr = std::make_unique<ast::IdentifierExpression>("expr");
+  ast::BreakStatement b(ast::StatementCondition::kUnless, std::move(expr));
+
+  GeneratorImpl g;
+  g.increment_indent();
+
+  ASSERT_TRUE(g.EmitStatement(&b)) << g.error();
+  EXPECT_EQ(g.result(), "  break unless (expr);");
+}
+
+}  // namespace
+}  // namespace wgsl
+}  // namespace writer
+}  // namespace tint
