Exemplo n.º 1
0
        private static GreenNode.NodeFlags GetNodeFlags(SyntaxFactoryContext context)
        {
            var flags = SyntaxNodeCache.GetDefaultNodeFlags();

            if (context.IsInAsync)
            {
                flags |= GreenNode.NodeFlags.FactoryContextIsInAsync;
            }

            if (context.IsInQuery)
            {
                flags |= GreenNode.NodeFlags.FactoryContextIsInQuery;
            }

            return(flags);
        }
Exemplo n.º 2
0
        internal static XmlNameSyntax.Green XmlName(XmlPrefixSyntax.Green prefix, XmlNameTokenSyntax.Green localName)
        {
            int hash;
            var cached = SyntaxNodeCache.TryGetNode(SyntaxKind.XmlName, prefix, localName, out hash);

            if (cached != null)
            {
                return((XmlNameSyntax.Green)cached);
            }

            var result = new XmlNameSyntax.Green(prefix, localName);

            if (hash >= 0)
            {
                SyntaxNodeCache.AddNode(result, hash);
            }
            return(result);
        }
Exemplo n.º 3
0
        internal static XmlPrefixSyntax.Green XmlPrefix(XmlNameTokenSyntax.Green prefixName, PunctuationSyntax.Green colon)
        {
            int hash;
            var cached = SyntaxNodeCache.TryGetNode(SyntaxKind.XmlPrefix, prefixName, colon, out hash);

            if (cached != null)
            {
                return((XmlPrefixSyntax.Green)cached);
            }

            var result = new XmlPrefixSyntax.Green(prefixName, colon);

            if (hash >= 0)
            {
                SyntaxNodeCache.AddNode(result, hash);
            }
            return(result);
        }
Exemplo n.º 4
0
        internal static WithTwoChildren List(GreenNode child0, GreenNode child1)
        {
            LorettaDebug.Assert(child0 != null);
            LorettaDebug.Assert(child1 != null);

            GreenNode?cached = SyntaxNodeCache.TryGetNode(ListKind, child0, child1, out var hash);

            if (cached != null)
            {
                return((WithTwoChildren)cached);
            }

            var result = new WithTwoChildren(child0, child1);

            if (hash >= 0)
            {
                SyntaxNodeCache.AddNode(result, hash);
            }

            return(result);
        }
Exemplo n.º 5
0
 public static GreenNode?TryGetNode(int kind, GreenNode child1, out int hash)
 => SyntaxNodeCache.TryGetNode(kind, child1, out hash);
Exemplo n.º 6
0
 internal static GreenNode TryGetNode(int kind, GreenNode child1, SyntaxFactoryContext context, out int hash)
 {
     return(SyntaxNodeCache.TryGetNode(kind, child1, GetNodeFlags(context), out hash));
 }