public override void OnUnpackStatement(UnpackStatement node)
{
Visit(node.Expression);
node.Expression = GetCorrectIterator(node.Expression);
IType defaultDeclarationType = GetEnumeratorItemType(GetExpressionType(node.Expression));
foreach (Declaration d in node.Declarations)
{
bool declareNewVariable = d.Type != null;
GetDeclarationType(defaultDeclarationType, d);
if (declareNewVariable)
{
AssertUniqueLocal(d);
}
else
{
IEntity entity = TryToResolveName(d.Name);
if (null != entity)
{
Bind(d, entity);
AssertLValue(d, entity);
continue;
}
}
DeclareLocal(d, false);
}
}