Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
4e9418af
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,发现更多精彩内容 >>
提交
4e9418af
编写于
1月 30, 2017
作者:
N
Neal Gafter
提交者:
GitHub
1月 30, 2017
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add a test for duplicate expresion variable declaration in a switch block. (#16800)
Fixes #14202
上级
0a387174
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
45 addition
and
0 deletion
+45
-0
src/Compilers/CSharp/Test/Semantic/Semantics/OutVarTests.cs
src/Compilers/CSharp/Test/Semantic/Semantics/OutVarTests.cs
+45
-0
未找到文件。
src/Compilers/CSharp/Test/Semantic/Semantics/OutVarTests.cs
浏览文件 @
4e9418af
...
...
@@ -28852,6 +28852,51 @@ static void M(string x)
Assert.Equal("System.String x", model.GetSymbolInfo(x).Symbol.ToTestDisplayString());
}
[Fact]
public void DuplicateDeclarationInSwitchBlock()
{
var text = @"
public class C
{
public static void Main(string[] args)
{
switch (args.Length)
{
case 0:
M(M(out var x1), x1);
M(M(out int x1), x1);
break;
case 1:
M(M(out int x1), x1);
break;
}
}
static int M(out int z) => z = 1;
static int M(int a, int b) => a+b;
}";
var comp = CreateCompilationWithMscorlib45(text);
comp.VerifyDiagnostics(
// (10,29): error CS0128: A local variable or function named 'x1' is already defined in this scope
// M(M(out int x1), x1);
Diagnostic(ErrorCode.ERR_LocalDuplicate, "x1").WithArguments("x1").WithLocation(10, 29),
// (13,29): error CS0128: A local variable or function named 'x1' is already defined in this scope
// M(M(out int x1), x1);
Diagnostic(ErrorCode.ERR_LocalDuplicate, "x1").WithArguments("x1").WithLocation(13, 29),
// (13,34): error CS0165: Use of unassigned local variable 'x1'
// M(M(out int x1), x1);
Diagnostic(ErrorCode.ERR_UseDefViolation, "x1").WithArguments("x1").WithLocation(13, 34)
);
var tree = comp.SyntaxTrees[0];
var model = comp.GetSemanticModel(tree);
var x6Decl = GetOutVarDeclarations(tree, "x1").ToArray();
var x6Ref = GetReferences(tree, "x1").ToArray();
Assert.Equal(3, x6Decl.Length);
Assert.Equal(3, x6Ref.Length);
VerifyModelForOutVar(model, x6Decl[0], x6Ref);
VerifyModelForOutVarDuplicateInSameScope(model, x6Decl[1]);
VerifyModelForOutVarDuplicateInSameScope(model, x6Decl[2]);
}
[Fact]
public void DeclarationInLocalFunctionParameterDefault()
{
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录