File: Syntax\InternalSyntax\VisualBasicSyntaxNodeCache.vb
Web Access
Project: src\src\Compilers\VisualBasic\Portable\Microsoft.CodeAnalysis.VisualBasic.vbproj (Microsoft.CodeAnalysis.VisualBasic)
' Licensed to the .NET Foundation under one or more agreements.
' The .NET Foundation licenses this file to you under the MIT license.
' See the LICENSE file in the project root for more information.
 
Imports Microsoft.CodeAnalysis.Syntax.InternalSyntax
 
Namespace Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax
    Friend Module VisualBasicSyntaxNodeCache
        Friend Function TryGetNode(kind As Integer, child1 As GreenNode, context As ISyntaxFactoryContext, ByRef hash As Integer) As GreenNode
            Return SyntaxNodeCache.TryGetNode(kind, child1, GetNodeFlags(context), hash)
        End Function
 
        Friend Function TryGetNode(kind As Integer, child1 As GreenNode, child2 As GreenNode, context As ISyntaxFactoryContext, ByRef hash As Integer) As GreenNode
            Return SyntaxNodeCache.TryGetNode(kind, child1, child2, GetNodeFlags(context), hash)
        End Function
 
        Friend Function TryGetNode(kind As Integer, child1 As GreenNode, child2 As GreenNode, child3 As GreenNode, context As ISyntaxFactoryContext, ByRef hash As Integer) As GreenNode
            Return SyntaxNodeCache.TryGetNode(kind, child1, child2, child3, GetNodeFlags(context), hash)
        End Function
 
        Private Function GetNodeFlags(context As ISyntaxFactoryContext) As GreenNode.NodeFlags
            Dim flags = SyntaxNodeCache.GetDefaultNodeFlags()
            If context.IsWithinAsyncMethodOrLambda Then
                flags = flags Or GreenNode.NodeFlags.FactoryContextIsInAsync
            End If
 
            If context.IsWithinIteratorContext Then
                flags = flags Or GreenNode.NodeFlags.FactoryContextIsInIterator
            End If
 
            Return flags
        End Function
    End Module
End Namespace