diff --git a/src/Compilers/CSharp/Portable/BoundTree/Statement.cs b/src/Compilers/CSharp/Portable/BoundTree/Statement.cs index d6a9b77eb02bad47cf770776b8121a1d9a8753c7..51b49ab000ebfd5ec3c46d08f8f45f8c9bf99984 100644 --- a/src/Compilers/CSharp/Portable/BoundTree/Statement.cs +++ b/src/Compilers/CSharp/Portable/BoundTree/Statement.cs @@ -8,7 +8,7 @@ namespace Microsoft.CodeAnalysis.CSharp { - partial class BoundStatement : IStatement + partial class BoundStatement : IOperation { OperationKind IOperation.Kind => this.StatementKind; @@ -28,13 +28,13 @@ partial class BoundBlock : IBlockStatement private static readonly ConditionalWeakTable s_blockStatementsMappings = new ConditionalWeakTable(); - ImmutableArray IBlockStatement.Statements + ImmutableArray IBlockStatement.Statements { get { // This is to filter out operations of kind None. - return (ImmutableArray) s_blockStatementsMappings.GetValue(this, - blockStatement => { return blockStatement.Statements.AsImmutable().WhereAsArray(statement => statement.Kind != OperationKind.None); } + return (ImmutableArray) s_blockStatementsMappings.GetValue(this, + blockStatement => { return blockStatement.Statements.AsImmutable().WhereAsArray(statement => statement.Kind != OperationKind.None); } ); } } @@ -88,8 +88,10 @@ public override void Accept(OperationVisitor visitor) } } - partial class BoundYieldBreakStatement + partial class BoundYieldBreakStatement : IReturnStatement { + IExpression IReturnStatement.ReturnedValue => null; + protected override OperationKind StatementKind => OperationKind.YieldBreakStatement; public override void Accept(OperationVisitor visitor) @@ -120,7 +122,7 @@ public override void Accept(OperationVisitor visitor) } } - partial class BoundNoOpStatement + partial class BoundNoOpStatement : IEmptyStatement { protected override OperationKind StatementKind => OperationKind.EmptyStatement; @@ -139,9 +141,9 @@ partial class BoundIfStatement : IIfStatement { IExpression IIfStatement.Condition => this.Condition; - IStatement IIfStatement.IfTrue => this.Consequence; + IOperation IIfStatement.IfTrue => this.Consequence; - IStatement IIfStatement.IfFalse => this.AlternativeOpt; + IOperation IIfStatement.IfFalse => this.AlternativeOpt; protected override OperationKind StatementKind => OperationKind.IfStatement; @@ -166,7 +168,7 @@ partial class BoundWhileStatement : IWhileUntilLoopStatement LoopKind ILoopStatement.LoopKind => LoopKind.WhileUntil; - IStatement ILoopStatement.Body => this.Body; + IOperation ILoopStatement.Body => this.Body; protected override OperationKind StatementKind => OperationKind.LoopStatement; @@ -191,7 +193,7 @@ partial class BoundDoStatement : IWhileUntilLoopStatement LoopKind ILoopStatement.LoopKind => LoopKind.WhileUntil; - IStatement ILoopStatement.Body => this.Body; + IOperation ILoopStatement.Body => this.Body; protected override OperationKind StatementKind => OperationKind.LoopStatement; @@ -208,9 +210,9 @@ public override void Accept(OperationVisitor visitor) partial class BoundForStatement : IForLoopStatement { - ImmutableArray IForLoopStatement.Before => ToStatements(this.Initializer); + ImmutableArray IForLoopStatement.Before => ToStatements(this.Initializer); - ImmutableArray IForLoopStatement.AtLoopBottom => ToStatements(this.Increment); + ImmutableArray IForLoopStatement.AtLoopBottom => ToStatements(this.Increment); ImmutableArray IForLoopStatement.Locals => this.OuterLocals.As(); @@ -218,23 +220,23 @@ partial class BoundForStatement : IForLoopStatement LoopKind ILoopStatement.LoopKind => LoopKind.For; - IStatement ILoopStatement.Body => this.Body; + IOperation ILoopStatement.Body => this.Body; protected override OperationKind StatementKind => OperationKind.LoopStatement; - ImmutableArray ToStatements(BoundStatement statement) + ImmutableArray ToStatements(BoundStatement statement) { BoundStatementList statementList = statement as BoundStatementList; if (statementList != null) { - return statementList.Statements.As(); + return statementList.Statements.As(); } else if (statement == null) { - return ImmutableArray.Empty; + return ImmutableArray.Empty; } - return ImmutableArray.Create(statement); + return ImmutableArray.Create(statement); } public override void Accept(OperationVisitor visitor) @@ -256,7 +258,7 @@ partial class BoundForEachStatement : IForEachLoopStatement LoopKind ILoopStatement.LoopKind => LoopKind.ForEach; - IStatement ILoopStatement.Body => this.Body; + IOperation ILoopStatement.Body => this.Body; protected override OperationKind StatementKind => OperationKind.LoopStatement; @@ -306,13 +308,13 @@ private sealed class SwitchSection : ICase { public SwitchSection(BoundSwitchSection boundNode) { - this.Body = boundNode.Statements.As(); + this.Body = boundNode.Statements.As(); this.Clauses = boundNode.BoundSwitchLabels.As(); this.IsInvalid = boundNode.HasErrors; this.Syntax = boundNode.Syntax; } - public ImmutableArray Body { get; } + public ImmutableArray Body { get; } public ImmutableArray Clauses { get; } @@ -446,7 +448,7 @@ partial class BoundFixedStatement : IFixedStatement { IVariableDeclarationStatement IFixedStatement.Variables => this.Declarations; - IStatement IFixedStatement.Body => this.Body; + IOperation IFixedStatement.Body => this.Body; protected override OperationKind StatementKind => OperationKind.FixedStatement; @@ -467,7 +469,7 @@ partial class BoundUsingStatement : IUsingWithDeclarationStatement, IUsingWithEx IExpression IUsingWithExpressionStatement.Value => this.ExpressionOpt; - IStatement IUsingStatement.Body => this.Body; + IOperation IUsingStatement.Body => this.Body; protected override OperationKind StatementKind => this.ExpressionOpt != null ? OperationKind.UsingWithExpressionStatement : OperationKind.UsingWithDeclarationStatement; @@ -510,7 +512,7 @@ public override void Accept(OperationVisitor visitor) partial class BoundReturnStatement : IReturnStatement { - IExpression IReturnStatement.Returned => this.ExpressionOpt; + IExpression IReturnStatement.ReturnedValue => this.ExpressionOpt; protected override OperationKind StatementKind => OperationKind.ReturnStatement; @@ -527,7 +529,7 @@ public override void Accept(OperationVisitor visitor) partial class BoundYieldReturnStatement : IReturnStatement { - IExpression IReturnStatement.Returned => this.Expression; + IExpression IReturnStatement.ReturnedValue => this.Expression; protected override OperationKind StatementKind => OperationKind.YieldReturnStatement; @@ -546,7 +548,7 @@ partial class BoundLockStatement : ILockStatement { IExpression ILockStatement.LockedObject => this.Argument; - IStatement ILockStatement.Body => this.Body; + IOperation ILockStatement.Body => this.Body; protected override OperationKind StatementKind => OperationKind.LockStatement; @@ -561,7 +563,7 @@ public override void Accept(OperationVisitor visitor) } } - partial class BoundBadStatement + partial class BoundBadStatement : IInvalidStatement { protected override OperationKind StatementKind => OperationKind.InvalidStatement; @@ -651,7 +653,7 @@ public override void Accept(OperationVisitor visitor) partial class BoundLabeledStatement : ILabeledStatement { - IStatement ILabeledStatement.Labeled => this.Body; + IOperation ILabeledStatement.Labeled => this.Body; ILabelSymbol ILabelStatement.Label => this.Label; diff --git a/src/Compilers/Core/Portable/Compilation/IExpression.cs b/src/Compilers/Core/Portable/Compilation/IExpression.cs index e08778055462a71ba00bf902e7e8df0a5b2d2429..32767d144b6ef773b8b479bbbae954ca24496486 100644 --- a/src/Compilers/Core/Portable/Compilation/IExpression.cs +++ b/src/Compilers/Core/Portable/Compilation/IExpression.cs @@ -177,7 +177,7 @@ public interface ISyntheticLocalReferenceExpression : IReferenceExpression /// /// Statement defining the lifetime of the synthetic local. /// - IStatement ContainingStatement { get; } + IOperation ContainingStatement { get; } } /// diff --git a/src/Compilers/Core/Portable/Compilation/IOperation.cs b/src/Compilers/Core/Portable/Compilation/IOperation.cs index e09b45b026d5f1d2d119d46d87c079ada6251e90..e91a50e7a64bc1177234abcf8028a626eda24fb3 100644 --- a/src/Compilers/Core/Portable/Compilation/IOperation.cs +++ b/src/Compilers/Core/Portable/Compilation/IOperation.cs @@ -36,6 +36,7 @@ public enum OperationKind { None = 0x0, + /// Indicates an . InvalidStatement = 0x1, /// Indicates an . BlockStatement = 0x2, @@ -51,11 +52,13 @@ public enum OperationKind ContinueStatement = 0x7, /// Indicates an . BreakStatement = 0x8, + /// Indicates an . YieldBreakStatement = 0x9, LabelStatement = 0xa, LabeledStatement = 0xb, // Why do both of these exist? /// Indicates an . GoToStatement = 0xc, + /// Indicates an . EmptyStatement = 0xd, /// Indicates an . ThrowStatement = 0xe, @@ -151,7 +154,9 @@ public enum OperationKind // VB only OmittedArgumentExpression = 0x3c, + /// Indicates an . StopStatement = 0x3d, + /// Indicates an . EndStatement = 0x3e, /// Indicates an . WithStatement = 0x3f, diff --git a/src/Compilers/Core/Portable/Compilation/IStatement.cs b/src/Compilers/Core/Portable/Compilation/IStatement.cs index 99ba1f1174cd54d57942259b65852882e04a1603..ae421ac774c9c238920a271255a1ae1830d82500 100644 --- a/src/Compilers/Core/Portable/Compilation/IStatement.cs +++ b/src/Compilers/Core/Portable/Compilation/IStatement.cs @@ -4,22 +4,15 @@ namespace Microsoft.CodeAnalysis.Semantics { - /// - /// Root type for representing the abstract semantics of C# and VB statements. - /// - public interface IStatement : IOperation - { - } - /// /// Represents a block scope. /// - public interface IBlockStatement : IStatement + public interface IBlockStatement : IOperation { /// /// Statements contained within the block. /// - ImmutableArray Statements { get; } + ImmutableArray Statements { get; } /// /// Local declarations contained within the block. /// @@ -29,7 +22,7 @@ public interface IBlockStatement : IStatement /// /// Represents a local variable declaration statement. /// - public interface IVariableDeclarationStatement : IStatement + public interface IVariableDeclarationStatement : IOperation { /// /// Variables declared by the statement. @@ -55,7 +48,7 @@ public interface IVariableDeclaration : IOperation /// /// Represents a C# switch or VB Select Case statement. /// - public interface ISwitchStatement : IStatement + public interface ISwitchStatement : IOperation { /// /// Value to be switched upon. @@ -79,7 +72,7 @@ public interface ICase : IOperation /// /// Statements of the case. /// - ImmutableArray Body { get; } + ImmutableArray Body { get; } } /// @@ -164,7 +157,7 @@ public interface IRangeCaseClause : ICaseClause /// /// Represents an if statement in C# or an If statement in VB. /// - public interface IIfStatement : IStatement + public interface IIfStatement : IOperation { /// /// Condition of the if statement. For C# there is naturally one clause per if, but for VB If statements with multiple clauses are rewritten to have only one. @@ -173,17 +166,17 @@ public interface IIfStatement : IStatement /// /// Statement executed if the condition is true. /// - IStatement IfTrue { get; } + IOperation IfTrue { get; } /// /// Statement executed if the condition is false. /// - IStatement IfFalse { get; } + IOperation IfFalse { get; } } /// /// Represents a C# while, for, foreach, or do statement, or a VB While, For, For Each, or Do statement. /// - public interface ILoopStatement : IStatement + public interface ILoopStatement : IOperation { /// /// Kind of the loop. @@ -192,7 +185,7 @@ public interface ILoopStatement : IStatement /// /// Body of the loop. /// - IStatement Body { get; } + IOperation Body { get; } } /// @@ -203,15 +196,15 @@ public enum LoopKind /// /// Indicates a C# while or do loop, or a VB While or Do loop. /// - WhileUntil, + WhileUntil = 0x0, /// /// Indicates a C# for loop or a VB For loop. /// - For, + For = 0x1, /// /// Indicates a C# foreach loop or a VB For Each loop. /// - ForEach + ForEach = 0x2 } /// @@ -248,11 +241,11 @@ public interface IForLoopStatement : IForWhileUntilLoopStatement /// /// Statements to execute before entry to the loop. For C# these come from the first clause of the for statement. For VB these initialize the index variable of the For statement. /// - ImmutableArray Before { get; } + ImmutableArray Before { get; } /// /// Statements to execute at the bottom of the loop. For C# these come from the third clause of the for statement. For VB these increment the index variable of the For statement. /// - ImmutableArray AtLoopBottom { get; } + ImmutableArray AtLoopBottom { get; } /// /// Declarations local to the loop. /// @@ -277,7 +270,7 @@ public interface IForEachLoopStatement : ILoopStatement /// /// Represents a C# or VB label statement. /// - public interface ILabelStatement : IStatement + public interface ILabelStatement : IOperation { // Label that can be the target of branches. ILabelSymbol Label { get; } @@ -289,13 +282,13 @@ public interface ILabelStatement : IStatement public interface ILabeledStatement : ILabelStatement { // Statement that has been labeled. - IStatement Labeled { get; } + IOperation Labeled { get; } } /// /// Represents a C# goto, break, or continue statement, or a VB GoTo, Exit ***, or Continue *** statement /// - public interface IBranchStatement : IStatement + public interface IBranchStatement : IOperation { // Label that is the target of the branch. ILabelSymbol Target { get; } @@ -304,7 +297,7 @@ public interface IBranchStatement : IStatement /// /// Represents a C# throw or a VB Throw statement. /// - public interface IThrowStatement : IStatement + public interface IThrowStatement : IOperation { // Thrown expression. IExpression ThrownObject { get; } @@ -313,18 +306,18 @@ public interface IThrowStatement : IStatement /// /// Represents a C# return or a VB Return statement. /// - public interface IReturnStatement : IStatement + public interface IReturnStatement : IOperation { /// /// Value to be returned. /// - IExpression Returned { get; } + IExpression ReturnedValue { get; } } /// /// Represents a C# lock or a VB SyncLock statement. /// - public interface ILockStatement : IStatement + public interface ILockStatement : IOperation { /// /// Value to be locked. @@ -333,13 +326,13 @@ public interface ILockStatement : IStatement /// /// Body of the lock, to be executed while holding the lock. /// - IStatement Body { get; } + IOperation Body { get; } } /// /// Represents a C# try or a VB Try statement. /// - public interface ITryStatement : IStatement + public interface ITryStatement : IOperation { /// /// Body of the try, over which the handlers are active. @@ -381,12 +374,12 @@ public interface ICatch : IOperation /// /// Represents a C# using or VB Using statement. /// - public interface IUsingStatement : IStatement + public interface IUsingStatement : IOperation { /// /// Body of the using, over which the resources of the using are maintained. /// - IStatement Body { get; } + IOperation Body { get; } } /// @@ -414,7 +407,7 @@ public interface IUsingWithExpressionStatement : IUsingStatement /// /// Represents a C# fixed staement. /// - public interface IFixedStatement : IStatement + public interface IFixedStatement : IOperation { /// /// Variables to be fixed. @@ -423,13 +416,13 @@ public interface IFixedStatement : IStatement /// /// Body of the fixed, over which the variables are fixed. /// - IStatement Body { get; } + IOperation Body { get; } } /// /// Represents a C# or VB statement that consists solely of an expression. /// - public interface IExpressionStatement : IStatement + public interface IExpressionStatement : IOperation { /// /// Expression of the statement. @@ -440,15 +433,43 @@ public interface IExpressionStatement : IStatement /// /// Represents a VB With statement. /// - public interface IWithStatement : IStatement + public interface IWithStatement : IOperation { /// /// Body of the with. /// - IStatement Body { get; } + IOperation Body { get; } /// /// Value to whose members leading-dot-qualified references within the with body bind. /// IExpression Value { get; } } + + /// + /// Reprsents an empty statement. + /// + public interface IEmptyStatement : IOperation + { + } + + /// + /// Represents a VB Stop statement. + /// + public interface IStopStatement : IOperation + { + } + + /// + /// Represents a VB End statemnt. + /// + public interface IEndStatement : IOperation + { + } + + /// + /// Represents a syntactically or semantically invalid C# or VB statement. + /// + public interface IInvalidStatement : IOperation + { + } } diff --git a/src/Compilers/Core/Portable/Compilation/OperationVisitor.cs b/src/Compilers/Core/Portable/Compilation/OperationVisitor.cs index 0f624b43c64f79b3f66550bab6f67914b9b9df2d..6247274597b94f86ebbd579e099c36674b0ea3f9 100644 --- a/src/Compilers/Core/Portable/Compilation/OperationVisitor.cs +++ b/src/Compilers/Core/Portable/Compilation/OperationVisitor.cs @@ -93,12 +93,12 @@ public virtual void VisitBranchStatement(IBranchStatement operation) DefaultVisit(operation); } - public virtual void VisitYieldBreakStatement(IStatement operation) + public virtual void VisitYieldBreakStatement(IReturnStatement operation) { DefaultVisit(operation); } - public virtual void VisitEmptyStatement(IStatement operation) + public virtual void VisitEmptyStatement(IEmptyStatement operation) { DefaultVisit(operation); } @@ -153,12 +153,12 @@ public virtual void VisitWithStatement(IWithStatement operation) DefaultVisit(operation); } - public virtual void VisitStopStatement(IStatement operation) + public virtual void VisitStopStatement(IStopStatement operation) { DefaultVisit(operation); } - public virtual void VisitEndStatement(IStatement operation) + public virtual void VisitEndStatement(IEndStatement operation) { DefaultVisit(operation); } @@ -368,7 +368,7 @@ public virtual void VisitTypeParameterObjectCreationExpression(IExpression opera DefaultVisit(operation); } - public virtual void VisitInvalidStatement(IStatement operation) + public virtual void VisitInvalidStatement(IInvalidStatement operation) { DefaultVisit(operation); } @@ -478,12 +478,12 @@ public virtual TResult VisitBranchStatement(IBranchStatement operation, TArgumen return DefaultVisit(operation, argument); } - public virtual TResult VisitYieldBreakStatement(IStatement operation, TArgument argument) + public virtual TResult VisitYieldBreakStatement(IReturnStatement operation, TArgument argument) { return DefaultVisit(operation, argument); } - public virtual TResult VisitEmptyStatement(IStatement operation, TArgument argument) + public virtual TResult VisitEmptyStatement(IEmptyStatement operation, TArgument argument) { return DefaultVisit(operation, argument); } @@ -538,12 +538,12 @@ public virtual TResult VisitWithStatement(IWithStatement operation, TArgument ar return DefaultVisit(operation, argument); } - public virtual TResult VisitStopStatement(IStatement operation, TArgument argument) + public virtual TResult VisitStopStatement(IStopStatement operation, TArgument argument) { return DefaultVisit(operation, argument); } - public virtual TResult VisitEndStatement(IStatement operation, TArgument argument) + public virtual TResult VisitEndStatement(IEndStatement operation, TArgument argument) { return DefaultVisit(operation, argument); } @@ -753,7 +753,7 @@ public virtual TResult VisitTypeParameterObjectCreationExpression(IExpression op return DefaultVisit(operation, argument); } - public virtual TResult VisitInvalidStatement(IStatement operation, TArgument argument) + public virtual TResult VisitInvalidStatement(IInvalidStatement operation, TArgument argument) { return DefaultVisit(operation, argument); } diff --git a/src/Compilers/Core/Portable/Compilation/OperationWalker.cs b/src/Compilers/Core/Portable/Compilation/OperationWalker.cs index ab5cc04b575a6414cfc7719d9d95a317b1dd082b..0225191162dea51bbeea4a72b74f9c4e923acecd 100644 --- a/src/Compilers/Core/Portable/Compilation/OperationWalker.cs +++ b/src/Compilers/Core/Portable/Compilation/OperationWalker.cs @@ -130,10 +130,10 @@ public override void VisitLabeledStatement(ILabeledStatement operation) public override void VisitBranchStatement(IBranchStatement operation) { } - public override void VisitYieldBreakStatement(IStatement operation) + public override void VisitYieldBreakStatement(IReturnStatement operation) { } - public override void VisitEmptyStatement(IStatement operation) + public override void VisitEmptyStatement(IEmptyStatement operation) { } public override void VisitThrowStatement(IThrowStatement operation) @@ -143,7 +143,7 @@ public override void VisitThrowStatement(IThrowStatement operation) public override void VisitReturnStatement(IReturnStatement operation) { - Visit(operation.Returned); + Visit(operation.ReturnedValue); } public override void VisitLockStatement(ILockStatement operation) @@ -192,10 +192,10 @@ public override void VisitWithStatement(IWithStatement operation) Visit(operation.Body); } - public override void VisitStopStatement(IStatement operation) + public override void VisitStopStatement(IStopStatement operation) { } - public override void VisitEndStatement(IStatement operation) + public override void VisitEndStatement(IEndStatement operation) { } public override void VisitInvocationExpression(IInvocationExpression operation) @@ -395,7 +395,7 @@ public override void VisitDefaultValueExpression(IExpression operation) public override void VisitTypeParameterObjectCreationExpression(IExpression operation) { } - public override void VisitInvalidStatement(IStatement operation) + public override void VisitInvalidStatement(IInvalidStatement operation) { } public override void VisitInvalidExpression(IExpression operation) diff --git a/src/Compilers/Core/Portable/PublicAPI.Unshipped.txt b/src/Compilers/Core/Portable/PublicAPI.Unshipped.txt index 8962a721600c39565b66586a1b05a3a66fe4c2bb..5b84eb19bdf23c1e8c7901a720a6cbd0444ece72 100644 --- a/src/Compilers/Core/Portable/PublicAPI.Unshipped.txt +++ b/src/Compilers/Core/Portable/PublicAPI.Unshipped.txt @@ -354,11 +354,11 @@ Microsoft.CodeAnalysis.Semantics.IBinaryOperatorExpression.Left.get -> Microsoft Microsoft.CodeAnalysis.Semantics.IBinaryOperatorExpression.Right.get -> Microsoft.CodeAnalysis.Semantics.IExpression Microsoft.CodeAnalysis.Semantics.IBlockStatement Microsoft.CodeAnalysis.Semantics.IBlockStatement.Locals.get -> System.Collections.Immutable.ImmutableArray -Microsoft.CodeAnalysis.Semantics.IBlockStatement.Statements.get -> System.Collections.Immutable.ImmutableArray +Microsoft.CodeAnalysis.Semantics.IBlockStatement.Statements.get -> System.Collections.Immutable.ImmutableArray Microsoft.CodeAnalysis.Semantics.IBranchStatement Microsoft.CodeAnalysis.Semantics.IBranchStatement.Target.get -> Microsoft.CodeAnalysis.ILabelSymbol Microsoft.CodeAnalysis.Semantics.ICase -Microsoft.CodeAnalysis.Semantics.ICase.Body.get -> System.Collections.Immutable.ImmutableArray +Microsoft.CodeAnalysis.Semantics.ICase.Body.get -> System.Collections.Immutable.ImmutableArray Microsoft.CodeAnalysis.Semantics.ICase.Clauses.get -> System.Collections.Immutable.ImmutableArray Microsoft.CodeAnalysis.Semantics.ICaseClause Microsoft.CodeAnalysis.Semantics.ICaseClause.CaseKind.get -> Microsoft.CodeAnalysis.Semantics.CaseKind @@ -379,6 +379,8 @@ Microsoft.CodeAnalysis.Semantics.IConversionExpression Microsoft.CodeAnalysis.Semantics.IConversionExpression.ConversionKind.get -> Microsoft.CodeAnalysis.Semantics.ConversionKind Microsoft.CodeAnalysis.Semantics.IConversionExpression.IsExplicit.get -> bool Microsoft.CodeAnalysis.Semantics.IConversionExpression.Operand.get -> Microsoft.CodeAnalysis.Semantics.IExpression +Microsoft.CodeAnalysis.Semantics.IEmptyStatement +Microsoft.CodeAnalysis.Semantics.IEndStatement Microsoft.CodeAnalysis.Semantics.IEventAssignmentExpression Microsoft.CodeAnalysis.Semantics.IEventAssignmentExpression.Adds.get -> bool Microsoft.CodeAnalysis.Semantics.IEventAssignmentExpression.Event.get -> Microsoft.CodeAnalysis.IEventSymbol @@ -396,14 +398,14 @@ Microsoft.CodeAnalysis.Semantics.IFieldInitializer.InitializedFields.get -> Syst Microsoft.CodeAnalysis.Semantics.IFieldReferenceExpression Microsoft.CodeAnalysis.Semantics.IFieldReferenceExpression.Field.get -> Microsoft.CodeAnalysis.IFieldSymbol Microsoft.CodeAnalysis.Semantics.IFixedStatement -Microsoft.CodeAnalysis.Semantics.IFixedStatement.Body.get -> Microsoft.CodeAnalysis.Semantics.IStatement +Microsoft.CodeAnalysis.Semantics.IFixedStatement.Body.get -> Microsoft.CodeAnalysis.IOperation Microsoft.CodeAnalysis.Semantics.IFixedStatement.Variables.get -> Microsoft.CodeAnalysis.Semantics.IVariableDeclarationStatement Microsoft.CodeAnalysis.Semantics.IForEachLoopStatement Microsoft.CodeAnalysis.Semantics.IForEachLoopStatement.Collection.get -> Microsoft.CodeAnalysis.Semantics.IExpression Microsoft.CodeAnalysis.Semantics.IForEachLoopStatement.IterationVariable.get -> Microsoft.CodeAnalysis.ILocalSymbol Microsoft.CodeAnalysis.Semantics.IForLoopStatement -Microsoft.CodeAnalysis.Semantics.IForLoopStatement.AtLoopBottom.get -> System.Collections.Immutable.ImmutableArray -Microsoft.CodeAnalysis.Semantics.IForLoopStatement.Before.get -> System.Collections.Immutable.ImmutableArray +Microsoft.CodeAnalysis.Semantics.IForLoopStatement.AtLoopBottom.get -> System.Collections.Immutable.ImmutableArray +Microsoft.CodeAnalysis.Semantics.IForLoopStatement.Before.get -> System.Collections.Immutable.ImmutableArray Microsoft.CodeAnalysis.Semantics.IForLoopStatement.Locals.get -> System.Collections.Immutable.ImmutableArray Microsoft.CodeAnalysis.Semantics.IForWhileUntilLoopStatement Microsoft.CodeAnalysis.Semantics.IForWhileUntilLoopStatement.Condition.get -> Microsoft.CodeAnalysis.Semantics.IExpression @@ -415,12 +417,13 @@ Microsoft.CodeAnalysis.Semantics.IHasOperatorMethodExpression.OperatorMethod.get Microsoft.CodeAnalysis.Semantics.IHasOperatorMethodExpression.UsesOperatorMethod.get -> bool Microsoft.CodeAnalysis.Semantics.IIfStatement Microsoft.CodeAnalysis.Semantics.IIfStatement.Condition.get -> Microsoft.CodeAnalysis.Semantics.IExpression -Microsoft.CodeAnalysis.Semantics.IIfStatement.IfFalse.get -> Microsoft.CodeAnalysis.Semantics.IStatement -Microsoft.CodeAnalysis.Semantics.IIfStatement.IfTrue.get -> Microsoft.CodeAnalysis.Semantics.IStatement +Microsoft.CodeAnalysis.Semantics.IIfStatement.IfFalse.get -> Microsoft.CodeAnalysis.IOperation +Microsoft.CodeAnalysis.Semantics.IIfStatement.IfTrue.get -> Microsoft.CodeAnalysis.IOperation Microsoft.CodeAnalysis.Semantics.IIncrementExpression Microsoft.CodeAnalysis.Semantics.IIncrementExpression.IncrementKind.get -> Microsoft.CodeAnalysis.Semantics.UnaryOperationKind Microsoft.CodeAnalysis.Semantics.IInstanceReferenceExpression Microsoft.CodeAnalysis.Semantics.IInstanceReferenceExpression.IsExplicit.get -> bool +Microsoft.CodeAnalysis.Semantics.IInvalidStatement Microsoft.CodeAnalysis.Semantics.IInvocationExpression Microsoft.CodeAnalysis.Semantics.IInvocationExpression.ArgumentsInSourceOrder.get -> System.Collections.Immutable.ImmutableArray Microsoft.CodeAnalysis.Semantics.IInvocationExpression.Instance.get -> Microsoft.CodeAnalysis.Semantics.IExpression @@ -432,7 +435,7 @@ Microsoft.CodeAnalysis.Semantics.IIsExpression.Operand.get -> Microsoft.CodeAnal Microsoft.CodeAnalysis.Semantics.ILabelStatement Microsoft.CodeAnalysis.Semantics.ILabelStatement.Label.get -> Microsoft.CodeAnalysis.ILabelSymbol Microsoft.CodeAnalysis.Semantics.ILabeledStatement -Microsoft.CodeAnalysis.Semantics.ILabeledStatement.Labeled.get -> Microsoft.CodeAnalysis.Semantics.IStatement +Microsoft.CodeAnalysis.Semantics.ILabeledStatement.Labeled.get -> Microsoft.CodeAnalysis.IOperation Microsoft.CodeAnalysis.Semantics.ILambdaExpression Microsoft.CodeAnalysis.Semantics.ILambdaExpression.Body.get -> Microsoft.CodeAnalysis.Semantics.IBlockStatement Microsoft.CodeAnalysis.Semantics.ILambdaExpression.Signature.get -> Microsoft.CodeAnalysis.IMethodSymbol @@ -444,10 +447,10 @@ Microsoft.CodeAnalysis.Semantics.ILiteralExpression.Text.get -> string Microsoft.CodeAnalysis.Semantics.ILocalReferenceExpression Microsoft.CodeAnalysis.Semantics.ILocalReferenceExpression.Local.get -> Microsoft.CodeAnalysis.ILocalSymbol Microsoft.CodeAnalysis.Semantics.ILockStatement -Microsoft.CodeAnalysis.Semantics.ILockStatement.Body.get -> Microsoft.CodeAnalysis.Semantics.IStatement +Microsoft.CodeAnalysis.Semantics.ILockStatement.Body.get -> Microsoft.CodeAnalysis.IOperation Microsoft.CodeAnalysis.Semantics.ILockStatement.LockedObject.get -> Microsoft.CodeAnalysis.Semantics.IExpression Microsoft.CodeAnalysis.Semantics.ILoopStatement -Microsoft.CodeAnalysis.Semantics.ILoopStatement.Body.get -> Microsoft.CodeAnalysis.Semantics.IStatement +Microsoft.CodeAnalysis.Semantics.ILoopStatement.Body.get -> Microsoft.CodeAnalysis.IOperation Microsoft.CodeAnalysis.Semantics.ILoopStatement.LoopKind.get -> Microsoft.CodeAnalysis.Semantics.LoopKind Microsoft.CodeAnalysis.Semantics.IMemberReferenceExpression Microsoft.CodeAnalysis.Semantics.IMemberReferenceExpression.Instance.get -> Microsoft.CodeAnalysis.Semantics.IExpression @@ -481,19 +484,19 @@ Microsoft.CodeAnalysis.Semantics.IRelationalCaseClause Microsoft.CodeAnalysis.Semantics.IRelationalCaseClause.Relation.get -> Microsoft.CodeAnalysis.Semantics.BinaryOperationKind Microsoft.CodeAnalysis.Semantics.IRelationalCaseClause.Value.get -> Microsoft.CodeAnalysis.Semantics.IExpression Microsoft.CodeAnalysis.Semantics.IReturnStatement -Microsoft.CodeAnalysis.Semantics.IReturnStatement.Returned.get -> Microsoft.CodeAnalysis.Semantics.IExpression +Microsoft.CodeAnalysis.Semantics.IReturnStatement.ReturnedValue.get -> Microsoft.CodeAnalysis.Semantics.IExpression Microsoft.CodeAnalysis.Semantics.ISingleValueCaseClause Microsoft.CodeAnalysis.Semantics.ISingleValueCaseClause.Equality.get -> Microsoft.CodeAnalysis.Semantics.BinaryOperationKind Microsoft.CodeAnalysis.Semantics.ISingleValueCaseClause.Value.get -> Microsoft.CodeAnalysis.Semantics.IExpression Microsoft.CodeAnalysis.Semantics.ISizeOfExpression -Microsoft.CodeAnalysis.Semantics.IStatement +Microsoft.CodeAnalysis.Semantics.IStopStatement Microsoft.CodeAnalysis.Semantics.ISwitchStatement Microsoft.CodeAnalysis.Semantics.ISwitchStatement.Cases.get -> System.Collections.Immutable.ImmutableArray Microsoft.CodeAnalysis.Semantics.ISwitchStatement.Value.get -> Microsoft.CodeAnalysis.Semantics.IExpression Microsoft.CodeAnalysis.Semantics.ISymbolInitializer Microsoft.CodeAnalysis.Semantics.ISymbolInitializer.Value.get -> Microsoft.CodeAnalysis.Semantics.IExpression Microsoft.CodeAnalysis.Semantics.ISyntheticLocalReferenceExpression -Microsoft.CodeAnalysis.Semantics.ISyntheticLocalReferenceExpression.ContainingStatement.get -> Microsoft.CodeAnalysis.Semantics.IStatement +Microsoft.CodeAnalysis.Semantics.ISyntheticLocalReferenceExpression.ContainingStatement.get -> Microsoft.CodeAnalysis.IOperation Microsoft.CodeAnalysis.Semantics.ISyntheticLocalReferenceExpression.SyntheticLocalKind.get -> Microsoft.CodeAnalysis.Semantics.SyntheticLocalKind Microsoft.CodeAnalysis.Semantics.IThrowStatement Microsoft.CodeAnalysis.Semantics.IThrowStatement.ThrownObject.get -> Microsoft.CodeAnalysis.Semantics.IExpression @@ -508,7 +511,7 @@ Microsoft.CodeAnalysis.Semantics.IUnaryOperatorExpression Microsoft.CodeAnalysis.Semantics.IUnaryOperatorExpression.Operand.get -> Microsoft.CodeAnalysis.Semantics.IExpression Microsoft.CodeAnalysis.Semantics.IUnaryOperatorExpression.UnaryOperationKind.get -> Microsoft.CodeAnalysis.Semantics.UnaryOperationKind Microsoft.CodeAnalysis.Semantics.IUsingStatement -Microsoft.CodeAnalysis.Semantics.IUsingStatement.Body.get -> Microsoft.CodeAnalysis.Semantics.IStatement +Microsoft.CodeAnalysis.Semantics.IUsingStatement.Body.get -> Microsoft.CodeAnalysis.IOperation Microsoft.CodeAnalysis.Semantics.IUsingWithDeclarationStatement Microsoft.CodeAnalysis.Semantics.IUsingWithDeclarationStatement.Declaration.get -> Microsoft.CodeAnalysis.Semantics.IVariableDeclarationStatement Microsoft.CodeAnalysis.Semantics.IUsingWithExpressionStatement @@ -522,7 +525,7 @@ Microsoft.CodeAnalysis.Semantics.IWhileUntilLoopStatement Microsoft.CodeAnalysis.Semantics.IWhileUntilLoopStatement.IsTopTest.get -> bool Microsoft.CodeAnalysis.Semantics.IWhileUntilLoopStatement.IsWhile.get -> bool Microsoft.CodeAnalysis.Semantics.IWithStatement -Microsoft.CodeAnalysis.Semantics.IWithStatement.Body.get -> Microsoft.CodeAnalysis.Semantics.IStatement +Microsoft.CodeAnalysis.Semantics.IWithStatement.Body.get -> Microsoft.CodeAnalysis.IOperation Microsoft.CodeAnalysis.Semantics.IWithStatement.Value.get -> Microsoft.CodeAnalysis.Semantics.IExpression Microsoft.CodeAnalysis.Semantics.LoopKind Microsoft.CodeAnalysis.Semantics.LoopKind.For = 1 -> Microsoft.CodeAnalysis.Semantics.LoopKind @@ -669,8 +672,8 @@ override Microsoft.CodeAnalysis.Semantics.OperationWalker.VisitConditionalAccess override Microsoft.CodeAnalysis.Semantics.OperationWalker.VisitConditionalChoiceExpression(Microsoft.CodeAnalysis.Semantics.IConditionalChoiceExpression operation) -> void override Microsoft.CodeAnalysis.Semantics.OperationWalker.VisitConversionExpression(Microsoft.CodeAnalysis.Semantics.IConversionExpression operation) -> void override Microsoft.CodeAnalysis.Semantics.OperationWalker.VisitDefaultValueExpression(Microsoft.CodeAnalysis.Semantics.IExpression operation) -> void -override Microsoft.CodeAnalysis.Semantics.OperationWalker.VisitEmptyStatement(Microsoft.CodeAnalysis.Semantics.IStatement operation) -> void -override Microsoft.CodeAnalysis.Semantics.OperationWalker.VisitEndStatement(Microsoft.CodeAnalysis.Semantics.IStatement operation) -> void +override Microsoft.CodeAnalysis.Semantics.OperationWalker.VisitEmptyStatement(Microsoft.CodeAnalysis.Semantics.IEmptyStatement operation) -> void +override Microsoft.CodeAnalysis.Semantics.OperationWalker.VisitEndStatement(Microsoft.CodeAnalysis.Semantics.IEndStatement operation) -> void override Microsoft.CodeAnalysis.Semantics.OperationWalker.VisitEventAssignmentExpression(Microsoft.CodeAnalysis.Semantics.IEventAssignmentExpression operation) -> void override Microsoft.CodeAnalysis.Semantics.OperationWalker.VisitEventReferenceExpression(Microsoft.CodeAnalysis.Semantics.IEventReferenceExpression operation) -> void override Microsoft.CodeAnalysis.Semantics.OperationWalker.VisitExpressionStatement(Microsoft.CodeAnalysis.Semantics.IExpressionStatement operation) -> void @@ -683,7 +686,7 @@ override Microsoft.CodeAnalysis.Semantics.OperationWalker.VisitIfStatement(Micro override Microsoft.CodeAnalysis.Semantics.OperationWalker.VisitIncrementExpression(Microsoft.CodeAnalysis.Semantics.IIncrementExpression operation) -> void override Microsoft.CodeAnalysis.Semantics.OperationWalker.VisitInstanceReferenceExpression(Microsoft.CodeAnalysis.Semantics.IInstanceReferenceExpression operation) -> void override Microsoft.CodeAnalysis.Semantics.OperationWalker.VisitInvalidExpression(Microsoft.CodeAnalysis.Semantics.IExpression operation) -> void -override Microsoft.CodeAnalysis.Semantics.OperationWalker.VisitInvalidStatement(Microsoft.CodeAnalysis.Semantics.IStatement operation) -> void +override Microsoft.CodeAnalysis.Semantics.OperationWalker.VisitInvalidStatement(Microsoft.CodeAnalysis.Semantics.IInvalidStatement operation) -> void override Microsoft.CodeAnalysis.Semantics.OperationWalker.VisitInvocationExpression(Microsoft.CodeAnalysis.Semantics.IInvocationExpression operation) -> void override Microsoft.CodeAnalysis.Semantics.OperationWalker.VisitIsExpression(Microsoft.CodeAnalysis.Semantics.IIsExpression operation) -> void override Microsoft.CodeAnalysis.Semantics.OperationWalker.VisitLabelStatement(Microsoft.CodeAnalysis.Semantics.ILabelStatement operation) -> void @@ -708,7 +711,7 @@ override Microsoft.CodeAnalysis.Semantics.OperationWalker.VisitRelationalCaseCla override Microsoft.CodeAnalysis.Semantics.OperationWalker.VisitReturnStatement(Microsoft.CodeAnalysis.Semantics.IReturnStatement operation) -> void override Microsoft.CodeAnalysis.Semantics.OperationWalker.VisitSingleValueCaseClause(Microsoft.CodeAnalysis.Semantics.ISingleValueCaseClause operation) -> void override Microsoft.CodeAnalysis.Semantics.OperationWalker.VisitSizeOfExpression(Microsoft.CodeAnalysis.Semantics.ISizeOfExpression operation) -> void -override Microsoft.CodeAnalysis.Semantics.OperationWalker.VisitStopStatement(Microsoft.CodeAnalysis.Semantics.IStatement operation) -> void +override Microsoft.CodeAnalysis.Semantics.OperationWalker.VisitStopStatement(Microsoft.CodeAnalysis.Semantics.IStopStatement operation) -> void override Microsoft.CodeAnalysis.Semantics.OperationWalker.VisitSwitchStatement(Microsoft.CodeAnalysis.Semantics.ISwitchStatement operation) -> void override Microsoft.CodeAnalysis.Semantics.OperationWalker.VisitSyntheticLocalReferenceExpression(Microsoft.CodeAnalysis.Semantics.ISyntheticLocalReferenceExpression operation) -> void override Microsoft.CodeAnalysis.Semantics.OperationWalker.VisitThrowStatement(Microsoft.CodeAnalysis.Semantics.IThrowStatement operation) -> void @@ -723,7 +726,7 @@ override Microsoft.CodeAnalysis.Semantics.OperationWalker.VisitVariableDeclarati override Microsoft.CodeAnalysis.Semantics.OperationWalker.VisitVariableDeclarationStatement(Microsoft.CodeAnalysis.Semantics.IVariableDeclarationStatement operation) -> void override Microsoft.CodeAnalysis.Semantics.OperationWalker.VisitWhileUntilLoopStatement(Microsoft.CodeAnalysis.Semantics.IWhileUntilLoopStatement operation) -> void override Microsoft.CodeAnalysis.Semantics.OperationWalker.VisitWithStatement(Microsoft.CodeAnalysis.Semantics.IWithStatement operation) -> void -override Microsoft.CodeAnalysis.Semantics.OperationWalker.VisitYieldBreakStatement(Microsoft.CodeAnalysis.Semantics.IStatement operation) -> void +override Microsoft.CodeAnalysis.Semantics.OperationWalker.VisitYieldBreakStatement(Microsoft.CodeAnalysis.Semantics.IReturnStatement operation) -> void static Microsoft.CodeAnalysis.Semantics.OperationExtensions.Descendants(this Microsoft.CodeAnalysis.IOperation operation) -> System.Collections.Generic.IEnumerable static Microsoft.CodeAnalysis.Semantics.OperationExtensions.DescendantsAndSelf(this Microsoft.CodeAnalysis.IOperation operation) -> System.Collections.Generic.IEnumerable static Microsoft.CodeAnalysis.Semantics.OperationExtensions.GetRootOperation(this Microsoft.CodeAnalysis.ISymbol symbol, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> Microsoft.CodeAnalysis.IOperation @@ -762,8 +765,8 @@ virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitConditionalAccess virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitConditionalChoiceExpression(Microsoft.CodeAnalysis.Semantics.IConditionalChoiceExpression operation) -> void virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitConversionExpression(Microsoft.CodeAnalysis.Semantics.IConversionExpression operation) -> void virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitDefaultValueExpression(Microsoft.CodeAnalysis.Semantics.IExpression operation) -> void -virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitEmptyStatement(Microsoft.CodeAnalysis.Semantics.IStatement operation) -> void -virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitEndStatement(Microsoft.CodeAnalysis.Semantics.IStatement operation) -> void +virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitEmptyStatement(Microsoft.CodeAnalysis.Semantics.IEmptyStatement operation) -> void +virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitEndStatement(Microsoft.CodeAnalysis.Semantics.IEndStatement operation) -> void virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitEventAssignmentExpression(Microsoft.CodeAnalysis.Semantics.IEventAssignmentExpression operation) -> void virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitEventReferenceExpression(Microsoft.CodeAnalysis.Semantics.IEventReferenceExpression operation) -> void virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitExpressionStatement(Microsoft.CodeAnalysis.Semantics.IExpressionStatement operation) -> void @@ -776,7 +779,7 @@ virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitIfStatement(Micro virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitIncrementExpression(Microsoft.CodeAnalysis.Semantics.IIncrementExpression operation) -> void virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitInstanceReferenceExpression(Microsoft.CodeAnalysis.Semantics.IInstanceReferenceExpression operation) -> void virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitInvalidExpression(Microsoft.CodeAnalysis.Semantics.IExpression operation) -> void -virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitInvalidStatement(Microsoft.CodeAnalysis.Semantics.IStatement operation) -> void +virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitInvalidStatement(Microsoft.CodeAnalysis.Semantics.IInvalidStatement operation) -> void virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitInvocationExpression(Microsoft.CodeAnalysis.Semantics.IInvocationExpression operation) -> void virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitIsExpression(Microsoft.CodeAnalysis.Semantics.IIsExpression operation) -> void virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitLabelStatement(Microsoft.CodeAnalysis.Semantics.ILabelStatement operation) -> void @@ -801,7 +804,7 @@ virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitRelationalCaseCla virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitReturnStatement(Microsoft.CodeAnalysis.Semantics.IReturnStatement operation) -> void virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitSingleValueCaseClause(Microsoft.CodeAnalysis.Semantics.ISingleValueCaseClause operation) -> void virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitSizeOfExpression(Microsoft.CodeAnalysis.Semantics.ISizeOfExpression operation) -> void -virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitStopStatement(Microsoft.CodeAnalysis.Semantics.IStatement operation) -> void +virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitStopStatement(Microsoft.CodeAnalysis.Semantics.IStopStatement operation) -> void virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitSwitchStatement(Microsoft.CodeAnalysis.Semantics.ISwitchStatement operation) -> void virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitSyntheticLocalReferenceExpression(Microsoft.CodeAnalysis.Semantics.ISyntheticLocalReferenceExpression operation) -> void virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitThrowStatement(Microsoft.CodeAnalysis.Semantics.IThrowStatement operation) -> void @@ -816,7 +819,7 @@ virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitVariableDeclarati virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitVariableDeclarationStatement(Microsoft.CodeAnalysis.Semantics.IVariableDeclarationStatement operation) -> void virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitWhileUntilLoopStatement(Microsoft.CodeAnalysis.Semantics.IWhileUntilLoopStatement operation) -> void virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitWithStatement(Microsoft.CodeAnalysis.Semantics.IWithStatement operation) -> void -virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitYieldBreakStatement(Microsoft.CodeAnalysis.Semantics.IStatement operation) -> void +virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitYieldBreakStatement(Microsoft.CodeAnalysis.Semantics.IReturnStatement operation) -> void virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.DefaultVisit(Microsoft.CodeAnalysis.IOperation operation, TArgument argument) -> TResult virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.Visit(Microsoft.CodeAnalysis.IOperation operation, TArgument argument) -> TResult virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitAddressOfExpression(Microsoft.CodeAnalysis.Semantics.IAddressOfExpression operation, TArgument argument) -> TResult @@ -836,8 +839,8 @@ virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.Vi virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitConditionalChoiceExpression(Microsoft.CodeAnalysis.Semantics.IConditionalChoiceExpression operation, TArgument argument) -> TResult virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitConversionExpression(Microsoft.CodeAnalysis.Semantics.IConversionExpression operation, TArgument argument) -> TResult virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitDefaultValueExpression(Microsoft.CodeAnalysis.Semantics.IExpression operation, TArgument argument) -> TResult -virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitEmptyStatement(Microsoft.CodeAnalysis.Semantics.IStatement operation, TArgument argument) -> TResult -virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitEndStatement(Microsoft.CodeAnalysis.Semantics.IStatement operation, TArgument argument) -> TResult +virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitEmptyStatement(Microsoft.CodeAnalysis.Semantics.IEmptyStatement operation, TArgument argument) -> TResult +virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitEndStatement(Microsoft.CodeAnalysis.Semantics.IEndStatement operation, TArgument argument) -> TResult virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitEventAssignmentExpression(Microsoft.CodeAnalysis.Semantics.IEventAssignmentExpression operation, TArgument argument) -> TResult virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitEventReferenceExpression(Microsoft.CodeAnalysis.Semantics.IEventReferenceExpression operation, TArgument argument) -> TResult virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitExpressionStatement(Microsoft.CodeAnalysis.Semantics.IExpressionStatement operation, TArgument argument) -> TResult @@ -850,7 +853,7 @@ virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.Vi virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitIncrementExpression(Microsoft.CodeAnalysis.Semantics.IIncrementExpression operation, TArgument argument) -> TResult virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitInstanceReferenceExpression(Microsoft.CodeAnalysis.Semantics.IInstanceReferenceExpression operation, TArgument argument) -> TResult virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitInvalidExpression(Microsoft.CodeAnalysis.Semantics.IExpression operation, TArgument argument) -> TResult -virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitInvalidStatement(Microsoft.CodeAnalysis.Semantics.IStatement operation, TArgument argument) -> TResult +virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitInvalidStatement(Microsoft.CodeAnalysis.Semantics.IInvalidStatement operation, TArgument argument) -> TResult virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitInvocationExpression(Microsoft.CodeAnalysis.Semantics.IInvocationExpression operation, TArgument argument) -> TResult virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitIsExpression(Microsoft.CodeAnalysis.Semantics.IIsExpression operation, TArgument argument) -> TResult virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitLabelStatement(Microsoft.CodeAnalysis.Semantics.ILabelStatement operation, TArgument argument) -> TResult @@ -875,7 +878,7 @@ virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.Vi virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitReturnStatement(Microsoft.CodeAnalysis.Semantics.IReturnStatement operation, TArgument argument) -> TResult virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitSingleValueCaseClause(Microsoft.CodeAnalysis.Semantics.ISingleValueCaseClause operation, TArgument argument) -> TResult virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitSizeOfExpression(Microsoft.CodeAnalysis.Semantics.ISizeOfExpression operation, TArgument argument) -> TResult -virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitStopStatement(Microsoft.CodeAnalysis.Semantics.IStatement operation, TArgument argument) -> TResult +virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitStopStatement(Microsoft.CodeAnalysis.Semantics.IStopStatement operation, TArgument argument) -> TResult virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitSwitchStatement(Microsoft.CodeAnalysis.Semantics.ISwitchStatement operation, TArgument argument) -> TResult virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitSyntheticLocalReferenceExpression(Microsoft.CodeAnalysis.Semantics.ISyntheticLocalReferenceExpression operation, TArgument argument) -> TResult virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitThrowStatement(Microsoft.CodeAnalysis.Semantics.IThrowStatement operation, TArgument argument) -> TResult @@ -890,4 +893,4 @@ virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.Vi virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitVariableDeclarationStatement(Microsoft.CodeAnalysis.Semantics.IVariableDeclarationStatement operation, TArgument argument) -> TResult virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitWhileUntilLoopStatement(Microsoft.CodeAnalysis.Semantics.IWhileUntilLoopStatement operation, TArgument argument) -> TResult virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitWithStatement(Microsoft.CodeAnalysis.Semantics.IWithStatement operation, TArgument argument) -> TResult -virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitYieldBreakStatement(Microsoft.CodeAnalysis.Semantics.IStatement operation, TArgument argument) -> TResult \ No newline at end of file +virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitYieldBreakStatement(Microsoft.CodeAnalysis.Semantics.IReturnStatement operation, TArgument argument) -> TResult \ No newline at end of file diff --git a/src/Compilers/VisualBasic/Portable/BoundTree/Statement.vb b/src/Compilers/VisualBasic/Portable/BoundTree/Statement.vb index 471c41531d1293555d4066f90a633554f32ff99b..9ab4a92b2acdbf62c308a8f0311aeabd37533767 100644 --- a/src/Compilers/VisualBasic/Portable/BoundTree/Statement.vb +++ b/src/Compilers/VisualBasic/Portable/BoundTree/Statement.vb @@ -7,7 +7,7 @@ Imports Microsoft.CodeAnalysis.VisualBasic.Symbols Namespace Microsoft.CodeAnalysis.VisualBasic Partial Class BoundStatement - Implements IStatement + Implements IOperation Private ReadOnly Property IKind As OperationKind Implements IOperation.Kind Get @@ -43,13 +43,13 @@ Namespace Microsoft.CodeAnalysis.VisualBasic End Get End Property - Private ReadOnly Property IIfTrue As IStatement Implements IIfStatement.IfTrue + Private ReadOnly Property IIfTrue As IOperation Implements IIfStatement.IfTrue Get Return Me.Consequence End Get End Property - Private ReadOnly Property IIfFalse As IStatement Implements IIfStatement.IfFalse + Private ReadOnly Property IIfFalse As IOperation Implements IIfStatement.IfFalse Get Return Me.AlternativeOpt End Get @@ -106,7 +106,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic Implements ICase Private ReadOnly _clauses As ImmutableArray(Of ICaseClause) - Private ReadOnly _body As ImmutableArray(Of IStatement) + Private ReadOnly _body As ImmutableArray(Of IOperation) Private ReadOnly _isInvalid As Boolean Private ReadOnly _syntax As SyntaxNode @@ -120,7 +120,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic _clauses = caseStatement.CaseClauses.As(Of ICaseClause)() End If - _body = ImmutableArray.Create(Of IStatement)(boundCaseBlock.Body) + _body = ImmutableArray.Create(Of IOperation)(boundCaseBlock.Body) _isInvalid = boundCaseBlock.HasErrors _syntax = boundCaseBlock.Syntax End Sub @@ -133,7 +133,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic Return visitor.VisitCase(Me, argument) End Function - Public ReadOnly Property Body As ImmutableArray(Of IStatement) Implements ICase.Body + Public ReadOnly Property Body As ImmutableArray(Of IOperation) Implements ICase.Body Get Return _body End Get @@ -455,7 +455,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic End Get End Property - Private ReadOnly Property IBody As IStatement Implements ILoopStatement.Body + Private ReadOnly Property IBody As IOperation Implements ILoopStatement.Body Get Return Me.Body End Get @@ -497,12 +497,12 @@ Namespace Microsoft.CodeAnalysis.VisualBasic Private Shared ReadOnly s_loopBottomMappings As New System.Runtime.CompilerServices.ConditionalWeakTable(Of BoundForToStatement, Object) - Private ReadOnly Property IAtLoopBottom As ImmutableArray(Of IStatement) Implements IForLoopStatement.AtLoopBottom + Private ReadOnly Property IAtLoopBottom As ImmutableArray(Of IOperation) Implements IForLoopStatement.AtLoopBottom Get Dim result = s_loopBottomMappings.GetValue( Me, Function(BoundFor) - Dim statements As ArrayBuilder(Of IStatement) = ArrayBuilder(Of IStatement).GetInstance() + Dim statements As ArrayBuilder(Of IOperation) = ArrayBuilder(Of IOperation).GetInstance() Dim operators As BoundForToUserDefinedOperators = BoundFor.OperatorsOpt If operators IsNot Nothing Then ' Use the operator methods. Figure out the precise rules first. @@ -527,18 +527,18 @@ Namespace Microsoft.CodeAnalysis.VisualBasic Return statements.ToImmutableAndFree() End Function) - Return DirectCast(result, ImmutableArray(Of IStatement)) + Return DirectCast(result, ImmutableArray(Of IOperation)) End Get End Property Private Shared ReadOnly s_loopTopMappings As New System.Runtime.CompilerServices.ConditionalWeakTable(Of BoundForToStatement, Object) - Private ReadOnly Property IBefore As ImmutableArray(Of IStatement) Implements IForLoopStatement.Before + Private ReadOnly Property IBefore As ImmutableArray(Of IOperation) Implements IForLoopStatement.Before Get Dim result = s_loopTopMappings.GetValue( Me, Function(BoundFor) - Dim statements As ArrayBuilder(Of IStatement) = ArrayBuilder(Of IStatement).GetInstance() + Dim statements As ArrayBuilder(Of IOperation) = ArrayBuilder(Of IOperation).GetInstance() ' ControlVariable = InitialValue Dim controlReference As IReferenceExpression = TryCast(BoundFor.ControlVariable, IReferenceExpression) @@ -559,7 +559,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic Return statements.ToImmutableAndFree() End Function) - Return DirectCast(result, ImmutableArray(Of IStatement)) + Return DirectCast(result, ImmutableArray(Of IOperation)) End Get End Property @@ -611,7 +611,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic End Get End Property - Private ReadOnly Property IBody As IStatement Implements ILoopStatement.Body + Private ReadOnly Property IBody As IOperation Implements ILoopStatement.Body Get Return Me.Body End Get @@ -639,10 +639,10 @@ Namespace Microsoft.CodeAnalysis.VisualBasic Implements ISyntheticLocalReferenceExpression Private _temporaryKind As SyntheticLocalKind - Private _containingStatement As IStatement + Private _containingStatement As IOperation Private _capturedValue As IExpression - Public Sub New(temporaryKind As SyntheticLocalKind, containingStatement As IStatement, capturedValue As IExpression) + Public Sub New(temporaryKind As SyntheticLocalKind, containingStatement As IOperation, capturedValue As IExpression) Me._temporaryKind = temporaryKind Me._containingStatement = containingStatement Me._capturedValue = capturedValue @@ -686,7 +686,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic End Get End Property - Public ReadOnly Property ContainingStatement As IStatement Implements ISyntheticLocalReferenceExpression.ContainingStatement + Public ReadOnly Property ContainingStatement As IOperation Implements ISyntheticLocalReferenceExpression.ContainingStatement Get Return Me._containingStatement End Get @@ -726,7 +726,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic End Get End Property - Private ReadOnly Property ILoop_Body As IStatement Implements ILoopStatement.Body + Private ReadOnly Property ILoop_Body As IOperation Implements ILoopStatement.Body Get Return Me.Body End Get @@ -849,15 +849,15 @@ Namespace Microsoft.CodeAnalysis.VisualBasic End Get End Property - Private ReadOnly Property IStatements As ImmutableArray(Of IStatement) Implements IBlockStatement.Statements + Private ReadOnly Property IStatements As ImmutableArray(Of IOperation) Implements IBlockStatement.Statements Get ' This is to filter out operations of kind None. Dim statements = s_blockStatementsMappings.GetValue(Me, Function(boundBlock) - Return boundBlock.Statements.As(Of IStatement).WhereAsArray(Function(statement) + Return boundBlock.Statements.As(Of IOperation).WhereAsArray(Function(statement) Return statement.Kind <> OperationKind.None End Function) End Function) - Return DirectCast(statements, ImmutableArray(Of IStatement)) + Return DirectCast(statements, ImmutableArray(Of IOperation)) End Get End Property @@ -875,6 +875,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic End Class Partial Class BoundBadStatement + Implements IInvalidStatement Protected Overrides Function StatementKind() As OperationKind Return OperationKind.InvalidStatement End Function @@ -891,7 +892,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic Partial Class BoundReturnStatement Implements IReturnStatement - Private ReadOnly Property IReturned As IExpression Implements IReturnStatement.Returned + Private ReadOnly Property IReturned As IExpression Implements IReturnStatement.ReturnedValue Get Return Me.ExpressionOpt End Get @@ -941,7 +942,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic End Get End Property - Private ReadOnly Property IBody As IStatement Implements ILoopStatement.Body + Private ReadOnly Property IBody As IOperation Implements ILoopStatement.Body Get Return Me.Body End Get @@ -1020,7 +1021,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic Partial Class BoundYieldStatement Implements IReturnStatement - Private ReadOnly Property IReturned As IExpression Implements IReturnStatement.Returned + Private ReadOnly Property IReturned As IExpression Implements IReturnStatement.ReturnedValue Get Return Me.Expression End Get @@ -1136,7 +1137,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic End Get End Property - Private ReadOnly Property IBody As IStatement Implements ILockStatement.Body + Private ReadOnly Property IBody As IOperation Implements ILockStatement.Body Get Return Me.Body End Get @@ -1156,6 +1157,8 @@ Namespace Microsoft.CodeAnalysis.VisualBasic End Class Partial Class BoundNoOpStatement + Implements IEmptyStatement + Protected Overrides Function StatementKind() As OperationKind Return OperationKind.EmptyStatement End Function @@ -1212,6 +1215,8 @@ Namespace Microsoft.CodeAnalysis.VisualBasic End Class Partial Class BoundStopStatement + Implements IStopStatement + Protected Overrides Function StatementKind() As OperationKind Return OperationKind.StopStatement End Function @@ -1226,6 +1231,8 @@ Namespace Microsoft.CodeAnalysis.VisualBasic End Class Partial Class BoundEndStatement + Implements IEndStatement + Protected Overrides Function StatementKind() As OperationKind Return OperationKind.EndStatement End Function @@ -1242,7 +1249,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic Partial Class BoundWithStatement Implements IWithStatement - Private ReadOnly Property IBody As IStatement Implements IWithStatement.Body + Private ReadOnly Property IBody As IOperation Implements IWithStatement.Body Get Return Me.Body End Get @@ -1288,7 +1295,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic End Get End Property - Private ReadOnly Property IBody As IStatement Implements IUsingStatement.Body + Private ReadOnly Property IBody As IOperation Implements IUsingStatement.Body Get Return Me.Body End Get