public DataType VisitTemplate(SerializedTemplate sTemplate) { //$TODO: Reko's type system doesn't encompass templated / generic // types yet, so we fake a template instance. var dts = sTemplate.TypeArguments.Select(ta => ta.Accept(this)); return(new StructureType { Name = $"{sTemplate.Name}<{string.Join(",", dts)}>", }); }
private List <object> Prefix() { var prefixes = new List <object>(); if (Peek('S')) { prefixes.AddRange(Substitution()); return(prefixes); } while (true) { char c = str[i]; if (Char.IsDigit(str[i])) { var n = SourceName(); if (Peek('I')) { // n is the name of a template. AddSubstitution(n); var args = TemplateArgs(); var tmplate = new SerializedTemplate(new string[0], n, args); AddSubstitution(tmplate); prefixes.Add(tmplate); return(prefixes); } else if (Peek('D') || Peek('C')) { prefixes.Add(n); return(prefixes); } else { AddSubstitution(new TypeReference_v1 { TypeName = n }); } } else { break; } } return(prefixes); }
public StringBuilder VisitTemplate(SerializedTemplate template) { var n = name; sb.Append(template.Name); sb.Append("<"); var sep = ""; foreach (var typeArg in template.TypeArguments) { sb.Append(sep); typeArg.Accept(this); } sb.Append(">"); name = n; if (name != null) { sb.AppendFormat(" {0}", name); } return(sb); }
public DataType VisitTemplate(SerializedTemplate serializedTemplate) { throw new NotImplementedException(); }
public int VisitTemplate(SerializedTemplate template) { throw new NotImplementedException(); }