Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
0a9d265c
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,发现更多精彩内容 >>
提交
0a9d265c
编写于
10月 08, 2015
作者:
V
vsadov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Added couple more regression tests for #5530
上级
7d7427e0
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
114 addition
and
0 deletion
+114
-0
src/Compilers/CSharp/Test/Emit/CodeGen/CodeGenTests.cs
src/Compilers/CSharp/Test/Emit/CodeGen/CodeGenTests.cs
+114
-0
未找到文件。
src/Compilers/CSharp/Test/Emit/CodeGen/CodeGenTests.cs
浏览文件 @
0a9d265c
...
...
@@ -14435,6 +14435,7 @@ .maxstack 2
}"
);
}
[
WorkItem
(
5530
,
"https://github.com/dotnet/roslyn/issues/5530"
)]
[
Fact
]
public
void
InplaceCtorUsesLocal
()
{
...
...
@@ -14495,6 +14496,7 @@ .maxstack 3
"
);
}
[
WorkItem
(
5530
,
"https://github.com/dotnet/roslyn/issues/5530"
)]
[
Fact
]
public
void
TernaryConsequenceUsesLocal
()
{
...
...
@@ -14540,6 +14542,7 @@ .maxstack 2
"
);
}
[
WorkItem
(
5530
,
"https://github.com/dotnet/roslyn/issues/5530"
)]
[
Fact
]
public
void
CoalesceUsesLocal
()
{
...
...
@@ -14584,5 +14587,116 @@ .maxstack 2
}
"
);
}
[
WorkItem
(
5530
,
"https://github.com/dotnet/roslyn/issues/5530"
)]
[
Fact
]
public
void
TernaryUsesLocal
()
{
string
source
=
@"
class Program
{
static void Main(string[] args)
{
string sline = GetString();
var lastChar = sline.Length == 0 ? '\0' : sline[sline.Length - 1];
System.Console.WriteLine(lastChar);
}
private static string GetString()
{
return ""hello"";
}
}
"
;
var
compilation
=
CompileAndVerify
(
source
,
expectedOutput
:
"o"
);
compilation
.
VerifyIL
(
"Program.Main"
,
@"
{
// Code size 37 (0x25)
.maxstack 3
.locals init (string V_0) //sline
IL_0000: call ""string Program.GetString()""
IL_0005: stloc.0
IL_0006: ldloc.0
IL_0007: callvirt ""int string.Length.get""
IL_000c: brfalse.s IL_001e
IL_000e: ldloc.0
IL_000f: ldloc.0
IL_0010: callvirt ""int string.Length.get""
IL_0015: ldc.i4.1
IL_0016: sub
IL_0017: callvirt ""char string.this[int].get""
IL_001c: br.s IL_001f
IL_001e: ldc.i4.0
IL_001f: call ""void System.Console.WriteLine(char)""
IL_0024: ret
}
"
);
}
[
WorkItem
(
5530
,
"https://github.com/dotnet/roslyn/issues/5530"
)]
[
Fact
]
public
void
LogicalOpUsesLocal
()
{
string
source
=
@"
class Program
{
static void Main(string[] args)
{
string tokenString = GetString();
if (tokenString[tokenString.Length - 1] != 'L' && tokenString[tokenString.Length -1] != 'l')
{
System.Console.WriteLine(""hi"");
}
}
private static string GetString()
{
return ""hello"";
}
}
"
;
var
compilation
=
CompileAndVerify
(
source
,
expectedOutput
:
"hi"
);
compilation
.
VerifyIL
(
"Program.Main"
,
@"
{
// Code size 53 (0x35)
.maxstack 3
.locals init (string V_0) //tokenString
IL_0000: call ""string Program.GetString()""
IL_0005: stloc.0
IL_0006: ldloc.0
IL_0007: ldloc.0
IL_0008: callvirt ""int string.Length.get""
IL_000d: ldc.i4.1
IL_000e: sub
IL_000f: callvirt ""char string.this[int].get""
IL_0014: ldc.i4.s 76
IL_0016: beq.s IL_0034
IL_0018: ldloc.0
IL_0019: ldloc.0
IL_001a: callvirt ""int string.Length.get""
IL_001f: ldc.i4.1
IL_0020: sub
IL_0021: callvirt ""char string.this[int].get""
IL_0026: ldc.i4.s 108
IL_0028: beq.s IL_0034
IL_002a: ldstr ""hi""
IL_002f: call ""void System.Console.WriteLine(string)""
IL_0034: ret
}
"
);
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录