Index: src/Parser/StatementNode.cpp
===================================================================
--- src/Parser/StatementNode.cpp	(revision 152944eeaf57425c9d8f265aa5a96b4057b9f42f)
+++ src/Parser/StatementNode.cpp	(revision fca78f10fcf2198f57e0f9e7ea3fe351ee91befa)
@@ -213,9 +213,11 @@
 	if ( forctl->range_over ) {
 		ast::Expr * range_over = maybeMoveBuild( forctl->range_over );
-		auto kind = forctl->kind;						// save before delete, used in return
+		bool isIncreasing = forctl->kind == OperKinds::LEThan;
+		// Copy all the data needed before the delete.
 		delete forctl;
-		return new ast::ForStmt( location,
+		return new ast::ForeachStmt( location,
 			std::move( astinit ),
-			range_over, kind == OperKinds::LEThan,
+			range_over,
+			isIncreasing ? ast::IncreasingRange : ast::DecreasingRange,
 			buildMoveSingle( stmt ),
 			buildMoveOptional( else_ )
