提交 e2f2c3cc 编写于 作者: M Manish Vasani 提交者: Jinu

Add unit tests for IStopStatement and IEndStatement and make the APIs public again (#22225)

Fixes #21297 and #22004
上级 ecc3bf45
......@@ -1270,9 +1270,7 @@ public override void Accept(OperationVisitor visitor)
internal sealed partial class EndStatement : Operation, IEndStatement
{
public EndStatement(SemanticModel semanticModel, SyntaxNode syntax, ITypeSymbol type, Optional<object> constantValue, bool isImplicit) :
// https://github.com/dotnet/roslyn/issues/22004
// base(OperationKind.EndStatement, semanticModel, syntax, type, constantValue, isImplicit)
base(OperationKind.None, semanticModel, syntax, type, constantValue, isImplicit)
base(OperationKind.EndStatement, semanticModel, syntax, type, constantValue, isImplicit)
{
}
public override IEnumerable<IOperation> Children
......@@ -4136,9 +4134,7 @@ public override void Accept(OperationVisitor visitor)
internal sealed partial class StopStatement : Operation, IStopStatement
{
public StopStatement(SemanticModel semanticModel, SyntaxNode syntax, ITypeSymbol type, Optional<object> constantValue, bool isImplicit) :
// https://github.com/dotnet/roslyn/issues/21297
// base(OperationKind.StopStatement, semanticModel, syntax, type, constantValue, isImplicit)
base(OperationKind.None, semanticModel, syntax, type, constantValue, isImplicit)
base(OperationKind.StopStatement, semanticModel, syntax, type, constantValue, isImplicit)
{
}
public override IEnumerable<IOperation> Children
......
......@@ -11,7 +11,7 @@ namespace Microsoft.CodeAnalysis.Semantics
/// This interface is reserved for implementation by its associated APIs. We reserve the right to
/// change it in the future.
/// </remarks>
internal interface IEndStatement : IOperation // https://github.com/dotnet/roslyn/issues/22004
public interface IEndStatement : IOperation
{
}
}
......
......@@ -11,7 +11,7 @@ namespace Microsoft.CodeAnalysis.Semantics
/// This interface is reserved for implementation by its associated APIs. We reserve the right to
/// change it in the future.
/// </remarks>
internal interface IStopStatement : IOperation // https://github.com/dotnet/roslyn/issues/21297
public interface IStopStatement : IOperation
{
}
}
......
......@@ -170,12 +170,12 @@ internal override IOperation VisitWithStatement(IWithStatement operation, object
return new WithStatement(Visit(operation.Body), Visit(operation.Value), ((Operation)operation).SemanticModel, operation.Syntax, operation.Type, operation.ConstantValue, operation.IsImplicit);
}
internal override IOperation VisitStopStatement(IStopStatement operation, object argument)
public override IOperation VisitStopStatement(IStopStatement operation, object argument)
{
return new StopStatement(((Operation)operation).SemanticModel, operation.Syntax, operation.Type, operation.ConstantValue, operation.IsImplicit);
}
internal override IOperation VisitEndStatement(IEndStatement operation, object argument)
public override IOperation VisitEndStatement(IEndStatement operation, object argument)
{
return new EndStatement(((Operation)operation).SemanticModel, operation.Syntax, operation.Type, operation.ConstantValue, operation.IsImplicit);
}
......
......@@ -58,12 +58,10 @@ public enum OperationKind
// Statements that occur only in Visual Basic.
// https://github.com/dotnet/roslyn/issues/21297
// /// <summary>Indicates an <see cref="IStopStatement"/>.</summary>
// StopStatement = 0x50,
// https://github.com/dotnet/roslyn/issues/22004
// /// <summary>Indicates an <see cref="IEndStatement"/>.</summary>
// EndStatement = 0x51,
/// <summary>Indicates an <see cref="IStopStatement"/>.</summary>
StopStatement = 0x50,
/// <summary>Indicates an <see cref="IEndStatement"/>.</summary>
EndStatement = 0x51,
// https://github.com/dotnet/roslyn/issues/22005
// /// <summary>Indicates an <see cref="IWithStatement"/>.</summary>
// WithStatement = 0x52,
......
......@@ -164,14 +164,12 @@ internal virtual void VisitWithStatement(IWithStatement operation)
DefaultVisit(operation);
}
// https://github.com/dotnet/roslyn/issues/21297
internal virtual void VisitStopStatement(IStopStatement operation)
public virtual void VisitStopStatement(IStopStatement operation)
{
DefaultVisit(operation);
}
// https://github.com/dotnet/roslyn/issues/22004
internal virtual void VisitEndStatement(IEndStatement operation)
public virtual void VisitEndStatement(IEndStatement operation)
{
DefaultVisit(operation);
}
......@@ -659,14 +657,12 @@ internal virtual TResult VisitWithStatement(IWithStatement operation, TArgument
return DefaultVisit(operation, argument);
}
// https://github.com/dotnet/roslyn/issues/21297
internal virtual TResult VisitStopStatement(IStopStatement operation, TArgument argument)
public virtual TResult VisitStopStatement(IStopStatement operation, TArgument argument)
{
return DefaultVisit(operation, argument);
}
// https://github.com/dotnet/roslyn/issues/22004
internal virtual TResult VisitEndStatement(IEndStatement operation, TArgument argument)
public virtual TResult VisitEndStatement(IEndStatement operation, TArgument argument)
{
return DefaultVisit(operation, argument);
}
......
......@@ -77,6 +77,7 @@ Microsoft.CodeAnalysis.OperationKind.DynamicInvocationExpression = 295 -> Micros
Microsoft.CodeAnalysis.OperationKind.DynamicMemberReferenceExpression = 294 -> Microsoft.CodeAnalysis.OperationKind
Microsoft.CodeAnalysis.OperationKind.DynamicObjectCreationExpression = 293 -> Microsoft.CodeAnalysis.OperationKind
Microsoft.CodeAnalysis.OperationKind.EmptyStatement = 9 -> Microsoft.CodeAnalysis.OperationKind
Microsoft.CodeAnalysis.OperationKind.EndStatement = 81 -> Microsoft.CodeAnalysis.OperationKind
Microsoft.CodeAnalysis.OperationKind.EventAssignmentExpression = 283 -> Microsoft.CodeAnalysis.OperationKind
Microsoft.CodeAnalysis.OperationKind.EventReferenceExpression = 268 -> Microsoft.CodeAnalysis.OperationKind
Microsoft.CodeAnalysis.OperationKind.ExpressionStatement = 17 -> Microsoft.CodeAnalysis.OperationKind
......@@ -114,6 +115,7 @@ Microsoft.CodeAnalysis.OperationKind.PropertyReferenceExpression = 266 -> Micros
Microsoft.CodeAnalysis.OperationKind.ReturnStatement = 11 -> Microsoft.CodeAnalysis.OperationKind
Microsoft.CodeAnalysis.OperationKind.SimpleAssignmentExpression = 280 -> Microsoft.CodeAnalysis.OperationKind
Microsoft.CodeAnalysis.OperationKind.SizeOfExpression = 514 -> Microsoft.CodeAnalysis.OperationKind
Microsoft.CodeAnalysis.OperationKind.StopStatement = 80 -> Microsoft.CodeAnalysis.OperationKind
Microsoft.CodeAnalysis.OperationKind.SwitchCase = 1033 -> Microsoft.CodeAnalysis.OperationKind
Microsoft.CodeAnalysis.OperationKind.SwitchStatement = 4 -> Microsoft.CodeAnalysis.OperationKind
Microsoft.CodeAnalysis.OperationKind.ThrowExpression = 519 -> Microsoft.CodeAnalysis.OperationKind
......@@ -275,6 +277,7 @@ Microsoft.CodeAnalysis.Semantics.IDynamicObjectCreationExpression
Microsoft.CodeAnalysis.Semantics.IDynamicObjectCreationExpression.Arguments.get -> System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.IOperation>
Microsoft.CodeAnalysis.Semantics.IDynamicObjectCreationExpression.Initializer.get -> Microsoft.CodeAnalysis.Semantics.IObjectOrCollectionInitializerExpression
Microsoft.CodeAnalysis.Semantics.IEmptyStatement
Microsoft.CodeAnalysis.Semantics.IEndStatement
Microsoft.CodeAnalysis.Semantics.IEventAssignmentExpression
Microsoft.CodeAnalysis.Semantics.IEventAssignmentExpression.Adds.get -> bool
Microsoft.CodeAnalysis.Semantics.IEventAssignmentExpression.EventReference.get -> Microsoft.CodeAnalysis.Semantics.IEventReferenceExpression
......@@ -401,6 +404,7 @@ Microsoft.CodeAnalysis.Semantics.ISingleValueCaseClause
Microsoft.CodeAnalysis.Semantics.ISingleValueCaseClause.Value.get -> Microsoft.CodeAnalysis.IOperation
Microsoft.CodeAnalysis.Semantics.ISizeOfExpression
Microsoft.CodeAnalysis.Semantics.ISizeOfExpression.TypeOperand.get -> Microsoft.CodeAnalysis.ITypeSymbol
Microsoft.CodeAnalysis.Semantics.IStopStatement
Microsoft.CodeAnalysis.Semantics.ISwitchCase
Microsoft.CodeAnalysis.Semantics.ISwitchCase.Body.get -> System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.IOperation>
Microsoft.CodeAnalysis.Semantics.ISwitchCase.Clauses.get -> System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.Semantics.ICaseClause>
......@@ -520,6 +524,7 @@ virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitDynamicInvocation
virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitDynamicMemberReferenceExpression(Microsoft.CodeAnalysis.Semantics.IDynamicMemberReferenceExpression operation) -> void
virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitDynamicObjectCreationExpression(Microsoft.CodeAnalysis.Semantics.IDynamicObjectCreationExpression 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
......@@ -562,6 +567,7 @@ virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitReturnStatement(M
virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitSimpleAssignmentExpression(Microsoft.CodeAnalysis.Semantics.ISimpleAssignmentExpression 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.IStopStatement operation) -> void
virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitSwitchCase(Microsoft.CodeAnalysis.Semantics.ISwitchCase operation) -> void
virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitSwitchStatement(Microsoft.CodeAnalysis.Semantics.ISwitchStatement operation) -> void
virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitThrowExpression(Microsoft.CodeAnalysis.Semantics.IThrowExpression operation) -> void
......@@ -604,6 +610,7 @@ virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor<TArgument, TResult>.Vi
virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor<TArgument, TResult>.VisitDynamicMemberReferenceExpression(Microsoft.CodeAnalysis.Semantics.IDynamicMemberReferenceExpression operation, TArgument argument) -> TResult
virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor<TArgument, TResult>.VisitDynamicObjectCreationExpression(Microsoft.CodeAnalysis.Semantics.IDynamicObjectCreationExpression operation, TArgument argument) -> TResult
virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor<TArgument, TResult>.VisitEmptyStatement(Microsoft.CodeAnalysis.Semantics.IEmptyStatement operation, TArgument argument) -> TResult
virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor<TArgument, TResult>.VisitEndStatement(Microsoft.CodeAnalysis.Semantics.IEndStatement operation, TArgument argument) -> TResult
virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor<TArgument, TResult>.VisitEventAssignmentExpression(Microsoft.CodeAnalysis.Semantics.IEventAssignmentExpression operation, TArgument argument) -> TResult
virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor<TArgument, TResult>.VisitEventReferenceExpression(Microsoft.CodeAnalysis.Semantics.IEventReferenceExpression operation, TArgument argument) -> TResult
virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor<TArgument, TResult>.VisitExpressionStatement(Microsoft.CodeAnalysis.Semantics.IExpressionStatement operation, TArgument argument) -> TResult
......@@ -646,6 +653,7 @@ virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor<TArgument, TResult>.Vi
virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor<TArgument, TResult>.VisitSimpleAssignmentExpression(Microsoft.CodeAnalysis.Semantics.ISimpleAssignmentExpression operation, TArgument argument) -> TResult
virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor<TArgument, TResult>.VisitSingleValueCaseClause(Microsoft.CodeAnalysis.Semantics.ISingleValueCaseClause operation, TArgument argument) -> TResult
virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor<TArgument, TResult>.VisitSizeOfExpression(Microsoft.CodeAnalysis.Semantics.ISizeOfExpression operation, TArgument argument) -> TResult
virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor<TArgument, TResult>.VisitStopStatement(Microsoft.CodeAnalysis.Semantics.IStopStatement operation, TArgument argument) -> TResult
virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor<TArgument, TResult>.VisitSwitchCase(Microsoft.CodeAnalysis.Semantics.ISwitchCase operation, TArgument argument) -> TResult
virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor<TArgument, TResult>.VisitSwitchStatement(Microsoft.CodeAnalysis.Semantics.ISwitchStatement operation, TArgument argument) -> TResult
virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor<TArgument, TResult>.VisitThrowExpression(Microsoft.CodeAnalysis.Semantics.IThrowExpression operation, TArgument argument) -> TResult
......
......@@ -520,7 +520,7 @@ Class C
End Class]]>.Value
Dim expectedOperationTree = <![CDATA[
IEndStatement (OperationKind.None) (Syntax: 'End')
IEndStatement (OperationKind.EndStatement) (Syntax: 'End')
]]>.Value
Dim expectedDiagnostics = String.Empty
......@@ -548,7 +548,7 @@ IIfStatement (OperationKind.IfStatement) (Syntax: 'If i = 0 Th ... End If')
Instance Receiver: null
Right: ILiteralExpression (OperationKind.LiteralExpression, Type: System.Int32, Constant: 0) (Syntax: '0')
IfTrue: IBlockStatement (1 statements) (OperationKind.BlockStatement) (Syntax: 'If i = 0 Th ... End If')
IEndStatement (OperationKind.None) (Syntax: 'End')
IEndStatement (OperationKind.EndStatement) (Syntax: 'End')
IfFalse: null
]]>.Value
......@@ -571,7 +571,7 @@ Class C
End Class]]>.Value
Dim expectedOperationTree = <![CDATA[
IStopStatement (OperationKind.None) (Syntax: 'Stop')
IStopStatement (OperationKind.StopStatement) (Syntax: 'Stop')
]]>.Value
Dim expectedDiagnostics = String.Empty
......@@ -599,7 +599,7 @@ IIfStatement (OperationKind.IfStatement) (Syntax: 'If i = 0 Th ... End If')
Instance Receiver: null
Right: ILiteralExpression (OperationKind.LiteralExpression, Type: System.Int32, Constant: 0) (Syntax: '0')
IfTrue: IBlockStatement (1 statements) (OperationKind.BlockStatement) (Syntax: 'If i = 0 Th ... End If')
IStopStatement (OperationKind.None) (Syntax: 'Stop')
IStopStatement (OperationKind.StopStatement) (Syntax: 'Stop')
IfFalse: null
]]>.Value
......
......@@ -614,13 +614,13 @@ internal override void VisitWithStatement(IWithStatement operation)
Visit(operation.Body, "Body");
}
internal override void VisitStopStatement(IStopStatement operation)
public override void VisitStopStatement(IStopStatement operation)
{
LogString(nameof(IStopStatement));
LogCommonPropertiesAndNewLine(operation);
}
internal override void VisitEndStatement(IEndStatement operation)
public override void VisitEndStatement(IEndStatement operation)
{
LogString(nameof(IEndStatement));
LogCommonPropertiesAndNewLine(operation);
......
......@@ -214,12 +214,12 @@ internal override void VisitWithStatement(IWithStatement operation)
base.VisitWithStatement(operation);
}
internal override void VisitStopStatement(IStopStatement operation)
public override void VisitStopStatement(IStopStatement operation)
{
base.VisitStopStatement(operation);
}
internal override void VisitEndStatement(IEndStatement operation)
public override void VisitEndStatement(IEndStatement operation)
{
base.VisitEndStatement(operation);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册