public override SyntaxNode Visit(StructSyntax pNode) { using (new ContextValue(this, "StructType", pNode.StructType)) { return(SyntaxFactory.Struct(pNode.Name, pNode.Prefix, pNode.TypeArgs, pNode.Fields, pNode.Initializer?.Accept <BlockSyntax>(this)).WithAttributes(pNode)); } }
public override void Visit(StructSyntax pNode) { var s = SmallType.FromString("", pNode.Prefix); //Determine types of all fields foreach (var f in pNode.Fields) { if (s.FieldExists(f.Value)) { Compiler.ReportError(CompilerErrorType.StructDuplicateMember, pNode, f.Value, pNode.Name); } else { var fld = SmallType.FromString(f.Namespace, f.Value); s.AddField(f.Value, f.TypeParameters, fld); } } SmallType.RegisterType(s, null); //Process standard annotations //export foreach (var a in pNode.Annotations) { if (a.Value.Equals("export", StringComparison.OrdinalIgnoreCase)) { s.Exported = true; } } pNode.SetType(s); }
public SyntaxTokenCollection Format(StructSyntax syntax) { SyntaxTokenCollection tokens = new SyntaxTokenCollection(); tokens.AddRange(FormatVisibility(syntax)); tokens.Add(Constants.Space); tokens.Add(Constants.KeywordStruct); tokens.Add(Constants.Space); tokens.Add(new SyntaxToken(syntax.GetIdentifier(), SyntaxTokens.Text)); tokens.Add(Constants.Space); tokens.AddRange(FormatInterfaces(syntax)); return(tokens); }
public List <SyntaxToken> FormatInterfaces(StructSyntax syntax) { List <SyntaxToken> tokens = new List <SyntaxToken>(); // Create the list of types and interfaces List <TypeRef> baseTypesAndInterfaces = new List <TypeRef>(); baseTypesAndInterfaces.AddRange(syntax.GetInterfaces()); if (baseTypesAndInterfaces.Count > 0) { tokens.Add(new SyntaxToken(": ", SyntaxTokens.Text)); for (int i = 0; i < baseTypesAndInterfaces.Count; i++) { if (i != 0) { tokens.Add(new SyntaxToken(", ", SyntaxTokens.Text)); } tokens.Add(FormatTypeName(baseTypesAndInterfaces[i])); } } return(tokens); }
public CSharpStructFormatter(StructSyntax syntax) { _syntax = syntax; }
public List <SyntaxToken> FormatVisibility(StructSyntax syntax) { return(FormatVisibility(syntax.GetVisibility())); }
public override void Visit(StructSyntax pNode) { //Do nothing for structs }
public VBStructFormatter(StructSyntax syntax) { _syntax = syntax; }
public override void Visit(StructSyntax pNode) { base.Visit(pNode); }