Exemple #1
0
 protected ParameterDeclaration MapParamType(ParameterDeclaration parameter)
 {
     if (parameter.Type.NodeType == NodeType.GenericTypeReference)
     {
         var gen           = (GenericTypeReference)parameter.Type;
         var genEntityType = gen.Entity as IConstructedTypeInfo;
         if (genEntityType == null)
         {
             return(parameter);
         }
         var trc = new TypeReferenceCollection();
         foreach (var genArg in gen.GenericArguments)
         {
             var replacement = genArg;
             foreach (var genParam in _genericParams)
             {
                 if (genParam.Name.Equals(genArg.Entity.Name))
                 {
                     replacement = new SimpleTypeReference(genParam.Name)
                     {
                         Entity = genParam.Entity
                     };
                     break;
                 }
             }
             trc.Add(replacement);
         }
         parameter            = parameter.CloneNode();
         gen                  = (GenericTypeReference)parameter.Type;
         gen.GenericArguments = trc;
         gen.Entity           = new GenericConstructedType(genEntityType.GenericDefinition, trc.Select(a => a.Entity).Cast <IType>().ToArray());
     }
     return(parameter);
 }
Exemple #2
0
    protected void type_list(
        TypeReferenceCollection types
        ) //throws RecognitionException, TokenStreamException
    {
        TypeReference tr = null;


        try {              // for error handling
            tr = type_name_def();

            types.Add(tr);

            {                // ( ... )*
                for (;;)
                {
                    if ((LA(1) == SEMI))
                    {
                        match(SEMI);
                        tr = type_name_def();

                        types.Add(tr);
                    }
                    else
                    {
                        goto _loop38_breakloop;
                    }
                }
                _loop38_breakloop :;
            }                // ( ... )*
        }
        catch (RecognitionException ex)
        {
            reportError(ex);
            consume();
            consumeUntil(tokenSet_9_);
        }
    }