Exemplo n.º 1
0
        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;
        }
Exemplo n.º 2
0
        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;
        }
Exemplo n.º 3
0
        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;
        }