Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
9bb1b37c
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,发现更多精彩内容 >>
未验证
提交
9bb1b37c
编写于
6月 08, 2019
作者:
J
Julien Couvreur
提交者:
GitHub
6月 08, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
MaybeNullWhen and NotNullWhen attribute affects callers (#36172)
上级
611578d7
变更
5
展开全部
显示空白变更内容
内联
并排
Showing
5 changed file
with
1936 addition
and
432 deletion
+1936
-432
docs/features/nullable-reference-types.md
docs/features/nullable-reference-types.md
+9
-7
src/Compilers/CSharp/Portable/BoundTree/UnboundLambda.cs
src/Compilers/CSharp/Portable/BoundTree/UnboundLambda.cs
+1
-1
src/Compilers/CSharp/Portable/FlowAnalysis/NullableWalker.cs
src/Compilers/CSharp/Portable/FlowAnalysis/NullableWalker.cs
+298
-315
src/Compilers/CSharp/Portable/Symbols/TypeWithState.cs
src/Compilers/CSharp/Portable/Symbols/TypeWithState.cs
+2
-0
src/Compilers/CSharp/Test/Semantic/Semantics/NullableReferenceTypesTests.cs
...rp/Test/Semantic/Semantics/NullableReferenceTypesTests.cs
+1626
-109
未找到文件。
docs/features/nullable-reference-types.md
浏览文件 @
9bb1b37c
...
...
@@ -103,9 +103,11 @@ A number of null checks affect the flow state when tested for:
-
`is`
operator:
`x is null`
,
`x is K`
(where
`K`
is a constant),
`x is string`
,
`x is string s`
Invocation of methods annotated with the following attributes will also affect flow analysis:
-
`[NotNullWhenTrue]`
(e.g.
`TryGetValue`
) and
`[NotNullWhenFalse]`
(e.g.
`string.IsNullOrEmpty`
)
-
`[EnsuresNotNull]`
(e.g.
`ThrowIfNull`
)
-
simple pre-conditions:
`[AllowNull]`
and
`[DisallowNull]`
-
simple post-conditions:
`[MaybeNull]`
and
`[NotNull]`
-
conditional post-conditions:
`[MaybeNullWhen(bool)]`
and
`[NotNullWhen(bool)]`
-
`[AssertsTrue]`
(e.g.
`Debug.Assert`
) and
`[AssertsFalse]`
See https://github.com/dotnet/csharplang/blob/master/meetings/2019/LDM-2019-05-15.md
## `default`
If
`T`
is a reference type,
`default(T)`
is
`T?`
.
...
...
src/Compilers/CSharp/Portable/BoundTree/UnboundLambda.cs
浏览文件 @
9bb1b37c
...
...
@@ -351,7 +351,7 @@ private BoundLambda SuppressIfNeeded(BoundLambda lambda)
public
bool
HasExplicitlyTypedParameterList
{
get
{
return
Data
.
HasExplicitlyTypedParameterList
;
}
}
public
int
ParameterCount
{
get
{
return
Data
.
ParameterCount
;
}
}
public
TypeWithAnnotations
InferReturnType
(
ConversionsBase
conversions
,
NamedTypeSymbol
delegateType
,
ref
HashSet
<
DiagnosticInfo
>
useSiteDiagnostics
)
=>
BindForReturnTypeInference
(
delegateType
).
GetInferredReturnType
(
conversions
,
_nullableState
,
ref
useSiteDiagnostics
);
=>
BindForReturnTypeInference
(
delegateType
).
GetInferredReturnType
(
conversions
,
_nullableState
?.
Clone
()
,
ref
useSiteDiagnostics
);
public
RefKind
RefKind
(
int
index
)
{
return
Data
.
RefKind
(
index
);
}
public
void
GenerateAnonymousFunctionConversionError
(
DiagnosticBag
diagnostics
,
TypeSymbol
targetType
)
{
Data
.
GenerateAnonymousFunctionConversionError
(
diagnostics
,
targetType
);
}
...
...
src/Compilers/CSharp/Portable/FlowAnalysis/NullableWalker.cs
浏览文件 @
9bb1b37c
此差异已折叠。
点击以展开。
src/Compilers/CSharp/Portable/Symbols/TypeWithState.cs
浏览文件 @
9bb1b37c
...
...
@@ -73,6 +73,8 @@ private TypeWithState(TypeSymbol type, NullableFlowState state)
public
TypeWithState
WithNotNullState
()
=>
new
TypeWithState
(
Type
,
NullableFlowState
.
NotNull
);
public
TypeWithState
WithSuppression
(
bool
suppress
)
=>
suppress
?
new
TypeWithState
(
Type
,
NullableFlowState
.
NotNull
)
:
this
;
public
TypeWithAnnotations
ToTypeWithAnnotations
()
{
NullableAnnotation
annotation
=
this
.
State
.
IsNotNull
()
||
Type
?.
CanContainNull
()
==
false
||
Type
?.
IsTypeParameterDisallowingAnnotation
()
==
true
...
...
src/Compilers/CSharp/Test/Semantic/Semantics/NullableReferenceTypesTests.cs
浏览文件 @
9bb1b37c
此差异已折叠。
点击以展开。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录