protected virtual TypeNodeList GetConsolidatedTemplateArguments(TypeNodeList typeArgs) { TypeNodeList result = this.ConsolidatedTemplateArguments; if(result == null || result.Count == 0) { if(this.IsGeneric && this.Template == null) result = this.ConsolidatedTemplateParameters; else return typeArgs; } int n = (typeArgs == null) ? 0 : typeArgs.Count; if(n == 0) return result; //^ assert typeArgs != null; result = new TypeNodeList(result); result.AddRange(typeArgs); return result; }
protected virtual TypeNodeList GetConsolidatedTemplateParameters() { TypeNodeList typeParams = this.TemplateParameters; TypeNode declaringType = this.DeclaringType; if(declaringType == null) return typeParams; while(declaringType.Template != null) declaringType = declaringType.Template; TypeNodeList result = declaringType.ConsolidatedTemplateParameters; if(result == null) return typeParams; int n = (typeParams == null) ? 0 : typeParams.Count; if(n == 0) return result; result = new TypeNodeList(result); result.AddRange(typeParams); return result; }
protected virtual TypeNodeList GetConsolidatedTemplateArguments() { TypeNodeList typeArgs = this.TemplateArguments; if(this.DeclaringType == null) return typeArgs; TypeNodeList result = this.DeclaringType.ConsolidatedTemplateArguments; if(result == null) { if(this.DeclaringType.IsGeneric && this.DeclaringType.Template == null) result = this.DeclaringType.ConsolidatedTemplateParameters; if(result == null) return typeArgs; } int n = (typeArgs == null) ? 0 : typeArgs.Count; if(n == 0) return result; result = new TypeNodeList(result); result.AddRange(typeArgs); return result; }