Esempio n. 1
0
 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));
     }
 }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
 public CSharpStructFormatter(StructSyntax syntax)
 {
     _syntax = syntax;
 }
Esempio n. 6
0
 public List <SyntaxToken> FormatVisibility(StructSyntax syntax)
 {
     return(FormatVisibility(syntax.GetVisibility()));
 }
Esempio n. 7
0
 public override void Visit(StructSyntax pNode)
 {
     //Do nothing for structs
 }
 public VBStructFormatter(StructSyntax syntax)
 {
     _syntax = syntax;
 }
Esempio n. 9
0
 public override void Visit(StructSyntax pNode)
 {
     base.Visit(pNode);
 }