Fixed while/for loops not returning from function
This commit is contained in:
parent
5646ff1da1
commit
88e4b92b6a
|
@ -705,7 +705,14 @@ namespace Upsilon.Evaluator
|
||||||
innerEvaluator.Scope.CreateLocal(e.Variables[1], table[1]);
|
innerEvaluator.Scope.CreateLocal(e.Variables[1], table[1]);
|
||||||
innerEvaluator.EvaluateBoundBlockStatement((BoundBlockStatement) e.Block);
|
innerEvaluator.EvaluateBoundBlockStatement((BoundBlockStatement) e.Block);
|
||||||
if (innerEvaluator.HasBroken || innerEvaluator.HasReturned)
|
if (innerEvaluator.HasBroken || innerEvaluator.HasReturned)
|
||||||
|
{
|
||||||
|
if (innerEvaluator.HasReturned)
|
||||||
|
{
|
||||||
|
HasReturned = innerEvaluator.HasReturned;
|
||||||
|
_returnValue = innerEvaluator._returnValue;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -719,7 +726,14 @@ namespace Upsilon.Evaluator
|
||||||
{
|
{
|
||||||
innerEvaluator.EvaluateBoundBlockStatement(block);
|
innerEvaluator.EvaluateBoundBlockStatement(block);
|
||||||
if (innerEvaluator.HasBroken || innerEvaluator.HasReturned)
|
if (innerEvaluator.HasBroken || innerEvaluator.HasReturned)
|
||||||
|
{
|
||||||
|
if (innerEvaluator.HasReturned)
|
||||||
|
{
|
||||||
|
HasReturned = innerEvaluator.HasReturned;
|
||||||
|
_returnValue = innerEvaluator._returnValue;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,6 @@ using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Collections.Immutable;
|
using System.Collections.Immutable;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Upsilon.Text;
|
|
||||||
|
|
||||||
namespace Upsilon.Parser
|
namespace Upsilon.Parser
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue