private Node TransformVariableInitializers(VariableDeclaration node)
{
IList<VariableInitializer> vars = node.GetVariables();
int size = vars.Count;
int i = 0;
foreach (VariableInitializer var in vars)
{
AstNode target = var.GetTarget();
AstNode init = var.GetInitializer();
Node left = null;
if (var.IsDestructuring())
{
Decompile(target);
// decompile but don't transform
left = target;
}
else
{
left = Transform(target);
}
Node right = null;
if (init != null)
{
decompiler.AddToken(Token.ASSIGN);
right = Transform(init);
}
if (var.IsDestructuring())
{
if (right == null)
{
// TODO: should this ever happen?
node.AddChildToBack(left);
}
else
{
Node d = CreateDestructuringAssignment(node.GetType(), left, right);
node.AddChildToBack(d);
}
}
else
{
if (right != null)
{
left.AddChildToBack(right);
}
node.AddChildToBack(left);
}
if (i++ < size - 1)
{
decompiler.AddToken(Token.COMMA);
}
}
return node;
}