Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
867dcd26
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,发现更多精彩内容 >>
提交
867dcd26
编写于
4月 26, 2020
作者:
A
Alireza Habibi
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix tests
上级
62f79f31
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
24 addition
and
9 deletion
+24
-9
src/EditorFeatures/CSharpTest/UsePatternCombinators/CSharpUsePatternCombinatorsDiagnosticAnalyzerTests.cs
...ors/CSharpUsePatternCombinatorsDiagnosticAnalyzerTests.cs
+21
-8
src/Features/CSharp/Portable/UsePatternCombinators/CSharpUsePatternCombinatorsDiagnosticAnalyzer.cs
...binators/CSharpUsePatternCombinatorsDiagnosticAnalyzer.cs
+3
-1
未找到文件。
src/EditorFeatures/CSharpTest/UsePatternCombinators/CSharpUsePatternCombinatorsDiagnosticAnalyzerTests.cs
浏览文件 @
867dcd26
...
...
@@ -4,6 +4,7 @@
using
System.Threading.Tasks
;
using
Microsoft.CodeAnalysis.CodeFixes
;
using
Microsoft.CodeAnalysis.CSharp.Test.Utilities
;
using
Microsoft.CodeAnalysis.CSharp.UsePatternCombinators
;
using
Microsoft.CodeAnalysis.Diagnostics
;
using
Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Diagnostics
;
...
...
@@ -14,9 +15,17 @@ namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.UsePatternCombinators
{
public
class
CSharpUsePatternCombinatorsDiagnosticAnalyzerTests
:
AbstractCSharpDiagnosticProviderBasedUserDiagnosticTest
{
private
static
readonly
ParseOptions
CSharp9
=
TestOptions
.
RegularPreview
;
internal
override
(
DiagnosticAnalyzer
,
CodeFixProvider
)
CreateDiagnosticProviderAndFixer
(
Workspace
workspace
)
=>
(
new
CSharpUsePatternCombinatorsDiagnosticAnalyzer
(),
new
CSharpUsePatternCombinatorsCodeFixProvider
());
private
Task
TestMissingInCSharp9Async
(
string
initialMarkup
)
=>
TestMissingAsync
(
initialMarkup
,
new
TestParameters
(
CSharp9
));
private
Task
TestInCSharp9Async
(
string
initialMarkup
,
string
expectedMarkup
)
=>
TestInRegularAndScriptAsync
(
initialMarkup
,
expectedMarkup
,
parseOptions
:
CSharp9
);
private
static
readonly
string
s_initialMarkup
=
@"
using System;
using System.Collections.Generic;
...
...
@@ -35,31 +44,35 @@ class C
void Assignment() { _ = EXPRESSION; }
void Do() { do ; while (EXPRESSION); }
void While() { while (EXPRESSION) ; }
void When() { _ = o switch { _ when EXPRESSION => 0 }; }
bool When() => o switch { _ when EXPRESSION => EXPRESSION };
bool Return() { return EXPRESSION; }
IEnumerable<bool> YieldReturn() { yield return EXPRESSION; }
Func<object, bool> SimpleLambda() => o => EXPRESSION;
Func<bool> ParenthesizedLambda() => () => EXPRESSION;
int i;
object o;
}
"
;
[
InlineData
(
"i == 0"
)]
[
InlineData
(
"i > 0"
)]
[
InlineData
(
"i is C"
)]
[
InlineData
(
"i is C c"
)]
[
InlineData
(
"!(i > 0)"
)]
[
InlineData
(
"o is C"
)]
[
InlineData
(
"o is C c"
)]
[
InlineData
(
"o != null"
)]
[
InlineData
(
"!(o is C c)"
)]
[
InlineData
(
"!(o is null)"
)]
[
InlineData
(
"o is int ii || o is long jj"
)]
[
Theory
,
Trait
(
Traits
.
Feature
,
Traits
.
Features
.
CodeActionsUsePatternCombinators
)]
public
async
Task
TestMissingOnExpression
(
string
expression
)
{
await
TestMissingAsync
(
s_initialMarkup
.
Replace
(
"EXPRESSION"
,
expression
));
await
TestMissing
InCSharp9
Async
(
s_initialMarkup
.
Replace
(
"EXPRESSION"
,
expression
));
}
[
InlineData
(
"o is int ii && o is long jj"
,
"o is int ii and long jj"
)]
[
InlineData
(
"!(o is C)"
,
"o is not C"
)]
[
InlineData
(
"!(o is C _)"
,
"o is not C _"
)]
[
InlineData
(
"i == 1 || 2 == i"
,
"i is 1 or 2"
)]
[
InlineData
(
"i != 1 || 2 != i"
,
"i is not
1 or not 2
"
)]
[
InlineData
(
"i != 1 || 2 != i"
,
"i is not
(1 and 2)
"
)]
[
InlineData
(
"i != 1 && 2 != i"
,
"i is not (1 or 2)"
)]
[
InlineData
(
"!(i != 1 && 2 != i)"
,
"i is 1 or 2"
)]
[
InlineData
(
"i < 1 && 2 <= i"
,
"i is < 1 and >= 2"
)]
...
...
@@ -68,7 +81,7 @@ public async Task TestMissingOnExpression(string expression)
[
Theory
,
Trait
(
Traits
.
Feature
,
Traits
.
Features
.
CodeActionsUsePatternCombinators
)]
public
async
Task
TestOnExpression
(
string
expression
,
string
expected
)
{
await
TestIn
RegularAndScript
Async
(
await
TestIn
CSharp9
Async
(
s_initialMarkup
.
Replace
(
"EXPRESSION"
,
expression
),
s_initialMarkup
.
Replace
(
"EXPRESSION"
,
expected
));
}
...
...
@@ -76,7 +89,7 @@ public async Task TestOnExpression(string expression, string expected)
[
Fact
,
Trait
(
Traits
.
Feature
,
Traits
.
Features
.
CodeActionsUsePatternCombinators
)]
public
async
Task
TestMultiline
()
{
await
TestIn
RegularAndScript1
Async
(
await
TestIn
CSharp9
Async
(
@"class C
{
bool M0(int variable)
...
...
src/Features/CSharp/Portable/UsePatternCombinators/CSharpUsePatternCombinatorsDiagnosticAnalyzer.cs
浏览文件 @
867dcd26
...
...
@@ -6,6 +6,7 @@
using
System.Linq
;
using
Microsoft.CodeAnalysis.CodeStyle
;
using
Microsoft.CodeAnalysis.CSharp.Extensions
;
using
Microsoft.CodeAnalysis.CSharp.Shared.Extensions
;
using
Microsoft.CodeAnalysis.CSharp.Syntax
;
using
Microsoft.CodeAnalysis.Diagnostics
;
...
...
@@ -58,7 +59,7 @@ protected override void InitializeWorker(AnalysisContext context)
ArrowExpressionClauseSyntax
n
=>
n
.
Expression
,
AssignmentExpressionSyntax
n
=>
n
.
Right
,
LambdaExpressionSyntax
n
=>
n
.
ExpressionBody
,
ArgumentSyntax
n
when
n
.
RefKindKeyword
.
IsMissing
=>
n
.
Expression
,
ArgumentSyntax
n
when
n
.
GetRefKind
()
==
RefKind
.
None
=>
n
.
Expression
,
_
=>
null
,
};
...
...
@@ -123,6 +124,7 @@ private static bool IsTrivial(AnalyzedPattern pattern)
=>
pattern
switch
{
Not
{
Pattern
:
Constant
_
}
=>
true
,
Not
{
Pattern
:
Source
{
PatternSyntax
:
ConstantPatternSyntax
_
}
}
=>
true
,
Not
_
=>
false
,
Binary
_
=>
false
,
_
=>
true
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录