Made ResolveVariableOrConstant less hacky.

This commit is contained in:
arookas 2015-12-23 20:28:03 -05:00
parent c4532d85e7
commit 102f623cd1

View file

@ -213,22 +213,23 @@ namespace arookas
public void ResolveVariableOrConstant(sunIdentifier node, out sunVariableSymbol variableInfo, out sunConstInfo constInfo)
{
try
variableInfo = null;
constInfo = null;
// walk the stack backwards to resolve to the latest declaration
for (int i = Scopes.Count - 1; i >= 0; --i)
{
variableInfo = ResolveVariable(node);
}
catch
{
variableInfo = null;
}
try
{
constInfo = ResolveConstant(node);
}
catch
{
constInfo = null;
var variable = Scopes[i].ResolveVariable(node.Value);
if (variable != null)
{
variableInfo = variable;
}
var constant = Scopes[i].ResolveConstant(node.Value);
if (constant != null)
{
constInfo = constant;
}
}
throw new sunUndeclaredVariableException(node);
}
void WriteHeader()