Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
5e66b24b
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,发现更多精彩内容 >>
提交
5e66b24b
编写于
1月 05, 2018
作者:
M
Manish Vasani
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Handle nameof expressions in UnboundIdentifiersDiagnosticAnalyzerBase
Fixes #23667
上级
adbce761
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
47 addition
and
7 deletion
+47
-7
src/EditorFeatures/CSharpTest/AddUsing/AddUsingTestsWithAddImportDiagnosticProvider.cs
.../AddUsing/AddUsingTestsWithAddImportDiagnosticProvider.cs
+16
-0
src/EditorFeatures/TestUtilities/Diagnostics/AbstractUserDiagnosticTest.cs
...s/TestUtilities/Diagnostics/AbstractUserDiagnosticTest.cs
+1
-7
src/EditorFeatures/VisualBasicTest/Diagnostics/AddImport/AddImportTests.vb
...s/VisualBasicTest/Diagnostics/AddImport/AddImportTests.vb
+16
-0
src/Features/CSharp/Portable/Diagnostics/Analyzers/CSharpUnboundIdentifiersDiagnosticAnalyzer.cs
...s/Analyzers/CSharpUnboundIdentifiersDiagnosticAnalyzer.cs
+3
-0
src/Features/Core/Portable/Diagnostics/Analyzers/UnboundIdentifiersDiagnosticAnalyzerBase.cs
...ics/Analyzers/UnboundIdentifiersDiagnosticAnalyzerBase.cs
+7
-0
src/Features/VisualBasic/Portable/Diagnostics/Analyzers/VisualBasicUnboundIdentifiersDiagnosticAnalyzer.vb
...lyzers/VisualBasicUnboundIdentifiersDiagnosticAnalyzer.vb
+4
-0
未找到文件。
src/EditorFeatures/CSharpTest/AddUsing/AddUsingTestsWithAddImportDiagnosticProvider.cs
浏览文件 @
5e66b24b
...
...
@@ -283,6 +283,22 @@ class Program
{
public async Task<IReadOnlyCollection<ProjectConfiguration>>
}
}"
);
}
[
WorkItem
(
23667
,
"https://github.com/dotnet/roslyn/issues/23667"
)]
[
Fact
,
Trait
(
Traits
.
Feature
,
Traits
.
Features
.
CodeActionsAddImport
)]
public
async
Task
TestMissingDiagnosticForNameOf
()
{
await
TestDiagnosticMissingAsync
(
@"using System;
class C
{
Action action = () => {
var x = [|nameof|](System);
#warning xxx
};
}"
);
}
}
...
...
src/EditorFeatures/TestUtilities/Diagnostics/AbstractUserDiagnosticTest.cs
浏览文件 @
5e66b24b
...
...
@@ -42,13 +42,7 @@ public abstract partial class AbstractUserDiagnosticTest : AbstractCodeActionOrU
protected
override
async
Task
<
ImmutableArray
<
Diagnostic
>>
GetDiagnosticsWorkerAsync
(
TestWorkspace
workspace
,
TestParameters
parameters
)
{
var
diagnosticsAndCodeFixes
=
await
GetDiagnosticAndFixAsync
(
workspace
,
parameters
);
if
(
diagnosticsAndCodeFixes
==
null
)
{
return
ImmutableArray
<
Diagnostic
>.
Empty
;
}
return
ImmutableArray
.
Create
(
diagnosticsAndCodeFixes
.
Item1
);
return
(
await
GetDiagnosticsAsync
(
workspace
,
parameters
)).
AsImmutable
();
}
internal
async
Task
<
Tuple
<
Diagnostic
,
CodeFixCollection
>>
GetDiagnosticAndFixAsync
(
...
...
src/EditorFeatures/VisualBasicTest/Diagnostics/AddImport/AddImportTests.vb
浏览文件 @
5e66b24b
...
...
@@ -2606,5 +2606,21 @@ Class C
Dim s As Action = Sub()
Dim a = New Test()"
)
End
Function
<
WorkItem
(
23667
,
"https://github.com/dotnet/roslyn/issues/23667"
)
>
<
Fact
,
Trait
(
Traits
.
Feature
,
Traits
.
Features
.
CodeActionsAddImport
)
>
Public
Async
Function
TestMissingDiagnosticForNameOf
()
As
Task
Await
TestDiagnosticMissingAsync
(
"Imports System
Class Class1
Sub M()
Dim a As Action = Sub()
Dim x = [|NameOf|](System)
Dim x2
End Function
End Sub
Extension"
)
End
Function
End
Class
End
Namespace
src/Features/CSharp/Portable/Diagnostics/Analyzers/CSharpUnboundIdentifiersDiagnosticAnalyzer.cs
浏览文件 @
5e66b24b
// 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.Collections.Immutable
;
using
Microsoft.CodeAnalysis.CSharp.Extensions
;
using
Microsoft.CodeAnalysis.CSharp.Syntax
;
using
Microsoft.CodeAnalysis.Diagnostics
;
using
Microsoft.CodeAnalysis.Diagnostics.AddImport
;
...
...
@@ -63,5 +64,7 @@ protected override bool ConstructorDoesNotExist(SyntaxNode node, SymbolInfo info
return
false
;
}
protected
override
bool
IsNameOf
(
SyntaxNode
node
)
=>
node
.
Parent
is
InvocationExpressionSyntax
invocation
&&
invocation
.
IsNameOfInvocation
();
}
}
src/Features/Core/Portable/Diagnostics/Analyzers/UnboundIdentifiersDiagnosticAnalyzerBase.cs
浏览文件 @
5e66b24b
...
...
@@ -18,6 +18,7 @@ internal abstract class UnboundIdentifiersDiagnosticAnalyzerBase<TLanguageKindEn
protected
abstract
DiagnosticDescriptor
DiagnosticDescriptor2
{
get
;
}
protected
abstract
ImmutableArray
<
TLanguageKindEnum
>
SyntaxKindsOfInterest
{
get
;
}
protected
abstract
bool
ConstructorDoesNotExist
(
SyntaxNode
node
,
SymbolInfo
info
,
SemanticModel
semanticModel
);
protected
abstract
bool
IsNameOf
(
SyntaxNode
node
);
public
override
ImmutableArray
<
DiagnosticDescriptor
>
SupportedDiagnostics
=>
ImmutableArray
.
Create
(
DiagnosticDescriptor
,
DiagnosticDescriptor2
);
public
bool
OpenFileOnly
(
Workspace
workspace
)
=>
false
;
...
...
@@ -73,6 +74,12 @@ private void ReportUnboundIdentifierNames(SyntaxNodeAnalysisContext context, Syn
var
info
=
context
.
SemanticModel
.
GetSymbolInfo
(
typeName
);
if
(
info
.
Symbol
==
null
&&
info
.
CandidateSymbols
.
Length
==
0
)
{
// GetSymbolInfo returns no symbols for "nameof" expression, so handle it specially.
if
(
IsNameOf
(
typeName
))
{
continue
;
}
context
.
ReportDiagnostic
(
Diagnostic
.
Create
(
DiagnosticDescriptor
,
typeName
.
GetLocation
(),
typeName
.
ToString
()));
}
else
if
(
ConstructorDoesNotExist
(
typeName
,
info
,
context
.
SemanticModel
))
...
...
src/Features/VisualBasic/Portable/Diagnostics/Analyzers/VisualBasicUnboundIdentifiersDiagnosticAnalyzer.vb
浏览文件 @
5e66b24b
...
...
@@ -71,5 +71,9 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Diagnostics
Return
False
End
Function
Protected
Overrides
Function
IsNameOf
(
node
As
SyntaxNode
)
As
Boolean
Return
node
.
Kind
()
=
SyntaxKind
.
NameOfKeyword
End
Function
End
Class
End
Namespace
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录