Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
eb816cc2
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,发现更多精彩内容 >>
提交
eb816cc2
编写于
8月 31, 2020
作者:
Y
Youssef Victor
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Enhance error message for multiple constructors
上级
e7bad77b
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
10 addition
and
9 deletion
+10
-9
src/Compilers/CSharp/Portable/Symbols/Source/SourceMemberContainerSymbol.cs
...rp/Portable/Symbols/Source/SourceMemberContainerSymbol.cs
+2
-1
src/Compilers/CSharp/Test/Semantic/Semantics/RecordTests.cs
src/Compilers/CSharp/Test/Semantic/Semantics/RecordTests.cs
+2
-2
src/Compilers/CSharp/Test/Symbol/Compilation/GetSemanticInfoTests.cs
...rs/CSharp/Test/Symbol/Compilation/GetSemanticInfoTests.cs
+4
-4
src/Compilers/CSharp/Test/Symbol/Symbols/Source/RecordTests.cs
...ompilers/CSharp/Test/Symbol/Symbols/Source/RecordTests.cs
+2
-2
未找到文件。
src/Compilers/CSharp/Portable/Symbols/Source/SourceMemberContainerSymbol.cs
浏览文件 @
eb816cc2
...
...
@@ -1727,7 +1727,8 @@ private void ReportMethodSignatureCollision(DiagnosticBag diagnostics, SourceMem
// Special case: if there are two destructors, use the destructor syntax instead of "Finalize"
var
methodName
=
(
method1
.
MethodKind
==
MethodKind
.
Destructor
&&
method2
.
MethodKind
==
MethodKind
.
Destructor
)
?
"~"
+
this
.
Name
:
method1
.
Name
;
(
method1
.
IsConstructor
()
?
this
.
Name
:
method1
.
Name
);
// Type '{1}' already defines a member called '{0}' with the same parameter types
diagnostics
.
Add
(
ErrorCode
.
ERR_MemberAlreadyExists
,
method1
.
Locations
[
0
],
methodName
,
this
);
}
...
...
src/Compilers/CSharp/Test/Semantic/Semantics/RecordTests.cs
浏览文件 @
eb816cc2
...
...
@@ -608,9 +608,9 @@ public static void Main()
}";
var comp = CreateCompilation(src);
comp.VerifyDiagnostics(
// (5,12): error CS0111: Type 'C' already defines a member called '
.ctor
' with the same parameter types
// (5,12): error CS0111: Type 'C' already defines a member called '
C
' with the same parameter types
// public C(int a, int b)
Diagnostic(ErrorCode.ERR_MemberAlreadyExists, "C").WithArguments("
.ctor
", "C").WithLocation(5, 12),
Diagnostic(ErrorCode.ERR_MemberAlreadyExists, "C").WithArguments("
C
", "C").WithLocation(5, 12),
// (5,12): error CS8862: A constructor declared in a record with parameters must have 'this' constructor initializer.
// public C(int a, int b)
Diagnostic(ErrorCode.ERR_UnexpectedOrMissingConstructorInitializerInRecord, "C").WithLocation(5, 12),
...
...
src/Compilers/CSharp/Test/Symbol/Compilation/GetSemanticInfoTests.cs
浏览文件 @
eb816cc2
...
...
@@ -5822,12 +5822,12 @@ partial class C
model1
.
GetDeclarationDiagnostics
().
Verify
();
model2
.
GetDeclarationDiagnostics
().
Verify
(
// (4,5): error CS0111: Type 'C' already defines a member called '
.ctor
' with the same parameter types
Diagnostic
(
ErrorCode
.
ERR_MemberAlreadyExists
,
"C"
).
WithArguments
(
"
.ctor
"
,
"C"
).
WithLocation
(
4
,
5
));
// (4,5): error CS0111: Type 'C' already defines a member called '
C
' with the same parameter types
Diagnostic
(
ErrorCode
.
ERR_MemberAlreadyExists
,
"C"
).
WithArguments
(
"
C
"
,
"C"
).
WithLocation
(
4
,
5
));
model3
.
GetDeclarationDiagnostics
().
Verify
(
// (4,5): error CS0111: Type 'C' already defines a member called '
.ctor
' with the same parameter types
Diagnostic
(
ErrorCode
.
ERR_MemberAlreadyExists
,
"C"
).
WithArguments
(
"
.ctor
"
,
"C"
).
WithLocation
(
4
,
5
));
// (4,5): error CS0111: Type 'C' already defines a member called '
C
' with the same parameter types
Diagnostic
(
ErrorCode
.
ERR_MemberAlreadyExists
,
"C"
).
WithArguments
(
"
C
"
,
"C"
).
WithLocation
(
4
,
5
));
Assert
.
Equal
(
3
,
comp
.
GlobalNamespace
.
GetMember
<
NamedTypeSymbol
>(
"C"
).
InstanceConstructors
.
Length
);
}
...
...
src/Compilers/CSharp/Test/Symbol/Symbols/Source/RecordTests.cs
浏览文件 @
eb816cc2
...
...
@@ -74,9 +74,9 @@ public C(int a, string b)
}
}"
);
comp
.
VerifyDiagnostics
(
// (4,12): error CS0111: Type 'C' already defines a member called '
.ctor
' with the same parameter types
// (4,12): error CS0111: Type 'C' already defines a member called '
C
' with the same parameter types
// public C(int a, string b)
Diagnostic
(
ErrorCode
.
ERR_MemberAlreadyExists
,
"C"
).
WithArguments
(
"
.ctor
"
,
"C"
).
WithLocation
(
4
,
12
),
Diagnostic
(
ErrorCode
.
ERR_MemberAlreadyExists
,
"C"
).
WithArguments
(
"
C
"
,
"C"
).
WithLocation
(
4
,
12
),
// (4,12): error CS8862: A constructor declared in a record with parameters must have 'this' constructor initializer.
// public C(int a, string b)
Diagnostic
(
ErrorCode
.
ERR_UnexpectedOrMissingConstructorInitializerInRecord
,
"C"
).
WithLocation
(
4
,
12
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录