Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
6608853f
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,发现更多精彩内容 >>
提交
6608853f
编写于
3月 22, 2020
作者:
J
jnm2
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Do not remove .ToString() from base
上级
70ddf3d9
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
127 addition
and
7 deletion
+127
-7
src/EditorFeatures/CSharpTest/SimplifyInterpolation/SimplifyInterpolationTests.cs
...pTest/SimplifyInterpolation/SimplifyInterpolationTests.cs
+49
-0
src/EditorFeatures/VisualBasicTest/SimplifyInterpolation/SimplifyInterpolationTests.vb
...cTest/SimplifyInterpolation/SimplifyInterpolationTests.vb
+53
-0
src/Features/CSharp/Portable/SimplifyInterpolation/CSharpSimplifyInterpolationDiagnosticAnalyzer.cs
...polation/CSharpSimplifyInterpolationDiagnosticAnalyzer.cs
+5
-0
src/Features/Core/Portable/SimplifyInterpolation/AbstractSimplifyInterpolationCodeFixProvider.cs
...rpolation/AbstractSimplifyInterpolationCodeFixProvider.cs
+3
-1
src/Features/Core/Portable/SimplifyInterpolation/AbstractSimplifyInterpolationDiagnosticAnalyzer.cs
...lation/AbstractSimplifyInterpolationDiagnosticAnalyzer.cs
+5
-2
src/Features/Core/Portable/SimplifyInterpolation/Helpers.cs
src/Features/Core/Portable/SimplifyInterpolation/Helpers.cs
+6
-4
src/Features/VisualBasic/Portable/SimplifyInterpolation/VisualBasicSimplifyInterpolationDiagnosticAnalyzer.vb
...ion/VisualBasicSimplifyInterpolationDiagnosticAnalyzer.vb
+6
-0
未找到文件。
src/EditorFeatures/CSharpTest/SimplifyInterpolation/SimplifyInterpolationTests.cs
浏览文件 @
6608853f
...
...
@@ -750,6 +750,55 @@ public static void PrintRightAligned ( String[] strings )
Console.WriteLine ($""{i}.{str[||].PadRight(maxLength, ' ')}"");
}
}
}"
);
}
[
Fact
,
WorkItem
(
42669
,
"https://github.com/dotnet/roslyn/issues/42669"
)]
public
async
Task
MissingOnBaseToString
()
{
await
TestMissingAsync
(
@"class C
{
public override string ToString() => $""Test: {base[||].ToString()}"";
}"
);
}
[
Fact
,
WorkItem
(
42669
,
"https://github.com/dotnet/roslyn/issues/42669"
)]
public
async
Task
MissingOnBaseToStringEvenWhenNotOverridden
()
{
await
TestMissingAsync
(
@"class C
{
string M() => $""Test: {base[||].ToString()}"";
}"
);
}
[
Fact
,
WorkItem
(
42669
,
"https://github.com/dotnet/roslyn/issues/42669"
)]
public
async
Task
MissingOnBaseToStringWithArgument
()
{
await
TestMissingAsync
(
@"class Base
{
public string ToString(string format) => format;
}
class Derived : Base
{
public override string ToString() => $""Test: {base[||].ToString(""a"")}"";
}"
);
}
[
Fact
,
WorkItem
(
42669
,
"https://github.com/dotnet/roslyn/issues/42669"
)]
public
async
Task
PadLeftSimplificationIsStillOfferedOnBaseToString
()
{
await
TestInRegularAndScriptAsync
(
@"class C
{
public override string ToString() => $""Test: {base.ToString()[||].PadLeft(10)}"";
}"
,
@"class C
{
public override string ToString() => $""Test: {base.ToString(),10}"";
}"
);
}
}
...
...
src/EditorFeatures/VisualBasicTest/SimplifyInterpolation/SimplifyInterpolationTests.vb
浏览文件 @
6608853f
...
...
@@ -510,6 +510,59 @@ Class C
Sub M(someValue As String)
Dim v = $
""
prefix {[||]PadLeft(3)} suffix
""
End Sub
End Class"
)
End
Function
<
Fact
,
WorkItem
(
42669
,
"https://github.com/dotnet/roslyn/issues/42669"
)
>
Public
Async
Function
MissingOnBaseToString
()
As
Task
Await
TestMissingAsync
(
"Class C
Public Overrides Function ToString() As String
Return $
""
Test: {MyBase[||].ToString()}
""
End Function
End Class"
)
End
Function
<
Fact
,
WorkItem
(
42669
,
"https://github.com/dotnet/roslyn/issues/42669"
)
>
Public
Async
Function
MissingOnBaseToStringEvenWhenNotOverridden
()
As
Task
Await
TestMissingAsync
(
"Class C
Function M() As String
Return $
""
Test: {MyBase[||].ToString()}
""
End Function
End Class"
)
End
Function
<
Fact
,
WorkItem
(
42669
,
"https://github.com/dotnet/roslyn/issues/42669"
)
>
Public
Async
Function
MissingOnBaseToStringWithArgument
()
As
Task
Await
TestMissingAsync
(
"Class Base
Public Function ToString(format As String) As String
Return format
End Function
End Class
Class Derived
Inherits Base
Public Overrides Function ToString() As String
Return $
""
Test: {MyBase[||].ToString(
""
a
""
)}
""
End Function
End Class"
)
End
Function
<
Fact
,
WorkItem
(
42669
,
"https://github.com/dotnet/roslyn/issues/42669"
)
>
Public
Async
Function
PadLeftSimplificationIsStillOfferedOnBaseToString
()
As
Task
Await
TestInRegularAndScriptAsync
(
"Class C
Public Overrides Function ToString() As String
Return $
""
Test: {MyBase.ToString()[||].PadLeft(10)}
""
End Function
End Class"
,
"Class C
Public Overrides Function ToString() As String
Return $
""
Test: {MyBase.ToString(),10}
""
End Function
End Class"
)
End
Function
End
Class
...
...
src/Features/CSharp/Portable/SimplifyInterpolation/CSharpSimplifyInterpolationDiagnosticAnalyzer.cs
浏览文件 @
6608853f
...
...
@@ -3,9 +3,11 @@
// See the LICENSE file in the project root for more information.
using
Microsoft.CodeAnalysis.CSharp.EmbeddedLanguages.VirtualChars
;
using
Microsoft.CodeAnalysis.CSharp.LanguageServices
;
using
Microsoft.CodeAnalysis.CSharp.Syntax
;
using
Microsoft.CodeAnalysis.Diagnostics
;
using
Microsoft.CodeAnalysis.EmbeddedLanguages.VirtualChars
;
using
Microsoft.CodeAnalysis.LanguageServices
;
using
Microsoft.CodeAnalysis.SimplifyInterpolation
;
namespace
Microsoft.CodeAnalysis.CSharp.SimplifyInterpolation
...
...
@@ -16,5 +18,8 @@ internal class CSharpSimplifyInterpolationDiagnosticAnalyzer : AbstractSimplifyI
{
protected
override
IVirtualCharService
GetVirtualCharService
()
=>
CSharpVirtualCharService
.
Instance
;
protected
override
ISyntaxFacts
GetSyntaxFacts
()
=>
CSharpSyntaxFacts
.
Instance
;
}
}
src/Features/Core/Portable/SimplifyInterpolation/AbstractSimplifyInterpolationCodeFixProvider.cs
浏览文件 @
6608853f
...
...
@@ -14,6 +14,7 @@
using
Microsoft.CodeAnalysis.Diagnostics
;
using
Microsoft.CodeAnalysis.Editing
;
using
Microsoft.CodeAnalysis.EmbeddedLanguages.VirtualChars
;
using
Microsoft.CodeAnalysis.LanguageServices
;
using
Microsoft.CodeAnalysis.Operations
;
using
Microsoft.CodeAnalysis.Shared.Extensions
;
...
...
@@ -63,7 +64,8 @@ public override Task RegisterCodeFixesAsync(CodeFixContext context)
interpolationSyntax
.
Parent
is
TInterpolatedStringExpressionSyntax
interpolatedString
)
{
Helpers
.
UnwrapInterpolation
<
TInterpolationSyntax
,
TExpressionSyntax
>(
document
.
GetRequiredLanguageService
<
IVirtualCharService
>(),
interpolation
,
out
var
unwrapped
,
document
.
GetRequiredLanguageService
<
IVirtualCharService
>(),
document
.
GetRequiredLanguageService
<
ISyntaxFactsService
>(),
interpolation
,
out
var
unwrapped
,
out
var
alignment
,
out
var
negate
,
out
var
formatString
,
out
_
);
if
(
unwrapped
==
null
)
...
...
src/Features/Core/Portable/SimplifyInterpolation/AbstractSimplifyInterpolationDiagnosticAnalyzer.cs
浏览文件 @
6608853f
...
...
@@ -7,6 +7,7 @@
using
Microsoft.CodeAnalysis.CodeStyle
;
using
Microsoft.CodeAnalysis.Diagnostics
;
using
Microsoft.CodeAnalysis.EmbeddedLanguages.VirtualChars
;
using
Microsoft.CodeAnalysis.LanguageServices
;
using
Microsoft.CodeAnalysis.Operations
;
namespace
Microsoft.CodeAnalysis.SimplifyInterpolation
...
...
@@ -27,6 +28,8 @@ protected AbstractSimplifyInterpolationDiagnosticAnalyzer()
protected
abstract
IVirtualCharService
GetVirtualCharService
();
protected
abstract
ISyntaxFacts
GetSyntaxFacts
();
public
override
DiagnosticAnalyzerCategory
GetAnalyzerCategory
()
=>
DiagnosticAnalyzerCategory
.
SemanticSpanAnalysis
;
...
...
@@ -56,8 +59,8 @@ private void AnalyzeInterpolation(OperationAnalysisContext context)
}
Helpers
.
UnwrapInterpolation
<
TInterpolationSyntax
,
TExpressionSyntax
>(
GetVirtualCharService
(),
interpolation
,
out
_
,
out
var
alignment
,
out
_
,
out
var
formatString
,
out
var
unnecessaryLocations
);
GetVirtualCharService
(),
GetSyntaxFacts
(),
interpolation
,
out
_
,
out
var
alignment
,
out
_
,
out
var
formatString
,
out
var
unnecessaryLocations
);
if
(
alignment
==
null
&&
formatString
==
null
)
{
...
...
src/Features/Core/Portable/SimplifyInterpolation/Helpers.cs
浏览文件 @
6608853f
...
...
@@ -8,6 +8,7 @@
using
System.Collections.Immutable
;
using
System.Linq
;
using
Microsoft.CodeAnalysis.EmbeddedLanguages.VirtualChars
;
using
Microsoft.CodeAnalysis.LanguageServices
;
using
Microsoft.CodeAnalysis.Operations
;
using
Microsoft.CodeAnalysis.Shared.Extensions
;
using
Microsoft.CodeAnalysis.Text
;
...
...
@@ -18,7 +19,7 @@ namespace Microsoft.CodeAnalysis.SimplifyInterpolation
internal
static
class
Helpers
{
public
static
void
UnwrapInterpolation
<
TInterpolationSyntax
,
TExpressionSyntax
>(
IVirtualCharService
virtualCharService
,
IInterpolationOperation
interpolation
,
IVirtualCharService
virtualCharService
,
I
SyntaxFacts
syntaxFacts
,
I
InterpolationOperation
interpolation
,
out
TExpressionSyntax
?
unwrapped
,
out
TExpressionSyntax
?
alignment
,
out
bool
negate
,
out
string
?
formatString
,
out
ImmutableArray
<
Location
>
unnecessaryLocations
)
where
TInterpolationSyntax
:
SyntaxNode
...
...
@@ -38,7 +39,7 @@ internal static class Helpers
if
(
interpolation
.
FormatString
==
null
)
{
UnwrapFormatString
(
virtualCharService
,
expression
,
out
expression
,
out
formatString
,
unnecessarySpans
);
UnwrapFormatString
(
virtualCharService
,
syntaxFacts
,
expression
,
out
expression
,
out
formatString
,
unnecessarySpans
);
}
unwrapped
=
expression
.
Syntax
as
TExpressionSyntax
;
...
...
@@ -67,11 +68,12 @@ private static IOperation Unwrap(IOperation expression)
}
private
static
void
UnwrapFormatString
(
IVirtualCharService
virtualCharService
,
IOperation
expression
,
out
IOperation
unwrapped
,
IVirtualCharService
virtualCharService
,
I
SyntaxFacts
syntaxFacts
,
I
Operation
expression
,
out
IOperation
unwrapped
,
out
string
?
formatString
,
List
<
TextSpan
>
unnecessarySpans
)
{
if
(
expression
is
IInvocationOperation
{
TargetMethod
:
{
Name
:
nameof
(
ToString
)
}
}
invocation
&&
HasNonImplicitInstance
(
invocation
))
HasNonImplicitInstance
(
invocation
)
&&
!
syntaxFacts
.
IsBaseExpression
(
invocation
.
Instance
.
Syntax
))
{
if
(
invocation
.
Arguments
.
Length
==
1
&&
invocation
.
Arguments
[
0
].
Value
is
ILiteralOperation
{
ConstantValue
:
{
HasValue
:
true
,
Value
:
string
value
}
}
literal
)
...
...
src/Features/VisualBasic/Portable/SimplifyInterpolation/VisualBasicSimplifyInterpolationDiagnosticAnalyzer.vb
浏览文件 @
6608853f
...
...
@@ -4,8 +4,10 @@
Imports
Microsoft.CodeAnalysis.Diagnostics
Imports
Microsoft.CodeAnalysis.EmbeddedLanguages.VirtualChars
Imports
Microsoft.CodeAnalysis.LanguageServices
Imports
Microsoft.CodeAnalysis.SimplifyInterpolation
Imports
Microsoft.CodeAnalysis.VisualBasic.EmbeddedLanguages.VirtualChars
Imports
Microsoft.CodeAnalysis.VisualBasic.LanguageServices
Imports
Microsoft.CodeAnalysis.VisualBasic.Syntax
Namespace
Microsoft.CodeAnalysis.VisualBasic.SimplifyInterpolation
...
...
@@ -16,5 +18,9 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.SimplifyInterpolation
Protected
Overrides
Function
GetVirtualCharService
()
As
IVirtualCharService
Return
VisualBasicVirtualCharService
.
Instance
End
Function
Protected
Overrides
Function
GetSyntaxFacts
()
As
ISyntaxFacts
Return
VisualBasicSyntaxFacts
.
Instance
End
Function
End
Class
End
Namespace
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录