Index: src/AST/Convert.cpp
===================================================================
--- src/AST/Convert.cpp	(revision 3e94a2320178a198595aea8d54df01c0ba38565c)
+++ src/AST/Convert.cpp	(revision 835d6e8a258b0c508e242693bfb325e57857db4a)
@@ -559,5 +559,5 @@
 		auto stmt = new SuspendStmt();
 		stmt->then   = get<CompoundStmt>().accept1( node->then   );
-		switch(node->type) {
+		switch (node->kind) {
 			case ast::SuspendStmt::None     : stmt->type = SuspendStmt::None     ; break;
 			case ast::SuspendStmt::Coroutine: stmt->type = SuspendStmt::Coroutine; break;
@@ -2131,5 +2131,5 @@
 	virtual void visit( const SuspendStmt * old ) override final {
 		if ( inCache( old ) ) return;
-		ast::SuspendStmt::Type type;
+		ast::SuspendStmt::Kind type;
 		switch (old->type) {
 			case SuspendStmt::Coroutine: type = ast::SuspendStmt::Coroutine; break;
Index: src/AST/Print.cpp
===================================================================
--- src/AST/Print.cpp	(revision 3e94a2320178a198595aea8d54df01c0ba38565c)
+++ src/AST/Print.cpp	(revision 835d6e8a258b0c508e242693bfb325e57857db4a)
@@ -739,8 +739,8 @@
 	virtual const ast::Stmt * visit( const ast::SuspendStmt * node ) override final {
 		os << "Suspend Statement";
-		switch (node->type) {
-			case ast::SuspendStmt::None     : os << " with implicit target"; break;
-			case ast::SuspendStmt::Generator: os << " for generator"; break;
-			case ast::SuspendStmt::Coroutine: os << " for coroutine"; break;
+		switch (node->kind) {
+		case ast::SuspendStmt::None     : os << " with implicit target"; break;
+		case ast::SuspendStmt::Generator: os << " for generator"; break;
+		case ast::SuspendStmt::Coroutine: os << " for coroutine"; break;
 		}
 		os << endl;
Index: src/AST/Stmt.hpp
===================================================================
--- src/AST/Stmt.hpp	(revision 3e94a2320178a198595aea8d54df01c0ba38565c)
+++ src/AST/Stmt.hpp	(revision 835d6e8a258b0c508e242693bfb325e57857db4a)
@@ -367,8 +367,8 @@
   public:
 	ptr<CompoundStmt> then;
-	enum Type { None, Coroutine, Generator } type = None;
-
-	SuspendStmt( const CodeLocation & loc, const CompoundStmt * then, Type type, const std::vector<Label> && labels = {} )
-		: Stmt(loc, std::move(labels)), then(then), type(type) {}
+	enum Kind { None, Coroutine, Generator } kind = None;
+
+	SuspendStmt( const CodeLocation & loc, const CompoundStmt * then, Kind kind, const std::vector<Label> && labels = {} )
+		: Stmt(loc, std::move(labels)), then(then), kind(kind) {}
 
 	const Stmt * accept( Visitor & v ) const override { return v.visit( this ); }
Index: src/Concurrency/KeywordsNew.cpp
===================================================================
--- src/Concurrency/KeywordsNew.cpp	(revision 3e94a2320178a198595aea8d54df01c0ba38565c)
+++ src/Concurrency/KeywordsNew.cpp	(revision 835d6e8a258b0c508e242693bfb325e57857db4a)
@@ -779,5 +779,5 @@
 
 const ast::Stmt * SuspendKeyword::postvisit( const ast::SuspendStmt * stmt ) {
-	switch ( stmt->type ) {
+	switch ( stmt->kind ) {
 	case ast::SuspendStmt::None:
 		// Use the context to determain the implicit target.
Index: src/Parser/ParseNode.h
===================================================================
--- src/Parser/ParseNode.h	(revision 3e94a2320178a198595aea8d54df01c0ba38565c)
+++ src/Parser/ParseNode.h	(revision 835d6e8a258b0c508e242693bfb325e57857db4a)
@@ -437,5 +437,5 @@
 ast::Stmt * build_asm( const CodeLocation &, bool voltile, ast::Expr * instruction, ExpressionNode * output = nullptr, ExpressionNode * input = nullptr, ExpressionNode * clobber = nullptr, LabelNode * gotolabels = nullptr );
 ast::Stmt * build_directive( const CodeLocation &, std::string * directive );
-ast::SuspendStmt * build_suspend( const CodeLocation &, StatementNode *, ast::SuspendStmt::Type );
+ast::SuspendStmt * build_suspend( const CodeLocation &, StatementNode *, ast::SuspendStmt::Kind );
 ast::WaitForStmt * build_waitfor( const CodeLocation &, ast::WaitForStmt * existing, ExpressionNode * when, ExpressionNode * targetExpr, StatementNode * stmt );
 ast::WaitForStmt * build_waitfor_else( const CodeLocation &, ast::WaitForStmt * existing, ExpressionNode * when, StatementNode * stmt );
Index: src/Parser/StatementNode.cc
===================================================================
--- src/Parser/StatementNode.cc	(revision 3e94a2320178a198595aea8d54df01c0ba38565c)
+++ src/Parser/StatementNode.cc	(revision 835d6e8a258b0c508e242693bfb325e57857db4a)
@@ -362,5 +362,5 @@
 } // build_finally
 
-ast::SuspendStmt * build_suspend( const CodeLocation & location, StatementNode * then, ast::SuspendStmt::Type type ) {
+ast::SuspendStmt * build_suspend( const CodeLocation & location, StatementNode * then, ast::SuspendStmt::Kind kind ) {
 	std::vector<ast::ptr<ast::Stmt>> stmts;
 	buildMoveList( then, stmts );
@@ -370,7 +370,5 @@
 		then2 = stmts.front().strict_as<ast::CompoundStmt>();
 	}
-	auto node = new ast::SuspendStmt( location, then2, ast::SuspendStmt::None );
-	node->type = type;
-	return node;
+	return new ast::SuspendStmt( location, then2, kind );
 } // build_suspend
 
