Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
a89d6030
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,发现更多精彩内容 >>
提交
a89d6030
编写于
10月 30, 2016
作者:
C
CyrusNajmabadi
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add C# tests.
上级
856becfa
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
296 addition
and
1 deletion
+296
-1
src/EditorFeatures/CSharpTest/CSharpEditorServicesTest.csproj
...EditorFeatures/CSharpTest/CSharpEditorServicesTest.csproj
+1
-0
src/EditorFeatures/CSharpTest/UseNullPropagation/UseNullPropagationTests.cs
.../CSharpTest/UseNullPropagation/UseNullPropagationTests.cs
+293
-0
src/EditorFeatures/TestUtilities/Traits.cs
src/EditorFeatures/TestUtilities/Traits.cs
+1
-0
src/Features/Core/Portable/UseNullPropagation/AbstractUseNullPropagationCodeFixProvider.cs
...lPropagation/AbstractUseNullPropagationCodeFixProvider.cs
+1
-1
未找到文件。
src/EditorFeatures/CSharpTest/CSharpEditorServicesTest.csproj
浏览文件 @
a89d6030
...
@@ -281,6 +281,7 @@
...
@@ -281,6 +281,7 @@
<Compile
Include=
"InlineDeclaration\CSharpInlineDeclarationTests_FixAllTests.cs"
/>
<Compile
Include=
"InlineDeclaration\CSharpInlineDeclarationTests_FixAllTests.cs"
/>
<Compile
Include=
"InlineDeclaration\CSharpInlineDeclarationTests.cs"
/>
<Compile
Include=
"InlineDeclaration\CSharpInlineDeclarationTests.cs"
/>
<Compile
Include=
"UseCoalesceExpression\UseCoalesceExpressionTests.cs"
/>
<Compile
Include=
"UseCoalesceExpression\UseCoalesceExpressionTests.cs"
/>
<Compile
Include=
"UseNullPropagation\UseNullPropagationTests.cs"
/>
<Compile
Include=
"UsePatternMatching\CSharpIsAndCastCheckTests_FixAllTests.cs"
/>
<Compile
Include=
"UsePatternMatching\CSharpIsAndCastCheckTests_FixAllTests.cs"
/>
<Compile
Include=
"UsePatternMatching\CSharpIsAndCastCheckTests.cs"
/>
<Compile
Include=
"UsePatternMatching\CSharpIsAndCastCheckTests.cs"
/>
<Compile
Include=
"UsePatternMatching\CSharpAsAndNullCheckTests.cs"
/>
<Compile
Include=
"UsePatternMatching\CSharpAsAndNullCheckTests.cs"
/>
...
...
src/EditorFeatures/CSharpTest/UseNullPropagation/UseNullPropagationTests.cs
0 → 100644
浏览文件 @
a89d6030
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using
System
;
using
System.Threading.Tasks
;
using
Microsoft.CodeAnalysis.CodeFixes
;
using
Microsoft.CodeAnalysis.CSharp
;
using
Microsoft.CodeAnalysis.CSharp.UseNullPropagation
;
using
Microsoft.CodeAnalysis.Diagnostics
;
using
Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Diagnostics
;
using
Microsoft.CodeAnalysis.UseNullPropagation
;
using
Roslyn.Test.Utilities
;
using
Xunit
;
namespace
Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.UseNullPropagation
{
public
partial
class
UseNullPropagationTests
:
AbstractCSharpDiagnosticProviderBasedUserDiagnosticTest
{
internal
override
Tuple
<
DiagnosticAnalyzer
,
CodeFixProvider
>
CreateDiagnosticProviderAndFixer
(
Workspace
workspace
)
{
return
Tuple
.
Create
<
DiagnosticAnalyzer
,
CodeFixProvider
>(
new
CSharpUseNullPropagationDiagnosticAnalyzer
(),
new
CSharpUseNullPropagationCodeFixProvider
());
}
[
Fact
,
Trait
(
Traits
.
Feature
,
Traits
.
Features
.
CodeActionsUseNullPropagation
)]
public
async
Task
TestLeft_Equals
()
{
await
TestAsync
(
@"
using System;
class C
{
void M(object o)
{
var v = [||]o == null ? null : o.ToString();
}
}"
,
@"using System;
class C
{
void M(object o)
{
var v = o?.ToString();
}
}"
);
}
[
Fact
,
Trait
(
Traits
.
Feature
,
Traits
.
Features
.
CodeActionsUseNullPropagation
)]
public
async
Task
TestRight_Equals
()
{
await
TestAsync
(
@"
using System;
class C
{
void M(object o)
{
var v = [||]null == o ? null : o.ToString();
}
}"
,
@"using System;
class C
{
void M(object o)
{
var v = o?.ToString();
}
}"
);
}
[
Fact
,
Trait
(
Traits
.
Feature
,
Traits
.
Features
.
CodeActionsUseNullPropagation
)]
public
async
Task
TestLeft_NotEquals
()
{
await
TestAsync
(
@"
using System;
class C
{
void M(object o)
{
var v = [||]o != null ? o.ToString() : null;
}
}"
,
@"using System;
class C
{
void M(object o)
{
var v = o?.ToString();
}
}"
);
}
[
Fact
,
Trait
(
Traits
.
Feature
,
Traits
.
Features
.
CodeActionsUseNullPropagation
)]
public
async
Task
TestRight_NotEquals
()
{
await
TestAsync
(
@"
using System;
class C
{
void M(object o)
{
var v = [||]null != o ? o.ToString() : null;
}
}"
,
@"using System;
class C
{
void M(object o)
{
var v = o?.ToString();
}
}"
);
}
[
Fact
,
Trait
(
Traits
.
Feature
,
Traits
.
Features
.
CodeActionsUseNullPropagation
)]
public
async
Task
TestIndexer
()
{
await
TestAsync
(
@"
using System;
class C
{
void M(object o)
{
var v = [||]o == null ? null : o[0];
}
}"
,
@"using System;
class C
{
void M(object o)
{
var v = o?[0];
}
}"
);
}
[
Fact
,
Trait
(
Traits
.
Feature
,
Traits
.
Features
.
CodeActionsUseNullPropagation
)]
public
async
Task
TestConditionalAccess
()
{
await
TestAsync
(
@"
using System;
class C
{
void M(object o)
{
var v = [||]o == null ? null : o.B?.C;
}
}"
,
@"using System;
class C
{
void M(object o)
{
var v = o?.B?.C;
}
}"
);
}
[
Fact
,
Trait
(
Traits
.
Feature
,
Traits
.
Features
.
CodeActionsUseNullPropagation
)]
public
async
Task
TestMemberAccess
()
{
await
TestAsync
(
@"
using System;
class C
{
void M(object o)
{
var v = [||]o == null ? null : o.B;
}
}"
,
@"using System;
class C
{
void M(object o)
{
var v = o?.B;
}
}"
);
}
[
Fact
,
Trait
(
Traits
.
Feature
,
Traits
.
Features
.
CodeActionsUseNullPropagation
)]
public
async
Task
TestMissingOnSimpleMatch
()
{
await
TestMissingAsync
(
@"
using System;
class C
{
void M(object o)
{
var v = [||]o == null ? null : o;
}
}"
);
}
[
Fact
,
Trait
(
Traits
.
Feature
,
Traits
.
Features
.
CodeActionsUseNullPropagation
)]
public
async
Task
TestParenthesizedCondition
()
{
await
TestAsync
(
@"
using System;
class C
{
void M(object o)
{
var v = [||](o == null) ? null : o.ToString();
}
}"
,
@"using System;
class C
{
void M(object o)
{
var v = o?.ToString();
}
}"
);
}
[
Fact
,
Trait
(
Traits
.
Feature
,
Traits
.
Features
.
CodeActionsUseNullPropagation
)]
public
async
Task
TestFixAll1
()
{
await
TestAsync
(
@"
using System;
class C
{
void M(object o)
{
var v1 = {|FixAllInDocument:o|} == null ? null : o.ToString();
var v2 = o != null ? o.ToString() : null;
}
}"
,
@"using System;
class C
{
void M(object o)
{
var v1 = o?.ToString();
var v2 = o?.ToString();
}
}"
);
}
[
Fact
,
Trait
(
Traits
.
Feature
,
Traits
.
Features
.
CodeActionsUseNullPropagation
)]
public
async
Task
TestFixAll2
()
{
await
TestAsync
(
@"
using System;
class C
{
void M(object o1, object o2)
{
var v1 = {|FixAllInDocument:o1|} == null ? null : o1.ToString(o2 == null ? null : o2.ToString());
}
}"
,
@"using System;
class C
{
void M(object o1, object o2)
{
var v1 = o1?.ToString(o2?.ToString());
}
}"
);
}
}
}
\ No newline at end of file
src/EditorFeatures/TestUtilities/Traits.cs
浏览文件 @
a89d6030
...
@@ -89,6 +89,7 @@ public static class Features
...
@@ -89,6 +89,7 @@ public static class Features
public
const
string
CodeActionsUseImplicitType
=
"CodeActions.UseImplicitType"
;
public
const
string
CodeActionsUseImplicitType
=
"CodeActions.UseImplicitType"
;
public
const
string
CodeActionsUseExplicitType
=
"CodeActions.UseExplicitType"
;
public
const
string
CodeActionsUseExplicitType
=
"CodeActions.UseExplicitType"
;
public
const
string
CodeActionsUseFrameworkType
=
"CodeActions.UseFrameworkType"
;
public
const
string
CodeActionsUseFrameworkType
=
"CodeActions.UseFrameworkType"
;
public
const
string
CodeActionsUseNullPropagation
=
"CodeActions.UseNullPropagation"
;
public
const
string
CodeActionsUseObjectInitializer
=
"CodeActions.UseObjectInitializer"
;
public
const
string
CodeActionsUseObjectInitializer
=
"CodeActions.UseObjectInitializer"
;
public
const
string
CodeActionsUseThrowExpression
=
"CodeActions.UseThrowExpression"
;
public
const
string
CodeActionsUseThrowExpression
=
"CodeActions.UseThrowExpression"
;
public
const
string
CodeGeneration
=
nameof
(
CodeGeneration
);
public
const
string
CodeGeneration
=
nameof
(
CodeGeneration
);
...
...
src/Features/Core/Portable/UseNullPropagation/AbstractUseNullPropagationCodeFixProvider.cs
浏览文件 @
a89d6030
...
@@ -70,7 +70,7 @@ public override Task RegisterCodeFixesAsync(CodeFixContext context)
...
@@ -70,7 +70,7 @@ public override Task RegisterCodeFixesAsync(CodeFixContext context)
foreach
(
var
diagnostic
in
diagnostics
)
foreach
(
var
diagnostic
in
diagnostics
)
{
{
var
conditionalExpression
=
root
.
FindNode
(
diagnostic
.
AdditionalLocations
[
0
].
SourceSpan
);
var
conditionalExpression
=
root
.
FindNode
(
diagnostic
.
AdditionalLocations
[
0
].
SourceSpan
,
getInnermostNodeForTie
:
true
);
var
conditionalPart
=
root
.
FindNode
(
diagnostic
.
AdditionalLocations
[
1
].
SourceSpan
);
var
conditionalPart
=
root
.
FindNode
(
diagnostic
.
AdditionalLocations
[
1
].
SourceSpan
);
var
whenPart
=
root
.
FindNode
(
diagnostic
.
AdditionalLocations
[
2
].
SourceSpan
);
var
whenPart
=
root
.
FindNode
(
diagnostic
.
AdditionalLocations
[
2
].
SourceSpan
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录