private NsInfo ResolveAliasesInAliasDefinition(NsInfo aliasDefNsInfo) { //Check if Alias is already being resolved (circular reference) if (_aliasDefStack.Any(n => n == aliasDefNsInfo)) { //Report Error foreach (var info in _aliasDefStack) { _context.AddError(CompilerErrorFactory.AliasDefHasCircularReference(info)); ((AliasDefinition)info.ModuleMember).HasCircularReference = true; if (info == aliasDefNsInfo) { break; } } return(aliasDefNsInfo); } _aliasDefStack.Push(aliasDefNsInfo); foreach (var alias in aliasDefNsInfo.Aliases) { NsInfo aliasNsInfo = ResolveAliasInAliasDefinition(alias); if (aliasNsInfo == null) { continue; } MergeNsInfo(aliasDefNsInfo, aliasNsInfo); } _aliasDefStack.Pop(); aliasDefNsInfo.AliasesResolved = true; return(aliasDefNsInfo); }