protected static bool RecursiveMerge(ref ScopeMember res, ScopeMember level) { if(level != null && res != null) { if(res.IsTypeGroup() && level.IsTypeGroup()) { // Merge type groups. TypeGroup lower = (TypeGroup)res; TypeGroup next = (TypeGroup)level; if(!lower.IsMergedGroup()) res = lower.CreateMerged(next, false); else lower.AppendLevel(next, false); } else if(res.IsFunctionGroup() && level.IsFunctionGroup()) { // Merge function groups. FunctionGroup lower = (FunctionGroup)res; FunctionGroup next = (FunctionGroup)level; if(!lower.IsMergedGroup()) res = lower.CreateMerged(next, false); else lower.AppendLevel(next, false); } } else if(res == null) { // Set the result to the next level. res = level; } return IsRecursiveContinue(res); }
protected static bool RecursiveMerge(ref ScopeMember res, ScopeMember level) { if (level != null && res != null) { if (res.IsTypeGroup() && level.IsTypeGroup()) { // Merge type groups. TypeGroup lower = (TypeGroup)res; TypeGroup next = (TypeGroup)level; if (!lower.IsMergedGroup()) { res = lower.CreateMerged(next, false); } else { lower.AppendLevel(next, false); } } else if (res.IsFunctionGroup() && level.IsFunctionGroup()) { // Merge function groups. FunctionGroup lower = (FunctionGroup)res; FunctionGroup next = (FunctionGroup)level; if (!lower.IsMergedGroup()) { res = lower.CreateMerged(next, false); } else { lower.AppendLevel(next, false); } } } else if (res == null) { // Set the result to the next level. res = level; } return(IsRecursiveContinue(res)); }
protected static bool IsRecursiveContinue(ScopeMember member) { return(member == null || member.IsTypeGroup() || member.IsFunctionGroup()); }
protected static bool IsRecursiveContinue(ScopeMember member) { return member == null || member.IsTypeGroup() || member.IsFunctionGroup(); }