fix #834
This commit is contained in:
parent
ebcf0d44f6
commit
08060fa245
|
|
@ -118,6 +118,43 @@ namespace PascalABCCompiler.SyntaxTree
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void CompareInternal(addressed_value_list left, addressed_value_list right)
|
||||||
|
{
|
||||||
|
if (left == null && right != null || left != null && right == null)
|
||||||
|
throw_not_equal(left, right);
|
||||||
|
if (left != null && right != null)
|
||||||
|
{
|
||||||
|
if (left.variables.Count != right.variables.Count)
|
||||||
|
throw_not_equal(left, right);
|
||||||
|
for (int i = 0; i < left.variables.Count; i++)
|
||||||
|
{
|
||||||
|
CompareInternal(left.variables[i], right.variables[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void CompareInternal(assign_tuple left, assign_tuple right)
|
||||||
|
{
|
||||||
|
if (left == null && right != null || left != null && right == null)
|
||||||
|
throw_not_equal(left, right);
|
||||||
|
if (left != null && right != null)
|
||||||
|
{
|
||||||
|
CompareInternal(left.vars, right.vars);
|
||||||
|
CompareInternal(left.expr, right.expr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void CompareInternal(loop_stmt left, loop_stmt right)
|
||||||
|
{
|
||||||
|
if (left == null && right != null || left != null && right == null)
|
||||||
|
throw_not_equal(left, right);
|
||||||
|
if (left != null && right != null)
|
||||||
|
{
|
||||||
|
CompareInternal(left.count, right.count);
|
||||||
|
CompareInternal(left.stmt, right.stmt);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void CompareInternal(attribute left, attribute right)
|
public void CompareInternal(attribute left, attribute right)
|
||||||
{
|
{
|
||||||
if (left == null && right != null || left != null && right == null)
|
if (left == null && right != null || left != null && right == null)
|
||||||
|
|
@ -1649,6 +1686,10 @@ namespace PascalABCCompiler.SyntaxTree
|
||||||
CompareInternal(left as assign, right as assign);
|
CompareInternal(left as assign, right as assign);
|
||||||
else if (left is yield_node)
|
else if (left is yield_node)
|
||||||
CompareInternal(left as yield_node, right as yield_node);
|
CompareInternal(left as yield_node, right as yield_node);
|
||||||
|
else if (left is loop_stmt)
|
||||||
|
CompareInternal(left as loop_stmt, right as loop_stmt);
|
||||||
|
else if (left is assign_tuple)
|
||||||
|
CompareInternal(left as assign_tuple, right as assign_tuple);
|
||||||
//else if (left is expression) // SSM 12/06/15
|
//else if (left is expression) // SSM 12/06/15
|
||||||
// CompareInternal(left as expression, right as expression);
|
// CompareInternal(left as expression, right as expression);
|
||||||
|
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue