コード例 #1
0
 private static Dictionary <string, string> WalkTypes(
     LangType actualType, LangType genericType, Dictionary <string, string> replacements)
 {
     if (genericType.IsTypeParameter)
     {
         replacements.Add(genericType.GetName(), actualType.GetName());
     }
     else
     {
         for (var i = 0; i < genericType.SubTypes.Count; i++)
         {
             var genericSubtype = genericType.SubTypes[i];
             var actualSubtype  = actualType.SubTypes[i];
             WalkTypes(actualSubtype, genericSubtype, replacements);
         }
     }
     return(replacements);
 }
コード例 #2
0
 public LangType CheckGenericTypes(LangType langType)
 {
     if (langType.Name != ParserContext.NativeTypes.LangVoid.Name)
     {
         var genericType = this.Templates.Where(tmpl => tmpl.LangType.Equals(langType)).FirstOrDefault();
         if (genericType != null)
         {
             genericType.Realize(langType, this);
             return(GetLangType(langType.GetName()));
         }
         for (var i = 0; i < langType.SubTypes.Count; i++)
         {
             var subType = langType.SubTypes[i];
             langType.SubTypes[i] = CheckGenericTypes(subType);
         }
     }
     return(langType);
 }