public void ResolveSimpleTypeReference(SimpleTypeReference node)
{
if (null != node.Entity) return;
IEntity entity = ResolveTypeName(node);
if (null == entity)
{
node.Entity = NameNotType(node);
return;
}
if (EntityType.Type != entity.EntityType)
{
if (EntityType.Ambiguous == entity.EntityType)
{
entity = AmbiguousReference(node, (Ambiguous)entity);
}
else
{
entity = NameNotType(node);
}
}
else
{
GenericTypeReference gtr = node as GenericTypeReference;
if (null != gtr)
{
ResolveTypeReferenceCollection(gtr.GenericArguments);
entity = ResolveGenericTypeReference(gtr, entity);
}
GenericTypeDefinitionReference gtdr = node as GenericTypeDefinitionReference;
if (null != gtdr)
{
IType type = (IType)entity;
if (gtdr.GenericPlaceholders != type.GenericInfo.GenericParameters.Length)
{
entity = GenericArgumentsCountMismatch(gtdr, type);
}
}
node.Name = entity.FullName;
}
node.Entity = entity;
}