isGenericMethod() public method

Return if this method contains generic parameters in it's signature.
public isGenericMethod ( ) : bool
return bool
Example #1
0
        /// <summary>
        /// Parameterize the specified method (reuse if generic
        /// parameterization isn't necessary).
        /// </summary>
        internal Method parameterize(Method m)
        {
            // if not generic, short circuit and reuse original
            if (!m.isGenericMethod())
            {
                return(m);
            }

            // new signature
            Func func = m.m_func;
            Type ret;
            List pars = new List(Sys.ParamType, m.m_params.sz());

            // parameterize return type
            if (func.returns().isGenericParameter())
            {
                ret = parameterize(func.returns());
            }
            else
            {
                ret = func.returns();
            }

            // narrow pars (or just reuse if not parameterized)
            for (int i = 0; i < m.m_params.sz(); i++)
            {
                Param p = (Param)m.m_params.get(i);
                if (p.m_type.isGenericParameter())
                {
                    pars.add(new Param(p.m_name, parameterize(p.m_type), p.m_mask));
                }
                else
                {
                    pars.add(p);
                }
            }

            Method pm = new Method(this, m.m_name, m.m_flags, m.m_facets, m.m_lineNum, ret, m.m_inheritedReturns, pars, m);

            pm.m_reflect = m.m_reflect;
            return(pm);
        }
Example #2
0
        /// <summary>
        /// Parameterize the specified method (reuse if generic
        /// parameterization isn't necessary).
        /// </summary>
        internal Method parameterize(Method m)
        {
            // if not generic, short circuit and reuse original
              if (!m.isGenericMethod()) return m;

              // new signature
              Func func = m.m_func;
              Type ret;
              List pars = new List(Sys.ParamType, m.m_params.sz());

              // parameterize return type
              if (func.returns().isGenericParameter())
            ret = parameterize(func.returns());
              else
            ret = func.returns();

              // narrow pars (or just reuse if not parameterized)
              for (int i=0; i<m.m_params.sz(); i++)
              {
            Param p = (Param)m.m_params.get(i);
            if (p.m_type.isGenericParameter())
            {
              pars.add(new Param(p.m_name, parameterize(p.m_type), p.m_mask));
            }
            else
            {
              pars.add(p);
            }
              }

              Method pm = new Method(this, m.m_name, m.m_flags, m.m_facets, m.m_lineNum, ret, m.m_inheritedReturns, pars, m);
              pm.m_reflect = m.m_reflect;
              return pm;
        }