Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
33bb4c41
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,发现更多精彩内容 >>
提交
33bb4c41
编写于
4月 07, 2018
作者:
C
Cyrus Najmabadi
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Place '#pragma warning restore' in better location with multi-line statements.
上级
9c7e1ce0
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
49 addition
and
6 deletion
+49
-6
src/EditorFeatures/CSharpTest/Diagnostics/Suppression/SuppressionTests.cs
...es/CSharpTest/Diagnostics/Suppression/SuppressionTests.cs
+27
-0
src/Features/CSharp/Portable/CodeFixes/Suppression/CSharpSuppressionCodeFixProvider.cs
...CodeFixes/Suppression/CSharpSuppressionCodeFixProvider.cs
+22
-6
未找到文件。
src/EditorFeatures/CSharpTest/Diagnostics/Suppression/SuppressionTests.cs
浏览文件 @
33bb4c41
...
...
@@ -73,6 +73,33 @@ void Method()
}}
"
);
}
[
WorkItem
(
26015
,
"https://github.com/dotnet/roslyn/issues/26015"
)]
[
Fact
,
Trait
(
Traits
.
Feature
,
Traits
.
Features
.
CodeActionsSuppression
)]
public
async
Task
TestPragmaWarningDirectiveAroundMultiLineStatement
()
{
await
TestAsync
(
@"
class Class
{
void Method()
{
[|string x = @""multi
line"";|]
}
}"
,
$@"
class Class
{{
void
Method
()
{{
#pragma warning disable CS0219 // {CSharpResources.WRN_UnreferencedVarAssg_Title}
string
x
=
@""
multi
line
""
;
#pragma warning restore CS0219 // {CSharpResources.WRN_UnreferencedVarAssg_Title}
}}
}}
"
);
}
[
Fact
,
Trait
(
Traits
.
Feature
,
Traits
.
Features
.
CodeActionsSuppression
)]
public
async
Task
TestMultilineStatementPragmaWarningDirective
()
{
...
...
src/Features/CSharp/Portable/CodeFixes/Suppression/CSharpSuppressionCodeFixProvider.cs
浏览文件 @
33bb4c41
...
...
@@ -11,6 +11,7 @@
using
Microsoft.CodeAnalysis.CSharp.Extensions
;
using
Microsoft.CodeAnalysis.CSharp.Syntax
;
using
Microsoft.CodeAnalysis.Formatting
;
using
Microsoft.CodeAnalysis.Text
;
namespace
Microsoft.CodeAnalysis.CSharp.CodeFixes.Suppression
{
...
...
@@ -74,14 +75,10 @@ protected override bool IsAttributeListWithAssemblyAttributes(SyntaxNode node)
}
protected
override
bool
IsEndOfLine
(
SyntaxTrivia
trivia
)
{
return
trivia
.
Kind
()
==
SyntaxKind
.
EndOfLineTrivia
;
}
=>
trivia
.
Kind
()
==
SyntaxKind
.
EndOfLineTrivia
;
protected
override
bool
IsEndOfFileToken
(
SyntaxToken
token
)
{
return
token
.
Kind
()
==
SyntaxKind
.
EndOfFileToken
;
}
=>
token
.
Kind
()
==
SyntaxKind
.
EndOfFileToken
;
protected
override
async
Task
<
SyntaxNode
>
AddGlobalSuppressMessageAttributeAsync
(
SyntaxNode
newRoot
,
ISymbol
targetSymbol
,
Diagnostic
diagnostic
,
Workspace
workspace
,
CancellationToken
cancellationToken
)
{
...
...
@@ -185,5 +182,24 @@ protected override SyntaxTrivia TogglePragmaDirective(SyntaxTrivia trivia)
var
newPragmaWarning
=
pragmaWarning
.
WithDisableOrRestoreKeyword
(
toggledToken
);
return
SyntaxFactory
.
Trivia
(
newPragmaWarning
);
}
protected
override
SyntaxToken
GetAdjustedTokenForPragmaRestore
(
SyntaxToken
token
,
SyntaxNode
root
,
TextLineCollection
lines
,
int
indexOfLine
)
{
var
nextToken
=
token
.
GetNextToken
();
if
(
nextToken
.
Kind
()
==
SyntaxKind
.
SemicolonToken
&&
nextToken
.
Parent
is
StatementSyntax
statement
&&
statement
.
GetLastToken
()
==
nextToken
&&
token
.
Parent
.
FirstAncestorOrSelf
<
StatementSyntax
>()
==
statement
)
{
// both the current and next tokens belong to the same statement, and the next token
// is the final semicolon in a statement. Do not put the pragma before that
// semicolon. Place it after the semicolon so the statement stays whole.
return
nextToken
;
}
return
token
;
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录