File: BoundTree\BoundYieldStatement.vb
Web Access
Project: src\src\roslyn\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.Text
Imports Microsoft.CodeAnalysis.VisualBasic.Symbols
Imports Microsoft.CodeAnalysis.VisualBasic.Syntax

Namespace Microsoft.CodeAnalysis.VisualBasic

    Partial Friend Class BoundYieldStatement

        ''' <summary>
        ''' Suppresses RValue validation when constructing the node. 
        ''' Must be used _only_ when performing lambda inference where RValue inconsistency on this node is intentionally allowed.
        ''' If such node makes into a regular bound tree it will be eventually rewritten (all Yields are rewritten at some point)
        ''' and that will trigger validation.
        ''' </summary>
        Friend Sub New(syntax As SyntaxNode, expression As BoundExpression, hasErrors As Boolean, returnTypeIsBeingInferred As Boolean)
            MyBase.New(BoundKind.YieldStatement, syntax, hasErrors OrElse expression.NonNullAndHasErrors())

            Debug.Assert(expression IsNot Nothing, "Field 'expression' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)")

            Me._Expression = expression

#If DEBUG Then
            If Not returnTypeIsBeingInferred Then
                Validate()
            End If
#End If
        End Sub

#If DEBUG Then
        Private Sub Validate()
            Expression.AssertRValue()
        End Sub
#End If

    End Class

End Namespace