Jes*_*sen 9 c# crash lambda roslyn visual-studio-2015
我刚刚升级到VS2015.1并且在尝试编译我的一个项目时遇到了编译器崩溃.如果您将以下repo代码放在控制台应用程序中(并添加对moq.dll的引用),则第12行中的代码会使我的编译器崩溃.这似乎发生在Roslyn lamdba重写调用期间.
using System.Collections.Generic;
using System.Linq;
using Moq;
namespace RoslynError
{
class Program
{
static void Main(string[] args)
{
var mockRepo = new MockRepository(MockBehavior.Strict);
var obj = mockRepo.OneOf<DTO>(x => x.Value == (OptionEnum?)null);
}
}
class DTO
{
public DTO(OptionEnum? enumVal)
{
Value = enumVal;
}
public OptionEnum? Value;
}
enum OptionEnum
{
NotSpecified
}
}
Run Code Online (Sandbox Code Playgroud)
有谁知道崩溃发生的原因?
以下更简单的示例还重现了该问题,该问题与表达式树中的重写类型转换节点有关:
using System;
using System.Linq.Expressions;
namespace Bug461
{
class Program
{
enum Test { }
static void Main()
{
Expression<Func<Test?, bool>> x = t => t == (Test?)null;
}
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:我稍微编辑了代码以避免警告.
编辑2:该错误是由https://github.com/dotnet/roslyn/commit/5c602fc6引起的,其中降级的枚举操作数(即空文字)没有关联的类型.
编辑3:我提出了一个建议修复的拉取请求:https://github.com/dotnet/roslyn/pull/7227
归档时间: |
|
查看次数: |
592 次 |
最近记录: |