From 88e4b92b6af456361bc02c4c501ca2251f2449b2 Mon Sep 17 00:00:00 2001 From: Deukhoofd Date: Mon, 10 Dec 2018 17:03:04 +0100 Subject: [PATCH] Fixed while/for loops not returning from function --- Upsilon/Evaluator/Evaluator.cs | 14 ++++++++++++++ Upsilon/Parser/Parser.cs | 1 - 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/Upsilon/Evaluator/Evaluator.cs b/Upsilon/Evaluator/Evaluator.cs index 87bcf55..d9ccd71 100644 --- a/Upsilon/Evaluator/Evaluator.cs +++ b/Upsilon/Evaluator/Evaluator.cs @@ -705,7 +705,14 @@ namespace Upsilon.Evaluator innerEvaluator.Scope.CreateLocal(e.Variables[1], table[1]); innerEvaluator.EvaluateBoundBlockStatement((BoundBlockStatement) e.Block); if (innerEvaluator.HasBroken || innerEvaluator.HasReturned) + { + if (innerEvaluator.HasReturned) + { + HasReturned = innerEvaluator.HasReturned; + _returnValue = innerEvaluator._returnValue; + } break; + } } } } @@ -719,7 +726,14 @@ namespace Upsilon.Evaluator { innerEvaluator.EvaluateBoundBlockStatement(block); if (innerEvaluator.HasBroken || innerEvaluator.HasReturned) + { + if (innerEvaluator.HasReturned) + { + HasReturned = innerEvaluator.HasReturned; + _returnValue = innerEvaluator._returnValue; + } break; + } } } } diff --git a/Upsilon/Parser/Parser.cs b/Upsilon/Parser/Parser.cs index 5e14b97..4c725ef 100644 --- a/Upsilon/Parser/Parser.cs +++ b/Upsilon/Parser/Parser.cs @@ -2,7 +2,6 @@ using System; using System.Collections.Generic; using System.Collections.Immutable; using System.Linq; -using Upsilon.Text; namespace Upsilon.Parser {