public override void OnReferenceExpression(ReferenceExpression node)
{
if (AlreadyBound(node))
return;
IEntity entity = ResolveName(node, node.Name);
if (null == entity)
{
Error(node);
return;
}
// BOO-314 - if we are trying to invoke
// something, let's make sure it is
// something callable, otherwise, let's
// try to find something callable
if (AstUtil.IsTargetOfMethodInvocation(node)
&& !IsCallableEntity(entity))
{
IEntity callable = ResolveCallable(node);
if (null != callable) entity = callable;
}
IMember member = entity as IMember;
if (null != member)
{
if (IsExtensionMethod(member))
{
Bind(node, member);
return;
}
ResolveMemberInfo(node, member);
return;
}
EnsureRelatedNodeWasVisited(node, entity);
node.Entity = entity;
PostProcessReferenceExpression(node);
}