Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
e2f2c3cc
R
roslyn
项目概览
lwm1986
/
roslyn
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
roslyn
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
e2f2c3cc
编写于
9月 26, 2017
作者:
M
Manish Vasani
提交者:
Jinu
9月 26, 2017
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add unit tests for IStopStatement and IEndStatement and make the APIs public again (#22225)
Fixes #21297 and #22004
上级
ecc3bf45
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
30 addition
and
32 deletion
+30
-32
src/Compilers/Core/Portable/Generated/Operations.xml.Generated.cs
...ilers/Core/Portable/Generated/Operations.xml.Generated.cs
+2
-6
src/Compilers/Core/Portable/Operations/IEndStatement.cs
src/Compilers/Core/Portable/Operations/IEndStatement.cs
+1
-1
src/Compilers/Core/Portable/Operations/IStopStatement.cs
src/Compilers/Core/Portable/Operations/IStopStatement.cs
+1
-1
src/Compilers/Core/Portable/Operations/OperationCloner.cs
src/Compilers/Core/Portable/Operations/OperationCloner.cs
+2
-2
src/Compilers/Core/Portable/Operations/OperationKind.cs
src/Compilers/Core/Portable/Operations/OperationKind.cs
+4
-6
src/Compilers/Core/Portable/Operations/OperationVisitor.cs
src/Compilers/Core/Portable/Operations/OperationVisitor.cs
+4
-8
src/Compilers/Core/Portable/PublicAPI.Unshipped.txt
src/Compilers/Core/Portable/PublicAPI.Unshipped.txt
+8
-0
src/Compilers/VisualBasic/Test/Semantic/IOperation/IOperationTests.vb
...s/VisualBasic/Test/Semantic/IOperation/IOperationTests.vb
+4
-4
src/Test/Utilities/Portable/Compilation/OperationTreeVerifier.cs
...t/Utilities/Portable/Compilation/OperationTreeVerifier.cs
+2
-2
src/Test/Utilities/Portable/Compilation/TestOperationWalker.cs
...est/Utilities/Portable/Compilation/TestOperationWalker.cs
+2
-2
未找到文件。
src/Compilers/Core/Portable/Generated/Operations.xml.Generated.cs
浏览文件 @
e2f2c3cc
...
...
@@ -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
...
...
src/Compilers/Core/Portable/Operations/IEndStatement.cs
浏览文件 @
e2f2c3cc
...
...
@@ -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
{
}
}
...
...
src/Compilers/Core/Portable/Operations/IStopStatement.cs
浏览文件 @
e2f2c3cc
...
...
@@ -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
{
}
}
...
...
src/Compilers/Core/Portable/Operations/OperationCloner.cs
浏览文件 @
e2f2c3cc
...
...
@@ -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
);
}
...
...
src/Compilers/Core/Portable/Operations/OperationKind.cs
浏览文件 @
e2f2c3cc
...
...
@@ -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,
...
...
src/Compilers/Core/Portable/Operations/OperationVisitor.cs
浏览文件 @
e2f2c3cc
...
...
@@ -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
);
}
...
...
src/Compilers/Core/Portable/PublicAPI.Unshipped.txt
浏览文件 @
e2f2c3cc
...
...
@@ -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
...
...
src/Compilers/VisualBasic/Test/Semantic/IOperation/IOperationTests.vb
浏览文件 @
e2f2c3cc
...
...
@@ -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
...
...
src/Test/Utilities/Portable/Compilation/OperationTreeVerifier.cs
浏览文件 @
e2f2c3cc
...
...
@@ -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
);
...
...
src/Test/Utilities/Portable/Compilation/TestOperationWalker.cs
浏览文件 @
e2f2c3cc
...
...
@@ -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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录