提交 6ecf1570 编写于 作者: M Manish Vasani

VB side changes and unit tests for IOperationWithChildren

上级 81b8036b
......@@ -1420,7 +1420,7 @@ internal partial class BoundDynamicIndexerAccess
{
protected override OperationKind ExpressionKind => OperationKind.None;
protected override ImmutableArray<IOperation> Children => this.Arguments.Concat(this.ReceiverOpt).As<IOperation>();
protected override ImmutableArray<IOperation> Children => this.Arguments.Add(this.ReceiverOpt).As<IOperation>();
public override void Accept(OperationVisitor visitor)
{
......@@ -1486,7 +1486,7 @@ internal partial class BoundAttribute
{
protected override OperationKind ExpressionKind => OperationKind.None;
protected override ImmutableArray<IOperation> Children => this.ConstructorArguments.Concat(this.NamedArguments).As<IOperation>();
protected override ImmutableArray<IOperation> Children => this.ConstructorArguments.AddRange(this.NamedArguments).As<IOperation>();
public override void Accept(OperationVisitor visitor)
{
......@@ -1873,7 +1873,7 @@ internal partial class BoundDynamicInvocation
{
protected override OperationKind ExpressionKind => OperationKind.None;
protected override ImmutableArray<IOperation> Children => this.Arguments.As<IOperation>().Concat(this.Expression);
protected override ImmutableArray<IOperation> Children => this.Arguments.As<IOperation>().Add(this.Expression);
public override void Accept(OperationVisitor visitor)
{
......@@ -2140,7 +2140,7 @@ internal partial class BoundDynamicObjectCreationExpression
{
protected override OperationKind ExpressionKind => OperationKind.None;
protected override ImmutableArray<IOperation> Children => this.Arguments.Concat(BoundObjectCreationExpression.GetChildInitializers(this.InitializerExpressionOpt)).As<IOperation>();
protected override ImmutableArray<IOperation> Children => this.Arguments.AddRange(BoundObjectCreationExpression.GetChildInitializers(this.InitializerExpressionOpt)).As<IOperation>();
public override void Accept(OperationVisitor visitor)
{
......
......@@ -904,7 +904,7 @@ public override void Accept(OperationVisitor visitor)
partial class BoundPatternSwitchSection
{
protected override ImmutableArray<IOperation> Children => this.SwitchLabels.As<IOperation>().Concat(this.Statements).ToImmutableArray();
protected override ImmutableArray<IOperation> Children => this.SwitchLabels.As<IOperation>().AddRange(this.Statements).ToImmutableArray();
}
partial class BoundPatternSwitchLabel
......
......@@ -169,7 +169,7 @@ Public MustInherit Class SemanticModelTestBase : Inherits BasicTestBase
Friend Function GetOperationTreeForTest(Of TSyntaxNode As SyntaxNode)(testSrc As String, Optional compilationOptions As VisualBasicCompilationOptions = Nothing, Optional parseOptions As VisualBasicParseOptions = Nothing, Optional which As Integer = 0) As String
Dim fileName = "a.vb"
Dim syntaxTree = Parse(testSrc, fileName, parseOptions)
Dim compilation = CreateCompilationWithMscorlib45AndVBRuntime({syntaxTree}, references:=DefaultVbReferences, options:=If(compilationOptions, TestOptions.ReleaseDll))
Dim compilation = CreateCompilationWithMscorlib45AndVBRuntime({syntaxTree}, references:=DefaultVbReferences.Append({ValueTupleRef, SystemRuntimeFacadeRef}), options:=If(compilationOptions, TestOptions.ReleaseDll))
Return GetOperationTreeForTest(Of TSyntaxNode)(compilation, fileName, which)
End Function
......@@ -196,7 +196,7 @@ Public MustInherit Class SemanticModelTestBase : Inherits BasicTestBase
Friend Sub VerifyOperationTreeAndDiagnosticsForTest(Of TSyntaxNode As SyntaxNode)(testSrc As String, expectedOperationTree As String, expectedDiagnostics As String, Optional compilationOptions As VisualBasicCompilationOptions = Nothing, Optional parseOptions As VisualBasicParseOptions = Nothing, Optional which As Integer = 0)
Dim fileName = "a.vb"
Dim syntaxTree = Parse(testSrc, fileName, parseOptions)
Dim compilation = CreateCompilationWithMscorlib45AndVBRuntime({syntaxTree}, references:=DefaultVbReferences, options:=If(compilationOptions, TestOptions.ReleaseDll))
Dim compilation = CreateCompilationWithMscorlib45AndVBRuntime({syntaxTree}, references:=DefaultVbReferences.Append({ValueTupleRef, SystemRuntimeFacadeRef}), options:=If(compilationOptions, TestOptions.ReleaseDll))
VerifyOperationTreeAndDiagnosticsForTest(Of TSyntaxNode)(compilation, fileName, expectedOperationTree, expectedDiagnostics, which)
End Sub
......
......@@ -93,7 +93,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Get
End Property
Public Overridable Function Accept(visitor As BoundTreeVisitor) As BoundNode
Public Overridable Overloads Function Accept(visitor As BoundTreeVisitor) As BoundNode
Throw ExceptionUtilities.Unreachable
End Function
......
......@@ -7,48 +7,34 @@ Imports Microsoft.CodeAnalysis.VisualBasic.Symbols
Namespace Microsoft.CodeAnalysis.VisualBasic
Partial Friend Class BoundExpression
Implements IOperation
Private ReadOnly Property IOperation_ConstantValue As [Optional](Of Object) Implements IOperation.ConstantValue
Protected Overrides ReadOnly Property OperationKind As OperationKind
Get
Dim value As ConstantValue = Me.ConstantValueOpt
If value Is Nothing Then
Return New [Optional](Of Object)()
End If
Return New [Optional](Of Object)(value.Value)
Return Me.ExpressionKind
End Get
End Property
Private ReadOnly Property IOperation_Kind As OperationKind Implements IOperation.Kind
Get
Return Me.ExpressionKind()
End Get
End Property
Private ReadOnly Property IOperation_IsInvalid As Boolean Implements IOperation.IsInvalid
Get
Return Me.HasErrors
End Get
End Property
Private ReadOnly Property IOperation_Type As ITypeSymbol Implements IOperation.Type
Protected Overrides ReadOnly Property OperationType As ITypeSymbol
Get
Return Me.Type
End Get
End Property
Private ReadOnly Property IOperation_Syntax As SyntaxNode Implements IOperation.Syntax
Protected Overrides ReadOnly Property OperationConstantValue As [Optional](Of Object)
Get
Return Me.Syntax
Dim value As ConstantValue = Me.ConstantValueOpt
If value Is Nothing Then
Return New [Optional](Of Object)()
End If
Return New [Optional](Of Object)(value.Value)
End Get
End Property
Protected MustOverride Function ExpressionKind() As OperationKind
Public MustOverride Overloads Sub Accept(visitor As OperationVisitor) Implements IOperation.Accept
Public MustOverride Overloads Overrides Sub Accept(visitor As OperationVisitor)
Public MustOverride Overloads Function Accept(Of TArgument, TResult)(visitor As OperationVisitor(Of TArgument, TResult), argument As TArgument) As TResult Implements IOperation.Accept
Public MustOverride Overloads Overrides Function Accept(Of TArgument, TResult)(visitor As OperationVisitor(Of TArgument, TResult), argument As TArgument) As TResult
Protected Shared Function GetChildOfBadExpression(parent As BoundNode, index As Integer) As IOperation
Dim badParent As BoundBadExpression = TryCast(parent, BoundBadExpression)
......@@ -61,7 +47,6 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
Return New InvalidExpression(parent.Syntax, ImmutableArray(Of IOperation).Empty)
End Function
End Class
Partial Friend Class BoundAssignmentOperator
......@@ -902,7 +887,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
Partial Friend Class BoundBadExpression
Implements IInvalidExpression
Public ReadOnly Property Children As ImmutableArray(Of IOperation) Implements IInvalidExpression.Children
Protected Overrides ReadOnly Property Children As ImmutableArray(Of IOperation) Implements IInvalidExpression.Children
Get
Return StaticCast(Of IOperation).From(Me.ChildBoundNodes)
End Get
......@@ -921,7 +906,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundTryCast
Partial Friend Class BoundTryCast
Implements IConversionExpression
Private ReadOnly Property IConversionExpression_ConversionKind As Semantics.ConversionKind Implements IConversionExpression.ConversionKind
......@@ -967,7 +952,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundDirectCast
Partial Friend Class BoundDirectCast
Implements IConversionExpression
Private ReadOnly Property IConversionExpression_ConversionKind As Semantics.ConversionKind Implements IConversionExpression.ConversionKind
......@@ -1013,7 +998,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundConversion
Partial Friend Class BoundConversion
Implements IConversionExpression
Private ReadOnly Property IConversionExpression_ConversionKind As Semantics.ConversionKind Implements IConversionExpression.ConversionKind
......@@ -1059,7 +1044,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundUserDefinedConversion
Partial Friend Class BoundUserDefinedConversion
Implements IConversionExpression
Private ReadOnly Property IConversionExpression_ConversionKind As Semantics.ConversionKind Implements IConversionExpression.ConversionKind
......@@ -1105,7 +1090,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundTernaryConditionalExpression
Partial Friend Class BoundTernaryConditionalExpression
Implements IConditionalChoiceExpression
Private ReadOnly Property IConditionalChoiceExpression_Condition As IOperation Implements IConditionalChoiceExpression.Condition
......@@ -1139,7 +1124,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundTypeOf
Partial Friend Class BoundTypeOf
Implements IIsTypeExpression
Private ReadOnly Property IIsTypeExpression_IsType As ITypeSymbol Implements IIsTypeExpression.IsType
......@@ -1167,7 +1152,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundObjectCreationExpression
Partial Friend Class BoundObjectCreationExpression
Implements IObjectCreationExpression
Private Shared ReadOnly s_memberInitializersMappings As New System.Runtime.CompilerServices.ConditionalWeakTable(Of BoundObjectCreationExpression, Object)
......@@ -1371,7 +1356,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundArrayCreation
Partial Friend Class BoundArrayCreation
Implements IArrayCreationExpression
Private ReadOnly Property IArrayCreationExpression_DimensionSizes As ImmutableArray(Of IOperation) Implements IArrayCreationExpression.DimensionSizes
......@@ -1411,7 +1396,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundArrayInitialization
Partial Friend Class BoundArrayInitialization
Implements IArrayInitializer
Private ReadOnly Property IArrayInitializer_ElementValues As ImmutableArray(Of IOperation) Implements IArrayInitializer.ElementValues
......@@ -1432,7 +1417,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundPropertyAccess
Partial Friend Class BoundPropertyAccess
Implements IIndexedPropertyReferenceExpression
Private ReadOnly Property IMemberReferenceExpression_Instance As IOperation Implements IMemberReferenceExpression.Instance
......@@ -1476,7 +1461,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundEventAccess
Partial Friend Class BoundEventAccess
Implements IEventReferenceExpression
Private ReadOnly Property IMemberReferenceExpression_Instance As IOperation Implements IMemberReferenceExpression.Instance
......@@ -1514,7 +1499,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundDelegateCreationExpression
Partial Friend Class BoundDelegateCreationExpression
Implements IMethodBindingExpression
Private ReadOnly Property IMemberReferenceExpression_Instance As IOperation Implements IMemberReferenceExpression.Instance
......@@ -1558,7 +1543,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundFieldAccess
Partial Friend Class BoundFieldAccess
Implements IFieldReferenceExpression
Private ReadOnly Property IFieldReferenceExpression_Field As IFieldSymbol Implements IFieldReferenceExpression.Field
......@@ -1596,7 +1581,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundConditionalAccess
Partial Friend Class BoundConditionalAccess
Implements IConditionalAccessExpression
Private ReadOnly Property IConditionalAccessExpression_ConditionalValue As IOperation Implements IConditionalAccessExpression.ConditionalValue
......@@ -1640,7 +1625,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundParameter
Partial Friend Class BoundParameter
Implements IParameterReferenceExpression
Private ReadOnly Property IParameterReferenceExpression_Parameter As IParameterSymbol Implements IParameterReferenceExpression.Parameter
......@@ -1662,7 +1647,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundLocal
Partial Friend Class BoundLocal
Implements ILocalReferenceExpression
Private ReadOnly Property ILocalReferenceExpression_Local As ILocalSymbol Implements ILocalReferenceExpression.Local
......@@ -1684,7 +1669,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundLateMemberAccess
Partial Friend Class BoundLateMemberAccess
Implements ILateBoundMemberReferenceExpression
Private ReadOnly Property ILateBoundMemberReferenceExpression_Instance As IOperation Implements ILateBoundMemberReferenceExpression.Instance
......@@ -1712,7 +1697,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundFieldInitializer
Partial Friend Class BoundFieldInitializer
Implements IFieldInitializer
Private ReadOnly Property IFieldInitializer_InitializedFields As ImmutableArray(Of IFieldSymbol) Implements IFieldInitializer.InitializedFields
......@@ -1740,7 +1725,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundPropertyInitializer
Partial Friend Class BoundPropertyInitializer
Implements IPropertyInitializer
Private ReadOnly Property IPropertyInitializer_InitializedProperty As IPropertySymbol Implements IPropertyInitializer.InitializedProperty
......@@ -1768,7 +1753,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundParameterEqualsValue
Partial Friend Class BoundParameterEqualsValue
Implements IParameterInitializer
Private ReadOnly Property IOperation_IsInvalid As Boolean Implements IOperation.IsInvalid
......@@ -1822,7 +1807,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundTypeArguments
Partial Friend Class BoundTypeArguments
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
......@@ -1836,11 +1821,17 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundLValueToRValueWrapper
Partial Friend Class BoundLValueToRValueWrapper
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
Protected Overrides ReadOnly Property Children As ImmutableArray(Of IOperation)
Get
Return ImmutableArray.Create(Of IOperation)(Me.UnderlyingLValue)
End Get
End Property
Public Overrides Sub Accept(visitor As OperationVisitor)
visitor.VisitNoneOperation(Me)
End Sub
......@@ -1850,7 +1841,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundWithLValueExpressionPlaceholder
Partial Friend Class BoundWithLValueExpressionPlaceholder
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
......@@ -1864,7 +1855,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundWithRValueExpressionPlaceholder
Partial Friend Class BoundWithRValueExpressionPlaceholder
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
......@@ -1894,7 +1885,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundLValuePlaceholder
Partial Friend Class BoundLValuePlaceholder
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
......@@ -1908,7 +1899,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundDup
Partial Friend Class BoundDup
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
......@@ -1922,7 +1913,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundBadVariable
Partial Friend Class BoundBadVariable
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
......@@ -1936,11 +1927,17 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundArrayLength
Partial Friend Class BoundArrayLength
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
Protected Overrides ReadOnly Property Children As ImmutableArray(Of IOperation)
Get
Return ImmutableArray.Create(Of IOperation)(Me.Expression)
End Get
End Property
Public Overrides Sub Accept(visitor As OperationVisitor)
visitor.VisitNoneOperation(Me)
End Sub
......@@ -1950,11 +1947,17 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundGetType
Partial Friend Class BoundGetType
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
Protected Overrides ReadOnly Property Children As ImmutableArray(Of IOperation)
Get
Return ImmutableArray.Create(Of IOperation)(Me.SourceType)
End Get
End Property
Public Overrides Sub Accept(visitor As OperationVisitor)
visitor.VisitNoneOperation(Me)
End Sub
......@@ -1964,7 +1967,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundFieldInfo
Partial Friend Class BoundFieldInfo
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
......@@ -1978,7 +1981,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundMethodInfo
Partial Friend Class BoundMethodInfo
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
......@@ -1992,7 +1995,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundTypeExpression
Partial Friend Class BoundTypeExpression
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
......@@ -2006,7 +2009,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundTypeOrValueExpression
Partial Friend Class BoundTypeOrValueExpression
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
......@@ -2020,7 +2023,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundNamespaceExpression
Partial Friend Class BoundNamespaceExpression
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
......@@ -2034,11 +2037,17 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundNullableIsTrueOperator
Partial Friend Class BoundNullableIsTrueOperator
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
Protected Overrides ReadOnly Property Children As ImmutableArray(Of IOperation)
Get
Return ImmutableArray.Create(Of IOperation)(Me.Operand)
End Get
End Property
Public Overrides Sub Accept(visitor As OperationVisitor)
visitor.VisitNoneOperation(Me)
End Sub
......@@ -2048,7 +2057,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundCompoundAssignmentTargetPlaceholder
Partial Friend Class BoundCompoundAssignmentTargetPlaceholder
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
......@@ -2062,11 +2071,17 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundReferenceAssignment
Partial Friend Class BoundReferenceAssignment
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
Protected Overrides ReadOnly Property Children As ImmutableArray(Of IOperation)
Get
Return ImmutableArray.Create(Of IOperation)(Me.LValue)
End Get
End Property
Public Overrides Sub Accept(visitor As OperationVisitor)
visitor.VisitNoneOperation(Me)
End Sub
......@@ -2076,7 +2091,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundAddressOfOperator
Partial Friend Class BoundAddressOfOperator
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
......@@ -2090,7 +2105,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundSequencePointExpression
Partial Friend Class BoundSequencePointExpression
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
......@@ -2104,7 +2119,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundMethodGroup
Partial Friend Class BoundMethodGroup
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
......@@ -2118,7 +2133,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundPropertyGroup
Partial Friend Class BoundPropertyGroup
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
......@@ -2132,11 +2147,17 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundAttribute
Partial Friend Class BoundAttribute
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
Protected Overrides ReadOnly Property Children As ImmutableArray(Of IOperation)
Get
Return Me.ConstructorArguments.AddRange(Me.NamedArguments).As(Of IOperation)()
End Get
End Property
Public Overrides Sub Accept(visitor As OperationVisitor)
visitor.VisitNoneOperation(Me)
End Sub
......@@ -2151,6 +2172,12 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
Return OperationKind.None
End Function
Protected Overrides ReadOnly Property Children As ImmutableArray(Of IOperation)
Get
Return Me.Arguments.As(Of IOperation)
End Get
End Property
Public Overrides Sub Accept(visitor As OperationVisitor)
visitor.VisitNoneOperation(Me)
End Sub
......@@ -2160,11 +2187,17 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundLateInvocation
Partial Friend Class BoundLateInvocation
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
Protected Overrides ReadOnly Property Children As ImmutableArray(Of IOperation)
Get
Return Me.ArgumentsOpt.Insert(0, Me.Member).As(Of IOperation)
End Get
End Property
Public Overrides Sub Accept(visitor As OperationVisitor)
visitor.VisitNoneOperation(Me)
End Sub
......@@ -2174,11 +2207,17 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundLateAddressOfOperator
Partial Friend Class BoundLateAddressOfOperator
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
Protected Overrides ReadOnly Property Children As ImmutableArray(Of IOperation)
Get
Return ImmutableArray.Create(Of IOperation)(Me.MemberAccess)
End Get
End Property
Public Overrides Sub Accept(visitor As OperationVisitor)
visitor.VisitNoneOperation(Me)
End Sub
......@@ -2188,11 +2227,17 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundNoPiaObjectCreationExpression
Partial Friend Class BoundNoPiaObjectCreationExpression
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
Protected Overrides ReadOnly Property Children As ImmutableArray(Of IOperation)
Get
Return If(InitializerOpt IsNot Nothing, InitializerOpt.Initializers.As(Of IOperation), ImmutableArray(Of IOperation).Empty)
End Get
End Property
Public Overrides Sub Accept(visitor As OperationVisitor)
visitor.VisitNoneOperation(Me)
End Sub
......@@ -2202,11 +2247,17 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundAnonymousTypeCreationExpression
Partial Friend Class BoundAnonymousTypeCreationExpression
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
Protected Overrides ReadOnly Property Children As ImmutableArray(Of IOperation)
Get
Return Me.Arguments.As(Of IOperation)
End Get
End Property
Public Overrides Sub Accept(visitor As OperationVisitor)
visitor.VisitNoneOperation(Me)
End Sub
......@@ -2216,7 +2267,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundAnonymousTypePropertyAccess
Partial Friend Class BoundAnonymousTypePropertyAccess
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
......@@ -2230,11 +2281,17 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundAnonymousTypeFieldInitializer
Partial Friend Class BoundAnonymousTypeFieldInitializer
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
Protected Overrides ReadOnly Property Children As ImmutableArray(Of IOperation)
Get
Return ImmutableArray.Create(Of IOperation)(Me.Value)
End Get
End Property
Public Overrides Sub Accept(visitor As OperationVisitor)
visitor.VisitNoneOperation(Me)
End Sub
......@@ -2244,11 +2301,17 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundObjectInitializerExpression
Partial Friend Class BoundObjectInitializerExpression
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
Protected Overrides ReadOnly Property Children As ImmutableArray(Of IOperation)
Get
Return Me.Initializers.As(Of IOperation)
End Get
End Property
Public Overrides Sub Accept(visitor As OperationVisitor)
visitor.VisitNoneOperation(Me)
End Sub
......@@ -2258,11 +2321,17 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundCollectionInitializerExpression
Partial Friend Class BoundCollectionInitializerExpression
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
Protected Overrides ReadOnly Property Children As ImmutableArray(Of IOperation)
Get
Return Me.Initializers.As(Of IOperation)
End Get
End Property
Public Overrides Sub Accept(visitor As OperationVisitor)
visitor.VisitNoneOperation(Me)
End Sub
......@@ -2272,11 +2341,17 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundArrayLiteral
Partial Friend Class BoundArrayLiteral
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
Protected Overrides ReadOnly Property Children As ImmutableArray(Of IOperation)
Get
Return Me.Bounds.Add(Me.Initializer).As(Of IOperation)
End Get
End Property
Public Overrides Sub Accept(visitor As OperationVisitor)
visitor.VisitNoneOperation(Me)
End Sub
......@@ -2286,7 +2361,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundSequence
Partial Friend Class BoundSequence
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
......@@ -2300,7 +2375,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundValueTypeMeReference
Partial Friend Class BoundValueTypeMeReference
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
......@@ -2314,7 +2389,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundPreviousSubmissionReference
Partial Friend Class BoundPreviousSubmissionReference
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
......@@ -2328,7 +2403,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundHostObjectMemberReference
Partial Friend Class BoundHostObjectMemberReference
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
......@@ -2342,7 +2417,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundPseudoVariable
Partial Friend Class BoundPseudoVariable
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
......@@ -2356,7 +2431,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundByRefArgumentPlaceholder
Partial Friend Class BoundByRefArgumentPlaceholder
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
......@@ -2370,11 +2445,17 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundByRefArgumentWithCopyBack
Partial Friend Class BoundByRefArgumentWithCopyBack
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
Protected Overrides ReadOnly Property Children As ImmutableArray(Of IOperation)
Get
Return ImmutableArray.Create(Of IOperation)(Me.OriginalArgument, Me.InConversion, Me.InPlaceholder, Me.OutConversion, Me.OutPlaceholder)
End Get
End Property
Public Overrides Sub Accept(visitor As OperationVisitor)
visitor.VisitNoneOperation(Me)
End Sub
......@@ -2384,11 +2465,17 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundLateBoundArgumentSupportingAssignmentWithCapture
Partial Friend Class BoundLateBoundArgumentSupportingAssignmentWithCapture
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
Protected Overrides ReadOnly Property Children As ImmutableArray(Of IOperation)
Get
Return ImmutableArray.Create(Of IOperation)(Me.OriginalArgument)
End Get
End Property
Public Overrides Sub Accept(visitor As OperationVisitor)
visitor.VisitNoneOperation(Me)
End Sub
......@@ -2398,7 +2485,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundLabel
Partial Friend Class BoundLabel
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
......@@ -2412,7 +2499,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class UnboundLambda
Partial Friend Class UnboundLambda
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
......@@ -2426,11 +2513,17 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundQueryExpression
Partial Friend Class BoundQueryExpression
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
Protected Overrides ReadOnly Property Children As ImmutableArray(Of IOperation)
Get
Return ImmutableArray.Create(Of IOperation)(Me.LastOperator)
End Get
End Property
Public Overrides Sub Accept(visitor As OperationVisitor)
visitor.VisitNoneOperation(Me)
End Sub
......@@ -2440,11 +2533,21 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundQuerySource
Partial Friend Class BoundQueryPart
Protected MustOverride Overrides ReadOnly Property Children As ImmutableArray(Of IOperation)
End Class
Partial Friend Class BoundQuerySource
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
Protected Overrides ReadOnly Property Children As ImmutableArray(Of IOperation)
Get
Return ImmutableArray.Create(Of IOperation)(Me.Expression)
End Get
End Property
Public Overrides Sub Accept(visitor As OperationVisitor)
visitor.VisitNoneOperation(Me)
End Sub
......@@ -2454,11 +2557,17 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundToQueryableCollectionConversion
Partial Friend Class BoundToQueryableCollectionConversion
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
Protected Overrides ReadOnly Property Children As ImmutableArray(Of IOperation)
Get
Return ImmutableArray.Create(Of IOperation)(Me.ConversionCall)
End Get
End Property
Public Overrides Sub Accept(visitor As OperationVisitor)
visitor.VisitNoneOperation(Me)
End Sub
......@@ -2468,11 +2577,17 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundQueryableSource
Partial Friend Class BoundQueryableSource
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
Protected Overrides ReadOnly Property Children As ImmutableArray(Of IOperation)
Get
Return ImmutableArray.Create(Of IOperation)(Me.Source)
End Get
End Property
Public Overrides Sub Accept(visitor As OperationVisitor)
visitor.VisitNoneOperation(Me)
End Sub
......@@ -2482,11 +2597,17 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundQueryClause
Partial Friend Class BoundQueryClause
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
Protected Overrides ReadOnly Property Children As ImmutableArray(Of IOperation)
Get
Return ImmutableArray.Create(Of IOperation)(Me.UnderlyingExpression)
End Get
End Property
Public Overrides Sub Accept(visitor As OperationVisitor)
visitor.VisitNoneOperation(Me)
End Sub
......@@ -2496,11 +2617,17 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundOrdering
Partial Friend Class BoundOrdering
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
Protected Overrides ReadOnly Property Children As ImmutableArray(Of IOperation)
Get
Return ImmutableArray.Create(Of IOperation)(Me.UnderlyingExpression)
End Get
End Property
Public Overrides Sub Accept(visitor As OperationVisitor)
visitor.VisitNoneOperation(Me)
End Sub
......@@ -2510,11 +2637,17 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundQueryLambda
Partial Friend Class BoundQueryLambda
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
Protected Overrides ReadOnly Property Children As ImmutableArray(Of IOperation)
Get
Return ImmutableArray.Create(Of IOperation)(Me.Expression)
End Get
End Property
Public Overrides Sub Accept(visitor As OperationVisitor)
visitor.VisitNoneOperation(Me)
End Sub
......@@ -2524,11 +2657,17 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundRangeVariableAssignment
Partial Friend Class BoundRangeVariableAssignment
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
Protected Overrides ReadOnly Property Children As ImmutableArray(Of IOperation)
Get
Return ImmutableArray.Create(Of IOperation)(Me.Value)
End Get
End Property
Public Overrides Sub Accept(visitor As OperationVisitor)
visitor.VisitNoneOperation(Me)
End Sub
......@@ -2538,7 +2677,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class GroupTypeInferenceLambda
Partial Friend Class GroupTypeInferenceLambda
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
......@@ -2552,11 +2691,17 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundAggregateClause
Partial Friend Class BoundAggregateClause
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
Protected Overrides ReadOnly Property Children As ImmutableArray(Of IOperation)
Get
Return ImmutableArray.Create(Of IOperation)(Me.CapturedGroupOpt, Me.GroupPlaceholderOpt, Me.UnderlyingExpression)
End Get
End Property
Public Overrides Sub Accept(visitor As OperationVisitor)
visitor.VisitNoneOperation(Me)
End Sub
......@@ -2566,11 +2711,17 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundGroupAggregation
Partial Friend Class BoundGroupAggregation
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
Protected Overrides ReadOnly Property Children As ImmutableArray(Of IOperation)
Get
Return ImmutableArray.Create(Of IOperation)(Me.Group)
End Get
End Property
Public Overrides Sub Accept(visitor As OperationVisitor)
visitor.VisitNoneOperation(Me)
End Sub
......@@ -2580,7 +2731,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundRangeVariable
Partial Friend Class BoundRangeVariable
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
......@@ -2594,7 +2745,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundXmlName
Partial Friend Class BoundXmlName
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
......@@ -2608,7 +2759,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundXmlNamespace
Partial Friend Class BoundXmlNamespace
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
......@@ -2622,7 +2773,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundXmlDocument
Partial Friend Class BoundXmlDocument
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
......@@ -2636,7 +2787,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundXmlDeclaration
Partial Friend Class BoundXmlDeclaration
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
......@@ -2650,7 +2801,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundXmlProcessingInstruction
Partial Friend Class BoundXmlProcessingInstruction
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
......@@ -2664,7 +2815,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundXmlComment
Partial Friend Class BoundXmlComment
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
......@@ -2678,7 +2829,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundXmlAttribute
Partial Friend Class BoundXmlAttribute
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
......@@ -2692,7 +2843,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundXmlElement
Partial Friend Class BoundXmlElement
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
......@@ -2706,7 +2857,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundXmlMemberAccess
Partial Friend Class BoundXmlMemberAccess
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
......@@ -2720,7 +2871,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundXmlEmbeddedExpression
Partial Friend Class BoundXmlEmbeddedExpression
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
......@@ -2734,7 +2885,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundXmlCData
Partial Friend Class BoundXmlCData
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
......@@ -2748,7 +2899,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundUnstructuredExceptionHandlingCatchFilter
Partial Friend Class BoundUnstructuredExceptionHandlingCatchFilter
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
......@@ -2762,7 +2913,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundSpillSequence
Partial Friend Class BoundSpillSequence
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
......@@ -2776,11 +2927,17 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundMidResult
Partial Friend Class BoundMidResult
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
Protected Overrides ReadOnly Property Children As ImmutableArray(Of IOperation)
Get
Return ImmutableArray.Create(Of IOperation)(Me.Original, Me.Start, Me.LengthOpt, Me.Source)
End Get
End Property
Public Overrides Sub Accept(visitor As OperationVisitor)
visitor.VisitNoneOperation(Me)
End Sub
......@@ -2790,7 +2947,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundLoweredConditionalAccess
Partial Friend Class BoundLoweredConditionalAccess
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
......@@ -2804,11 +2961,17 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundComplexConditionalAccessReceiver
Partial Friend Class BoundComplexConditionalAccessReceiver
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
Protected Overrides ReadOnly Property Children As ImmutableArray(Of IOperation)
Get
Return ImmutableArray.Create(Of IOperation)(Me.ValueTypeReceiver, Me.ReferenceTypeReceiver)
End Get
End Property
Public Overrides Sub Accept(visitor As OperationVisitor)
visitor.VisitNoneOperation(Me)
End Sub
......@@ -2818,11 +2981,17 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundNameOfOperator
Partial Friend Class BoundNameOfOperator
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
Protected Overrides ReadOnly Property Children As ImmutableArray(Of IOperation)
Get
Return ImmutableArray.Create(Of IOperation)(Me.Argument)
End Get
End Property
Public Overrides Sub Accept(visitor As OperationVisitor)
visitor.VisitNoneOperation(Me)
End Sub
......@@ -2832,11 +3001,17 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundTypeAsValueExpression
Partial Friend Class BoundTypeAsValueExpression
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
Protected Overrides ReadOnly Property Children As ImmutableArray(Of IOperation)
Get
Return ImmutableArray.Create(Of IOperation)(Me.Expression)
End Get
End Property
Public Overrides Sub Accept(visitor As OperationVisitor)
visitor.VisitNoneOperation(Me)
End Sub
......@@ -2846,11 +3021,17 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Friend Partial Class BoundInterpolatedStringExpression
Partial Friend Class BoundInterpolatedStringExpression
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
End Function
Protected Overrides ReadOnly Property Children As ImmutableArray(Of IOperation)
Get
Return Me.Contents.As(Of IOperation)
End Get
End Property
Public Overrides Sub Accept(visitor As OperationVisitor)
visitor.VisitNoneOperation(Me)
End Sub
......@@ -2860,6 +3041,14 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
End Class
Partial Friend Class BoundInterpolation
Protected Overrides ReadOnly Property Children As ImmutableArray(Of IOperation)
Get
Return ImmutableArray.Create(Of IOperation)(Me.Expression, Me.AlignmentOpt, Me.FormatStringOpt)
End Get
End Property
End Class
Partial Friend Class BoundModuleVersionId
Protected Overrides Function ExpressionKind() As OperationKind
Return OperationKind.None
......
......@@ -6,12 +6,12 @@ Imports Microsoft.CodeAnalysis.VisualBasic.Symbols
Namespace Microsoft.CodeAnalysis.VisualBasic
Partial Friend Class BoundStatement
Implements IOperation
Partial Friend Class BoundNode
Implements IOperation, IOperationWithChildren
Private ReadOnly Property IOperation_Kind As OperationKind Implements IOperation.Kind
Get
Return Me.StatementKind()
Return Me.OperationKind
End Get
End Property
......@@ -29,21 +29,71 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
Private ReadOnly Property IOperation_Type As ITypeSymbol Implements IOperation.Type
Get
Return Nothing
Return Me.OperationType
End Get
End Property
Private ReadOnly Property IOperation_ConstantValue As [Optional](Of Object) Implements IOperation.ConstantValue
Get
Return Me.OperationConstantValue
End Get
End Property
Public ReadOnly Property IOperationWithChildren_Children As ImmutableArray(Of IOperation) Implements IOperationWithChildren.Children
Get
Return Me.Children
End Get
End Property
Protected Overridable ReadOnly Property OperationKind As OperationKind
Get
Return OperationKind.None
End Get
End Property
Protected Overridable ReadOnly Property OperationType As ITypeSymbol
Get
Return Nothing
End Get
End Property
Protected Overridable ReadOnly Property OperationConstantValue As [Optional](Of Object)
Get
Return New [Optional](Of Object)()
End Get
End Property
''' <summary>
''' Override this property to return the child operations if the IOperation API corresponding to this bound node is not yet designed or implemented.
''' </summary>
Protected Overridable ReadOnly Property Children As ImmutableArray(Of IOperation)
Get
Return ImmutableArray(Of IOperation).Empty
End Get
End Property
Public Overridable Overloads Sub Accept(visitor As OperationVisitor) Implements IOperation.Accept
visitor.VisitNoneOperation(Me)
End Sub
Public Overridable Overloads Function Accept(Of TArgument, TResult)(visitor As OperationVisitor(Of TArgument, TResult), argument As TArgument) As TResult Implements IOperation.Accept
visitor.VisitNoneOperation(Me, argument)
End Function
End Class
Partial Friend Class BoundStatement
Protected Overrides ReadOnly Property OperationKind As OperationKind
Get
Return Me.StatementKind
End Get
End Property
Protected MustOverride Function StatementKind() As OperationKind
Public MustOverride Overloads Sub Accept(visitor As OperationVisitor) Implements IOperation.Accept
Public MustOverride Overloads Overrides Sub Accept(visitor As OperationVisitor)
Public MustOverride Overloads Function Accept(Of TArgument, TResult)(visitor As OperationVisitor(Of TArgument, TResult), argument As TArgument) As TResult Implements IOperation.Accept
Public MustOverride Overloads Overrides Function Accept(Of TArgument, TResult)(visitor As OperationVisitor(Of TArgument, TResult), argument As TArgument) As TResult
End Class
Partial Friend Class BoundIfStatement
......@@ -261,6 +311,12 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
Return OperationKind.None
End Function
Protected Overrides ReadOnly Property Children As ImmutableArray(Of IOperation)
Get
Return ImmutableArray.Create(Of IOperation)(Me.CaseStatement, Me.Body)
End Get
End Property
Public Overrides Sub Accept(visitor As OperationVisitor)
visitor.VisitNoneOperation(Me)
End Sub
......@@ -486,6 +542,12 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
Return OperationKind.None
End Function
Protected Overrides ReadOnly Property Children As ImmutableArray(Of IOperation)
Get
Return Me.CaseClauses.As(Of IOperation).Add(Me.ConditionOpt)
End Get
End Property
Public Overrides Sub Accept(visitor As OperationVisitor)
visitor.VisitNoneOperation(Me)
End Sub
......@@ -943,7 +1005,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
Partial Friend Class BoundBadStatement
Implements IInvalidStatement
Public ReadOnly Property Children As ImmutableArray(Of IOperation) Implements IInvalidStatement.Children
Protected Overrides ReadOnly Property Children As ImmutableArray(Of IOperation) Implements IInvalidStatement.Children
Get
Dim builder As ArrayBuilder(Of IOperation) = ArrayBuilder(Of IOperation).GetInstance(Me.ChildBoundNodes.Length)
For Each childNode In Me.ChildBoundNodes
......@@ -1630,6 +1692,12 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
Return OperationKind.None
End Function
Protected Overrides ReadOnly Property Children As ImmutableArray(Of IOperation)
Get
Return Me.Clauses.As(Of IOperation)
End Get
End Property
Public Overrides Sub Accept(visitor As OperationVisitor)
visitor.VisitNoneOperation(Me)
End Sub
......@@ -1644,6 +1712,12 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
Return OperationKind.None
End Function
Protected Overrides ReadOnly Property Children As ImmutableArray(Of IOperation)
Get
Return Me.Indices.As(Of IOperation).Insert(0, Me.Operand)
End Get
End Property
Public Overrides Sub Accept(visitor As OperationVisitor)
visitor.VisitNoneOperation(Me)
End Sub
......@@ -1658,6 +1732,12 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
Return OperationKind.None
End Function
Protected Overrides ReadOnly Property Children As ImmutableArray(Of IOperation)
Get
Return Me.Clauses.As(Of IOperation)
End Get
End Property
Public Overrides Sub Accept(visitor As OperationVisitor)
visitor.VisitNoneOperation(Me)
End Sub
......@@ -1714,6 +1794,12 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
Return OperationKind.None
End Function
Protected Overrides ReadOnly Property Children As ImmutableArray(Of IOperation)
Get
Return ImmutableArray.Create(Of IOperation)(Me.Condition)
End Get
End Property
Public Overrides Sub Accept(visitor As OperationVisitor)
visitor.VisitNoneOperation(Me)
End Sub
......@@ -1764,6 +1850,12 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
Return OperationKind.None
End Function
Protected Overrides ReadOnly Property Children As ImmutableArray(Of IOperation)
Get
Return ImmutableArray.Create(Of IOperation)(Me.LabelExpressionOpt)
End Get
End Property
Public Overrides Sub Accept(visitor As OperationVisitor)
visitor.VisitNoneOperation(Me)
End Sub
......@@ -1778,6 +1870,12 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
Return OperationKind.None
End Function
Protected Overrides ReadOnly Property Children As ImmutableArray(Of IOperation)
Get
Return ImmutableArray.Create(Of IOperation)(Me.LabelExpressionOpt)
End Get
End Property
Public Overrides Sub Accept(visitor As OperationVisitor)
visitor.VisitNoneOperation(Me)
End Sub
......@@ -1792,6 +1890,12 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
Return OperationKind.None
End Function
Protected Overrides ReadOnly Property Children As ImmutableArray(Of IOperation)
Get
Return ImmutableArray.Create(Of IOperation)(Me.Body)
End Get
End Property
Public Overrides Sub Accept(visitor As OperationVisitor)
visitor.VisitNoneOperation(Me)
End Sub
......@@ -1806,6 +1910,12 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
Return OperationKind.None
End Function
Protected Overrides ReadOnly Property Children As ImmutableArray(Of IOperation)
Get
Return Me.Jumps.As(Of IOperation).Insert(0, Me.Value)
End Get
End Property
Public Overrides Sub Accept(visitor As OperationVisitor)
visitor.VisitNoneOperation(Me)
End Sub
......@@ -1820,6 +1930,12 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
Return OperationKind.None
End Function
Protected Overrides ReadOnly Property Children As ImmutableArray(Of IOperation)
Get
Return Me.Jumps.As(Of IOperation).InsertRange(0, {Me.ResumeLabel, Me.ResumeNextLabel})
End Get
End Property
Public Overrides Sub Accept(visitor As OperationVisitor)
visitor.VisitNoneOperation(Me)
End Sub
......
......@@ -97,6 +97,7 @@
<Compile Include="Diagnostics\DiagnosticTests.vb" />
<Compile Include="Diagnostics\GetDiagnosticsTests.vb" />
<Compile Include="IOperation\IOperationTests_IArgument.vb" />
<Compile Include="IOperation\IOperationTests_IParameterReferenceExpression.vb" />
<Compile Include="IOperation\IOperationTests_InvalidStatement.vb" />
<Compile Include="IOperation\IOperationTests_InvalidExpression.vb" />
<Compile Include="IOperation\IOperationTests_IBlockStatement_MethodBlocks.vb" />
......
' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
Imports Microsoft.CodeAnalysis.Semantics
Imports Microsoft.CodeAnalysis.Test.Utilities
Imports Microsoft.CodeAnalysis.VisualBasic.Syntax
Imports Roslyn.Test.Utilities
Namespace Microsoft.CodeAnalysis.VisualBasic.UnitTests.Semantics
Partial Public Class IOperationTests
Inherits SemanticModelTestBase
<Fact, WorkItem(8884, "https://github.com/dotnet/roslyn/issues/8884")>
Public Sub ParameterReference_TupleExpression()
Dim source = <![CDATA[
Class Class1
Public Sub M(x As Integer, y As Integer)
Dim tuple = (x, x + y)'BIND:"(x, x + y)"
End Sub
End Class]]>.Value
Dim expectedOperationTree = <![CDATA[
IOperation: (OperationKind.None) (Syntax: '(x, x + y)')
Children(2): IParameterReferenceExpression: x (OperationKind.ParameterReferenceExpression, Type: System.Int32) (Syntax: 'x')
IBinaryOperatorExpression (BinaryOperationKind.IntegerAdd) (OperationKind.BinaryOperatorExpression, Type: System.Int32) (Syntax: 'x + y')
Left: IParameterReferenceExpression: x (OperationKind.ParameterReferenceExpression, Type: System.Int32) (Syntax: 'x')
Right: IParameterReferenceExpression: y (OperationKind.ParameterReferenceExpression, Type: System.Int32) (Syntax: 'y')
]]>.Value
Dim expectedDiagnostics = String.Empty
VerifyOperationTreeAndDiagnosticsForTest(Of TupleExpressionSyntax)(source, expectedOperationTree, expectedDiagnostics)
End Sub
<Fact, WorkItem(8884, "https://github.com/dotnet/roslyn/issues/8884")>
Public Sub ParameterReference_AnonymousObjectCreation()
Dim source = <![CDATA[
Class Class1
Public Sub M(x As Integer, y As String)
Dim v = New With {'BIND:"New With {"'BIND:"New With {'BIND:"New With {""
Key .Amount = x,
Key .Message = "Hello" + y
}
End Sub
End Class]]>.Value
Dim expectedOperationTree = <![CDATA[
IOperation: (OperationKind.None) (Syntax: 'New With {' ... }')
Children(2): IOperation: (OperationKind.None) (Syntax: 'Key .Amount = x')
Children(1): IParameterReferenceExpression: x (OperationKind.ParameterReferenceExpression, Type: System.Int32) (Syntax: 'x')
IOperation: (OperationKind.None) (Syntax: 'Key .Messag ... "Hello" + y')
Children(1): IBinaryOperatorExpression (BinaryOperationKind.StringConcatenate) (OperationKind.BinaryOperatorExpression, Type: System.String) (Syntax: '"Hello" + y')
Left: ILiteralExpression (OperationKind.LiteralExpression, Type: System.String, Constant: "Hello") (Syntax: '"Hello"')
Right: IParameterReferenceExpression: y (OperationKind.ParameterReferenceExpression, Type: System.String) (Syntax: 'y')
]]>.Value
Dim expectedDiagnostics = String.Empty
VerifyOperationTreeAndDiagnosticsForTest(Of AnonymousObjectCreationExpressionSyntax)(source, expectedOperationTree, expectedDiagnostics)
End Sub
<Fact, WorkItem(8884, "https://github.com/dotnet/roslyn/issues/8884")>
Public Sub ParameterReference_QueryExpression()
Dim source = <![CDATA[
Imports System.Linq
Imports System.Collections.Generic
Structure Customer
Public Property Name As String
Public Property Address As String
End Structure
Class Class1
Public Sub M(customers As List(Of Customer))
Dim result = From cust In customers'BIND:"From cust In customers"
Select cust.Name
End Sub
End Class
]]>.Value
Dim expectedOperationTree = <![CDATA[
IOperation: (OperationKind.None) (Syntax: 'From cust I ... t cust.Name')
Children(1): IOperation: (OperationKind.None) (Syntax: 'Select cust.Name')
Children(1): IInvocationExpression ( Function System.Collections.Generic.IEnumerable(Of Customer).Select(Of System.String)(selector As System.Func(Of Customer, System.String)) As System.Collections.Generic.IEnumerable(Of System.String)) (OperationKind.InvocationExpression, Type: System.Collections.Generic.IEnumerable(Of System.String)) (Syntax: 'Select cust.Name')
Instance Receiver: IConversionExpression (ConversionKind.Basic, Implicit) (OperationKind.ConversionExpression, Type: System.Collections.Generic.IEnumerable(Of Customer)) (Syntax: 'cust In customers')
IOperation: (OperationKind.None) (Syntax: 'cust In customers')
Children(1): IOperation: (OperationKind.None) (Syntax: 'customers')
Children(1): IParameterReferenceExpression: customers (OperationKind.ParameterReferenceExpression, Type: System.Collections.Generic.List(Of Customer)) (Syntax: 'customers')
Arguments(1): IArgument (ArgumentKind.DefaultValue, Matching Parameter: selector) (OperationKind.Argument) (Syntax: 'cust.Name')
IConversionExpression (ConversionKind.Basic, Implicit) (OperationKind.ConversionExpression, Type: System.Func(Of Customer, System.String)) (Syntax: 'cust.Name')
IOperation: (OperationKind.None) (Syntax: 'cust.Name')
Children(1): IOperation: (OperationKind.None) (Syntax: 'cust.Name')
Children(1): IIndexedPropertyReferenceExpression: Property Customer.Name As System.String (OperationKind.PropertyReferenceExpression, Type: System.String) (Syntax: 'cust.Name')
Instance Receiver: IOperation: (OperationKind.None) (Syntax: 'cust')
]]>.Value
Dim expectedDiagnostics = String.Empty
VerifyOperationTreeAndDiagnosticsForTest(Of QueryExpressionSyntax)(source, expectedOperationTree, expectedDiagnostics)
End Sub
<Fact(Skip:="https://github.com/dotnet/roslyn/issues/18781"), WorkItem(8884, "https://github.com/dotnet/roslyn/issues/8884")>
Public Sub ParameterReference_ObjectAndCollectionInitializer()
Dim source = <![CDATA[
Imports System.Collections.Generic
Friend Class [Class]
Public Property X As Integer
Public Property Y As Integer()
Public Property Z As Dictionary(Of Integer, Integer)
Public Property C As [Class]
Public Sub M(x As Integer, y As Integer, z As Integer)
Dim c = New [Class]() With {'BIND:"New [Class]() With {"
.X = x,
.Y = {x, y, 3},
.Z = New Dictionary(Of Integer, Integer) From {{x, y}},
.C = New [Class]() With {.X = z}
}
End Sub
End Class
]]>.Value
Dim expectedOperationTree = <![CDATA[
IObjectCreationExpression (Constructor: Sub [Class]..ctor()) (OperationKind.ObjectCreationExpression, Type: [Class]) (Syntax: 'New [Class] ... }')
Member Initializers(4): IPropertyInitializer (Property: Property [Class].X As System.Int32) (OperationKind.PropertyInitializerInCreation) (Syntax: '.X = x')
IParameterReferenceExpression: x (OperationKind.ParameterReferenceExpression, Type: System.Int32) (Syntax: 'x')
IPropertyInitializer (Property: Property [Class].Y As System.Int32()) (OperationKind.PropertyInitializerInCreation) (Syntax: '.Y = {x, y, 3}')
IArrayCreationExpression (Element Type: System.Int32) (OperationKind.ArrayCreationExpression, Type: System.Int32()) (Syntax: '{x, y, 3}')
Dimension Sizes(1): ILiteralExpression (OperationKind.LiteralExpression, Type: System.Int32, Constant: 3) (Syntax: '{x, y, 3}')
Initializer: IArrayInitializer (3 elements) (OperationKind.ArrayInitializer) (Syntax: '{x, y, 3}')
Element Values(3): IParameterReferenceExpression: x (OperationKind.ParameterReferenceExpression, Type: System.Int32) (Syntax: 'x')
IParameterReferenceExpression: y (OperationKind.ParameterReferenceExpression, Type: System.Int32) (Syntax: 'y')
ILiteralExpression (Text: 3) (OperationKind.LiteralExpression, Type: System.Int32, Constant: 3) (Syntax: '3')
IPropertyInitializer (Property: Property [Class].Z As System.Collections.Generic.Dictionary(Of System.Int32, System.Int32)) (OperationKind.PropertyInitializerInCreation) (Syntax: '.Z = New Di ... om {{x, y}}')
IObjectCreationExpression (Constructor: Sub System.Collections.Generic.Dictionary(Of System.Int32, System.Int32)..ctor()) (OperationKind.ObjectCreationExpression, Type: System.Collections.Generic.Dictionary(Of System.Int32, System.Int32)) (Syntax: 'New Diction ... om {{x, y}}')
IPropertyInitializer (Property: Property [Class].C As [Class]) (OperationKind.PropertyInitializerInCreation) (Syntax: '.C = New [C ... th {.X = z}')
IObjectCreationExpression (Constructor: Sub [Class]..ctor()) (OperationKind.ObjectCreationExpression, Type: [Class]) (Syntax: 'New [Class] ... th {.X = z}')
Member Initializers(1): IPropertyInitializer (Property: Property [Class].X As System.Int32) (OperationKind.PropertyInitializerInCreation) (Syntax: '.X = z')
IParameterReferenceExpression: z (OperationKind.ParameterReferenceExpression, Type: System.Int32) (Syntax: 'z')
]]>.Value
Dim expectedDiagnostics = String.Empty
VerifyOperationTreeAndDiagnosticsForTest(Of ObjectCreationExpressionSyntax)(source, expectedOperationTree, expectedDiagnostics)
End Sub
<Fact, WorkItem(8884, "https://github.com/dotnet/roslyn/issues/8884")>
Public Sub ParameterReference_NameOfExpression()
Dim source = <![CDATA[
Class Class1
Public Function M(x As Integer) As String
Return NameOf(x)'BIND:"NameOf(x)"
End Function
End Class]]>.Value
Dim expectedOperationTree = <![CDATA[
IOperation: (OperationKind.None, Constant: "x") (Syntax: 'NameOf(x)')
Children(1): IParameterReferenceExpression: x (OperationKind.ParameterReferenceExpression, Type: System.Int32) (Syntax: 'x')
]]>.Value
Dim expectedDiagnostics = String.Empty
VerifyOperationTreeAndDiagnosticsForTest(Of NameOfExpressionSyntax)(source, expectedOperationTree, expectedDiagnostics)
End Sub
<Fact, WorkItem(8884, "https://github.com/dotnet/roslyn/issues/8884")>
Public Sub ParameterReference_LateBoundIndexerAccess()
Dim source = <![CDATA[
Option Strict Off
Class Class1
Public Sub M(d As Object, x As Integer)
Dim y = d(x)'BIND:"d(x)"
End Sub
End Class
]]>.Value
Dim expectedOperationTree = <![CDATA[
IOperation: (OperationKind.None) (Syntax: 'd(x)')
Children(2): IParameterReferenceExpression: d (OperationKind.ParameterReferenceExpression, Type: System.Object) (Syntax: 'd')
IConversionExpression (ConversionKind.Basic, Implicit) (OperationKind.ConversionExpression, Type: System.Object) (Syntax: 'x')
IParameterReferenceExpression: x (OperationKind.ParameterReferenceExpression, Type: System.Int32) (Syntax: 'x')
]]>.Value
Dim expectedDiagnostics = String.Empty
VerifyOperationTreeAndDiagnosticsForTest(Of InvocationExpressionSyntax)(source, expectedOperationTree, expectedDiagnostics)
End Sub
<Fact, WorkItem(8884, "https://github.com/dotnet/roslyn/issues/8884")>
Public Sub ParameterReference_LateBoundMemberAccess()
Dim source = <![CDATA[
Option Strict Off
Class Class1
Public Sub M(x As Object, y As Integer)
Dim z = x.M(y)'BIND:"x.M(y)"
End Sub
End Class
]]>.Value
Dim expectedOperationTree = <![CDATA[
IOperation: (OperationKind.None) (Syntax: 'x.M(y)')
Children(2): ILateBoundMemberReferenceExpression (Member name: M) (OperationKind.LateBoundMemberReferenceExpression, Type: System.Object) (Syntax: 'x.M')
Instance Receiver: IParameterReferenceExpression: x (OperationKind.ParameterReferenceExpression, Type: System.Object) (Syntax: 'x')
IParameterReferenceExpression: y (OperationKind.ParameterReferenceExpression, Type: System.Int32) (Syntax: 'y')
]]>.Value
Dim expectedDiagnostics = String.Empty
VerifyOperationTreeAndDiagnosticsForTest(Of InvocationExpressionSyntax)(source, expectedOperationTree, expectedDiagnostics)
End Sub
<Fact, WorkItem(8884, "https://github.com/dotnet/roslyn/issues/8884")>
Public Sub ParameterReference_LateBoundInvocation()
Dim source = <![CDATA[
Option Strict Off
Class Class1
Public Sub M(x As Object, y As Integer)
Dim z = x(y)'BIND:"x(y)"
End Sub
End Class
]]>.Value
Dim expectedOperationTree = <![CDATA[
IOperation: (OperationKind.None) (Syntax: 'x(y)')
Children(2): IParameterReferenceExpression: x (OperationKind.ParameterReferenceExpression, Type: System.Object) (Syntax: 'x')
IConversionExpression (ConversionKind.Basic, Implicit) (OperationKind.ConversionExpression, Type: System.Object) (Syntax: 'y')
IParameterReferenceExpression: y (OperationKind.ParameterReferenceExpression, Type: System.Int32) (Syntax: 'y')
]]>.Value
Dim expectedDiagnostics = String.Empty
VerifyOperationTreeAndDiagnosticsForTest(Of InvocationExpressionSyntax)(source, expectedOperationTree, expectedDiagnostics)
End Sub
<Fact, WorkItem(8884, "https://github.com/dotnet/roslyn/issues/8884")>
Public Sub ParameterReference_InterpolatedStringExpression()
Dim source = <![CDATA[
Imports System
Friend Class [Class]
Public Sub M(x As String, y As Integer)
Console.WriteLine($"String {x,20} and {y:D3} and constant {1}")'BIND:"$"String {x,20} and {y:D3} and constant {1}""
End Sub
End Class]]>.Value
Dim expectedOperationTree = <![CDATA[
IOperation: (OperationKind.None) (Syntax: '$"String {x ... nstant {1}"')
Children(6): ILiteralExpression (Text: String ) (OperationKind.LiteralExpression, Type: System.String, Constant: "String ") (Syntax: 'String ')
IOperation: (OperationKind.None) (Syntax: '{x,20}')
Children(2): IParameterReferenceExpression: x (OperationKind.ParameterReferenceExpression, Type: System.String) (Syntax: 'x')
ILiteralExpression (Text: 20) (OperationKind.LiteralExpression, Type: System.Int32, Constant: 20) (Syntax: '20')
ILiteralExpression (Text: and ) (OperationKind.LiteralExpression, Type: System.String, Constant: " and ") (Syntax: ' and ')
IOperation: (OperationKind.None) (Syntax: '{y:D3}')
Children(2): IParameterReferenceExpression: y (OperationKind.ParameterReferenceExpression, Type: System.Int32) (Syntax: 'y')
ILiteralExpression (OperationKind.LiteralExpression, Type: System.String, Constant: "D3") (Syntax: ':D3')
ILiteralExpression (Text: and constant ) (OperationKind.LiteralExpression, Type: System.String, Constant: " and constant ") (Syntax: ' and constant ')
IOperation: (OperationKind.None) (Syntax: '{1}')
Children(1): ILiteralExpression (Text: 1) (OperationKind.LiteralExpression, Type: System.Int32, Constant: 1) (Syntax: '1')
]]>.Value
Dim expectedDiagnostics = String.Empty
VerifyOperationTreeAndDiagnosticsForTest(Of InterpolatedStringExpressionSyntax)(source, expectedOperationTree, expectedDiagnostics)
End Sub
<Fact, WorkItem(8884, "https://github.com/dotnet/roslyn/issues/8884")>
Public Sub ParameterReference_MidAssignmentStatement()
Dim source = <![CDATA[
Imports System
Friend Class [Class]
Public Sub M(str As String, start As Integer, length As Integer)
Mid(str, start, length) = str'BIND:"Mid(str, start, length) = str"
End Sub
End Class]]>.Value
Dim expectedOperationTree = <![CDATA[
IExpressionStatement (OperationKind.ExpressionStatement) (Syntax: 'Mid(str, st ... ngth) = str')
IAssignmentExpression (OperationKind.AssignmentExpression, Type: System.Void) (Syntax: 'Mid(str, st ... ngth) = str')
Left: IParameterReferenceExpression: str (OperationKind.ParameterReferenceExpression, Type: System.String) (Syntax: 'str')
Right: IOperation: (OperationKind.None) (Syntax: 'Mid(str, st ... ngth) = str')
Children(4): IParenthesizedExpression (OperationKind.ParenthesizedExpression, Type: System.String) (Syntax: 'Mid(str, start, length)')
IOperation: (OperationKind.None) (Syntax: 'str')
IParameterReferenceExpression: start (OperationKind.ParameterReferenceExpression, Type: System.Int32) (Syntax: 'start')
IParameterReferenceExpression: length (OperationKind.ParameterReferenceExpression, Type: System.Int32) (Syntax: 'length')
IParameterReferenceExpression: str (OperationKind.ParameterReferenceExpression, Type: System.String) (Syntax: 'str')
]]>.Value
Dim expectedDiagnostics = String.Empty
VerifyOperationTreeAndDiagnosticsForTest(Of AssignmentStatementSyntax)(source, expectedOperationTree, expectedDiagnostics)
End Sub
<Fact, WorkItem(8884, "https://github.com/dotnet/roslyn/issues/8884")>
Public Sub ParameterReference_MisplacedCaseStatement()
Dim source = <![CDATA[
Imports System
Friend Class [Class]
Public Sub M(x As Integer)
Case x'BIND:"Case x"
End Sub
End Class]]>.Value
Dim expectedOperationTree = <![CDATA[
IInvalidStatement (OperationKind.InvalidStatement, IsInvalid) (Syntax: 'Case x')
Children(1): IOperation: (OperationKind.None) (Syntax: 'Case x')
Children(1): ISingleValueCaseClause (Equality operator kind: BinaryOperationKind.IntegerEquals) (CaseKind.SingleValue) (OperationKind.SingleValueCaseClause) (Syntax: 'x')
IParameterReferenceExpression: x (OperationKind.ParameterReferenceExpression, Type: System.Int32) (Syntax: 'x')
]]>.Value
Dim expectedDiagnostics = <![CDATA[
BC30072: 'Case' can only appear inside a 'Select Case' statement.
Case x'BIND:"Case x"
~~~~~~
]]>.Value
VerifyOperationTreeAndDiagnosticsForTest(Of CaseStatementSyntax)(source, expectedOperationTree, expectedDiagnostics)
End Sub
<Fact, WorkItem(8884, "https://github.com/dotnet/roslyn/issues/8884")>
Public Sub ParameterReference_RedimStatement()
Dim source = <![CDATA[
Imports System
Friend Class [Class]
Public Sub M(x As Integer)
Dim intArray(10, 10, 10) As Integer
ReDim intArray(x, x, x)'BIND:"ReDim intArray(x, x, x)"
End Sub
End Class]]>.Value
Dim expectedOperationTree = <![CDATA[
IOperation: (OperationKind.None) (Syntax: 'ReDim intArray(x, x, x)')
Children(1): IOperation: (OperationKind.None) (Syntax: 'intArray(x, x, x)')
Children(4): ILocalReferenceExpression: intArray (OperationKind.LocalReferenceExpression, Type: System.Int32(,,)) (Syntax: 'intArray')
IBinaryOperatorExpression (BinaryOperationKind.IntegerAdd) (OperationKind.BinaryOperatorExpression, Type: System.Int32) (Syntax: 'x')
Left: IParameterReferenceExpression: x (OperationKind.ParameterReferenceExpression, Type: System.Int32) (Syntax: 'x')
Right: ILiteralExpression (OperationKind.LiteralExpression, Type: System.Int32, Constant: 1) (Syntax: 'x')
IBinaryOperatorExpression (BinaryOperationKind.IntegerAdd) (OperationKind.BinaryOperatorExpression, Type: System.Int32) (Syntax: 'x')
Left: IParameterReferenceExpression: x (OperationKind.ParameterReferenceExpression, Type: System.Int32) (Syntax: 'x')
Right: ILiteralExpression (OperationKind.LiteralExpression, Type: System.Int32, Constant: 1) (Syntax: 'x')
IBinaryOperatorExpression (BinaryOperationKind.IntegerAdd) (OperationKind.BinaryOperatorExpression, Type: System.Int32) (Syntax: 'x')
Left: IParameterReferenceExpression: x (OperationKind.ParameterReferenceExpression, Type: System.Int32) (Syntax: 'x')
Right: ILiteralExpression (OperationKind.LiteralExpression, Type: System.Int32, Constant: 1) (Syntax: 'x')
]]>.Value
Dim expectedDiagnostics = String.Empty
VerifyOperationTreeAndDiagnosticsForTest(Of ReDimStatementSyntax)(source, expectedOperationTree, expectedDiagnostics)
End Sub
<Fact, WorkItem(8884, "https://github.com/dotnet/roslyn/issues/8884")>
Public Sub ParameterReference_EraseStatement()
Dim source = <![CDATA[
Imports System
Friend Class [Class]
Public Sub M(x As Integer())
Erase x'BIND:"Erase x"
End Sub
End Class]]>.Value
Dim expectedOperationTree = <![CDATA[
IOperation: (OperationKind.None) (Syntax: 'Erase x')
Children(1): IAssignmentExpression (OperationKind.AssignmentExpression, Type: System.Int32()) (Syntax: 'x')
Left: IParameterReferenceExpression: x (OperationKind.ParameterReferenceExpression, Type: System.Int32()) (Syntax: 'x')
Right: IConversionExpression (ConversionKind.Basic, Implicit) (OperationKind.ConversionExpression, Type: System.Int32(), Constant: null) (Syntax: 'x')
ILiteralExpression (OperationKind.LiteralExpression, Type: null, Constant: null) (Syntax: 'Erase x')
]]>.Value
Dim expectedDiagnostics = String.Empty
VerifyOperationTreeAndDiagnosticsForTest(Of EraseStatementSyntax)(source, expectedOperationTree, expectedDiagnostics)
End Sub
<Fact(Skip:="https://github.com/dotnet/roslyn/issues/19024"), WorkItem(8884, "https://github.com/dotnet/roslyn/issues/8884")>
Public Sub ParameterReference_UnstructuredExceptionHandlingStatement()
Dim source = <![CDATA[
Imports System
Friend Class [Class]
Public Sub M(x As Integer)'BIND:"Public Sub M(x As Integer)"
Resume Next
Console.Write(x)
End Sub
End Class]]>.Value
Dim expectedOperationTree = <![CDATA[
IBlockStatement (1 statements) (OperationKind.BlockStatement) (Syntax: 'Public Sub ... End Sub')
IReturnStatement (OperationKind.ReturnStatement) (Syntax: 'End Sub')
]]>.Value
Dim expectedDiagnostics = String.Empty
VerifyOperationTreeAndDiagnosticsForTest(Of MethodBlockSyntax)(source, expectedOperationTree, expectedDiagnostics)
End Sub
End Class
End Namespace
......@@ -257,9 +257,13 @@ internal override void VisitNoneOperation(IOperation operation)
LogString("IOperation: ");
LogCommonPropertiesAndNewLine(operation);
if (operation is IOperationWithChildren operationWithChildren && operationWithChildren.Children.Length > 0)
if (operation is IOperationWithChildren operationWithChildren)
{
VisitArray(operationWithChildren.Children.WhereNotNull().ToImmutableArray(), "Children", logElementCount: true);
var children = operationWithChildren.Children.WhereNotNull().ToImmutableArray();
if (children.Length > 0)
{
VisitArray(children, "Children", logElementCount: true);
}
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册