Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
aff67a0a
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,体验更适合开发者的 AI 搜索 >>
未验证
提交
aff67a0a
编写于
12月 08, 2020
作者:
A
AlekseyTs
提交者:
GitHub
12月 08, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Strengthen NullableAnnotationExtensions.ToPublicAnnotation helper against null input. (#49849)
Fixes #49754.
上级
1e97fb9f
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
43 addition
and
2 deletion
+43
-2
src/Compilers/CSharp/Portable/Symbols/NullableAnnotationExtensions.cs
...s/CSharp/Portable/Symbols/NullableAnnotationExtensions.cs
+6
-2
src/Compilers/CSharp/Test/Semantic/Semantics/NullableReferenceTypesTests.cs
...rp/Test/Semantic/Semantics/NullableReferenceTypesTests.cs
+37
-0
未找到文件。
src/Compilers/CSharp/Portable/Symbols/NullableAnnotationExtensions.cs
浏览文件 @
aff67a0a
...
...
@@ -124,7 +124,9 @@ internal static ImmutableArray<ITypeSymbol> GetPublicSymbols(this ImmutableArray
internal
static
ImmutableArray
<
CodeAnalysis
.
NullableAnnotation
>
ToPublicAnnotations
(
this
ImmutableArray
<
TypeWithAnnotations
>
types
)
=>
types
.
SelectAsArray
(
t
=>
t
.
ToPublicAnnotation
());
internal
static
CodeAnalysis
.
NullableAnnotation
ToPublicAnnotation
(
TypeSymbol
type
,
NullableAnnotation
annotation
)
#
nullable
enable
internal
static
CodeAnalysis
.
NullableAnnotation
ToPublicAnnotation
(
TypeSymbol
?
type
,
NullableAnnotation
annotation
)
{
Debug
.
Assert
(
annotation
!=
NullableAnnotation
.
Ignored
);
return
annotation
switch
...
...
@@ -135,7 +137,7 @@ internal static CodeAnalysis.NullableAnnotation ToPublicAnnotation(TypeSymbol ty
// A value type may be oblivious or not annotated depending on whether the type reference
// is from source or metadata. (Binding using the #nullable context only when setting the annotation
// to avoid checking IsValueType early.) The annotation is normalized here in the public API.
NullableAnnotation
.
Oblivious
when
type
.
IsValueTyp
e
=>
CodeAnalysis
.
NullableAnnotation
.
NotAnnotated
,
NullableAnnotation
.
Oblivious
when
type
?.
IsValueType
==
tru
e
=>
CodeAnalysis
.
NullableAnnotation
.
NotAnnotated
,
NullableAnnotation
.
Oblivious
=>
CodeAnalysis
.
NullableAnnotation
.
None
,
NullableAnnotation
.
Ignored
=>
CodeAnalysis
.
NullableAnnotation
.
None
,
...
...
@@ -144,6 +146,8 @@ internal static CodeAnalysis.NullableAnnotation ToPublicAnnotation(TypeSymbol ty
};
}
#
nullable
disable
internal
static
CSharp
.
NullableAnnotation
ToInternalAnnotation
(
this
CodeAnalysis
.
NullableAnnotation
annotation
)
=>
annotation
switch
{
...
...
src/Compilers/CSharp/Test/Semantic/Semantics/NullableReferenceTypesTests.cs
浏览文件 @
aff67a0a
...
...
@@ -142278,6 +142278,43 @@ static void F(object x, object? y)
Diagnostic(ErrorCode.WRN_NullReferenceArgument, "y").WithArguments("y", "object A.this[object? x, object y]").WithLocation(7, 22));
}
[Fact]
[WorkItem(49754, "https://github.com/dotnet/roslyn/issues/49754")]
public void Issue49754()
{
var source0 =
@"
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
#nullable enable
namespace Repro
{
public class Test
{
public void Test(IEnumerable<(int test, int score)> scores)
{
scores.Select(s => (s.test, s.score switch
{
}));
}
}
}"
;
var comp = CreateCompilation(source0);
comp.VerifyEmitDiagnostics(
// (12,15): error CS0542: 'Test': member names cannot be the same as their enclosing type
// public void Test(IEnumerable<(int test, int score)> scores)
Diagnostic(ErrorCode.ERR_MemberNameSameAsType, "Test").WithArguments("Test").WithLocation(12, 15),
// (14,11): error CS0411: The type arguments for method 'Enumerable.Select<TSource, TResult>(IEnumerable<TSource>, Func<TSource, TResult>)' cannot be inferred from the usage. Try specifying the type arguments explicitly.
// scores.Select(s => (s.test, s.score switch
Diagnostic(ErrorCode.ERR_CantInferMethTypeArgs, "Select").WithArguments("System.Linq.Enumerable.Select<TSource, TResult>(System.Collections.Generic.IEnumerable<TSource>, System.Func<TSource, TResult>)").WithLocation(14, 11)
);
}
[Fact]
[WorkItem(48992, "https://github.com/dotnet/roslyn/issues/48992")]
public void TryGetValue_GenericMethod()
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录