SDK 3.1.401 fails to compile switch expression, works fine on 3.1.301 and ends with MSB6006 "csc.exe" exited with code -2146232797. on 3.1.401
Minimal working example
public class Program {
public static void Main() {}
public static class FooBar {
public static string For(string a, string b) =>
(a, b) switch { ("x", ConstClass.FooKey) =>"v1",
("x", ConstClass.BarKey) =>"v2",
("y", ConstClass.QuxKey) =>"v3",
(_, ConstClass.QuxKey) =>"v4",
_ => throw new Exception()
};
}
public class ConstClass {
public const string FooKey = "FOO";
public const string BarKey = "BAR";
public const string QuxKey = "QUX";
}
}
dotnet build results
C:\Program Files\dotnet\sdk\3.1.401\Roslyn\Microsoft.CSharp.Core.targets(70,5): error : Process terminated. System.NullReferenceException: Object reference not set to an instance of an object. [C:\Users\MCA\source\repos\ConsoleApp11\ConsoleApp11\ConsoleApp11.csproj]
C:\Program Files\dotnet\sdk\3.1.401\Roslyn\Microsoft.CSharp.Core.targets(70,5): error : at Microsoft.CodeAnalysis.CodeGen.ILBuilder.BasicBlock.ShortenBranches(Int32& delta) [C:\Users\MCA\source\repos\ConsoleApp11\ConsoleApp11\ConsoleApp11.csproj]
C:\Program Files\dotnet\sdk\3.1.401\Roslyn\Microsoft.CSharp.Core.targets(70,5): error : at Microsoft.CodeAnalysis.CodeGen.ILBuilder.ComputeOffsetsAndAdjustBranches() [C:\Users\MCA\source\repos\ConsoleApp11\ConsoleApp11\ConsoleApp11.csproj]
C:\Program Files\dotnet\sdk\3.1.401\Roslyn\Microsoft.CSharp.Core.targets(70,5): error : at Microsoft.CodeAnalysis.CodeGen.ILBuilder.RealizeBlocks() [C:\Users\MCA\source\repos\ConsoleApp11\ConsoleApp11\ConsoleApp11.csproj]
C:\Program Files\dotnet\sdk\3.1.401\Roslyn\Microsoft.CSharp.Core.targets(70,5): error : at Microsoft.CodeAnalysis.CodeGen.ILBuilder.Realize() [C:\Users\MCA\source\repos\ConsoleApp11\ConsoleApp11\ConsoleApp11.csproj]
C:\Program Files\dotnet\sdk\3.1.401\Roslyn\Microsoft.CSharp.Core.targets(70,5): error : at Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.GenerateImpl() [C:\Users\MCA\source\repos\ConsoleApp11\ConsoleApp11\ConsoleApp11.csproj]
C:\Program Files\dotnet\sdk\3.1.401\Roslyn\Microsoft.CSharp.Core.targets(70,5): error : at Microsoft.CodeAnalysis.CSharp.MethodCompiler.GenerateMethodBody(PEModuleBuilder moduleBuilder, MethodSymbol method, Int32 methodOrdinal, BoundStatement block, ImmutableArray`1 lambdaDebugInfo, ImmutableArray`1 closureDebugInfo, StateMachineTypeSymbol stateMachineTypeOpt, VariableSlotAllocator variableSlotAllocatorOpt, DiagnosticBag diagnostics, DebugDocumentProvider debugDocumentProvider,
ImportChain importChainOpt, Boolean emittingPdb, Boolean emitTestCoverageData, ImmutableArray`1 dynamicAnalysisSpans, AsyncForwardEntryPoint entryPointOpt) [C:\Users\MCA\source\repos\ConsoleApp11\ConsoleApp11\ConsoleApp11.csproj]
C:\Program Files\dotnet\sdk\3.1.401\Roslyn\Microsoft.CSharp.Core.targets(70,5): error : at Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileMethod(MethodSymbol methodSymbol, Int32 methodOrdinal, ProcessedFieldInitializers& processedInitializers, SynthesizedSubmissionFields previousSubmissionFields, TypeCompilationState compilationState) [C:\Users\MCA\source\repos\ConsoleApp11\ConsoleApp11\ConsoleApp11.csproj]
C:\Program Files\dotnet\sdk\3.1.401\Roslyn\Microsoft.CSharp.Core.targets(70,5): error : at Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileNamedType(NamedTypeSymbol containingType) [C:\Users\MCA\source\repos\ConsoleApp11\ConsoleApp11\ConsoleApp11.csproj]
C:\Program Files\dotnet\sdk\3.1.401\Roslyn\Microsoft.CSharp.Core.targets(70,5): error : at Microsoft.CodeAnalysis.CSharp.MethodCompiler.<>c__DisplayClass22_0.<CompileNamedTypeAsync>b__0() [C:\Users\MCA\source\repos\ConsoleApp11\ConsoleApp11\ConsoleApp11.csproj]
C:\Program Files\dotnet\sdk\3.1.401\Roslyn\Microsoft.CSharp.Core.targets(70,5): error : at System.Environment.FailFast(System.String, System.Exception) [C:\Users\MCA\source\repos\ConsoleApp11\ConsoleApp11\ConsoleApp11.csproj]
C:\Program Files\dotnet\sdk\3.1.401\Roslyn\Microsoft.CSharp.Core.targets(70,5): error : at Microsoft.CodeAnalysis.FailFast.OnFatalException(System.Exception) [C:\Users\MCA\source\repos\ConsoleApp11\ConsoleApp11\ConsoleApp11.csproj]
C:\Program Files\dotnet\sdk\3.1.401\Roslyn\Microsoft.CSharp.Core.targets(70,5): error : at Microsoft.CodeAnalysis.FatalError.Report(System.Exception, System.Action`1<System.Exception>) [C:\Users\MCA\source\repos\ConsoleApp11\ConsoleApp11\ConsoleApp11.csproj]
C:\Program Files\dotnet\sdk\3.1.401\Roslyn\Microsoft.CSharp.Core.targets(70,5): error : at Microsoft.CodeAnalysis.FatalError.ReportUnlessCanceled(System.Exception) [C:\Users\MCA\source\repos\ConsoleApp11\ConsoleApp11\ConsoleApp11.csproj]
C:\Program Files\dotnet\sdk\3.1.401\Roslyn\Microsoft.CSharp.Core.targets(70,5): error : at Microsoft.CodeAnalysis.CSharp.MethodCompiler+<>c__DisplayClass22_0.<CompileNamedTypeAsync>b__0() [C:\Users\MCA\source\repos\ConsoleApp11\ConsoleApp11\ConsoleApp11.csproj]
C:\Program Files\dotnet\sdk\3.1.401\Roslyn\Microsoft.CSharp.Core.targets(70,5): error : at Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock.ShortenBranches(Int32 ByRef) [C:\Users\MCA\source\repos\ConsoleApp11\ConsoleApp11\ConsoleApp11.csproj]
C:\Program Files\dotnet\sdk\3.1.401\Roslyn\Microsoft.CSharp.Core.targets(70,5): error : at Microsoft.CodeAnalysis.CodeGen.ILBuilder.ComputeOffsetsAndAdjustBranches() [C:\Users\MCA\source\repos\ConsoleApp11\ConsoleApp11\ConsoleApp11.csproj]
C:\Program Files\dotnet\sdk\3.1.401\Roslyn\Microsoft.CSharp.Core.targets(70,5): error : at Microsoft.CodeAnalysis.CodeGen.ILBuilder.RealizeBlocks() [C:\Users\MCA\source\repos\ConsoleApp11\ConsoleApp11\ConsoleApp11.csproj]
C:\Program Files\dotnet\sdk\3.1.401\Roslyn\Microsoft.CSharp.Core.targets(70,5): error : at Microsoft.CodeAnalysis.CodeGen.ILBuilder.Realize() [C:\Users\MCA\source\repos\ConsoleApp11\ConsoleApp11\ConsoleApp11.csproj]
C:\Program Files\dotnet\sdk\3.1.401\Roslyn\Microsoft.CSharp.Core.targets(70,5): error : at Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.GenerateImpl() [C:\Users\MCA\source\repos\ConsoleApp11\ConsoleApp11\ConsoleApp11.csproj]
C:\Program Files\dotnet\sdk\3.1.401\Roslyn\Microsoft.CSharp.Core.targets(70,5): error : at Microsoft.CodeAnalysis.CSharp.MethodCompiler.GenerateMethodBody(Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder, Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol, Int32, Microsoft.CodeAnalysis.CSharp.BoundStatement, System.Collections.Immutable.ImmutableArray`1<Microsoft.CodeAnalysis.CodeGen.LambdaDebugInfo>, System.Collections.Immutable.ImmutableArray`1<Microsoft.CodeAnalysis.CodeGen.ClosureDebugInfo>, Microsoft.CodeAnalysis.CSharp.StateMachineTypeSymbol, Microsoft.CodeAnalysis.CodeGen.VariableSlotAllocator, Microsoft.CodeAnalysis.DiagnosticBag, Microsoft.CodeAnalysis.CodeGen.DebugDocumentProvider, Microsoft.CodeAnalysis.CSharp.ImportChain, Boolean, Boolean, System.Collections.Immutable.ImmutableArray`1<Microsoft.CodeAnalysis.CodeGen.SourceSpan>, AsyncForwardEntryPoint) [C:\Users\MCA\source\repos\ConsoleApp11\ConsoleApp11\ConsoleApp11.csproj]
C:\Program Files\dotnet\sdk\3.1.401\Roslyn\Microsoft.CSharp.Core.targets(70,5): error : at Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileMethod(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol, Int32, ProcessedFieldInitializers ByRef, Microsoft.CodeAnalysis.CSharp.SynthesizedSubmissionFields, Microsoft.CodeAnalysis.CSharp.TypeCompilationState) [C:\Users\MCA\source\repos\ConsoleApp11\ConsoleApp11\ConsoleApp11.csproj]
C:\Program Files\dotnet\sdk\3.1.401\Roslyn\Microsoft.CSharp.Core.targets(70,5): error : at Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileNamedType(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol) [C:\Users\MCA\source\repos\ConsoleApp11\ConsoleApp11\ConsoleApp11.csproj]
C:\Program Files\dotnet\sdk\3.1.401\Roslyn\Microsoft.CSharp.Core.targets(70,5): error : at Microsoft.CodeAnalysis.CSharp.MethodCompiler+<>c__DisplayClass22_0.<CompileNamedTypeAsync>b__0() [C:\Users\MCA\source\repos\ConsoleApp11\ConsoleApp11\ConsoleApp11.csproj]
C:\Program Files\dotnet\sdk\3.1.401\Roslyn\Microsoft.CSharp.Core.targets(70,5): error : at Roslyn.Utilities.UICultureUtilities+<>c__DisplayClass5_0.<WithCurrentUICulture>b__0() [C:\Users\MCA\source\repos\ConsoleApp11\ConsoleApp11\ConsoleApp11.csproj]
C:\Program Files\dotnet\sdk\3.1.401\Roslyn\Microsoft.CSharp.Core.targets(70,5): error : at System.Threading.Tasks.Task.InnerInvoke() [C:\Users\MCA\source\repos\ConsoleApp11\ConsoleApp11\ConsoleApp11.csproj]
C:\Program Files\dotnet\sdk\3.1.401\Roslyn\Microsoft.CSharp.Core.targets(70,5): error : at System.Threading.Tasks.Task+<>c.<.cctor>b__274_0(System.Object) [C:\Users\MCA\source\repos\ConsoleApp11\ConsoleApp11\ConsoleApp11.csproj]
C:\Program Files\dotnet\sdk\3.1.401\Roslyn\Microsoft.CSharp.Core.targets(70,5): error : at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(System.Threading.Thread, System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) [C:\Users\MCA\source\repos\ConsoleApp11\ConsoleApp11\ConsoleApp11.csproj]
C:\Program Files\dotnet\sdk\3.1.401\Roslyn\Microsoft.CSharp.Core.targets(70,5): error : at System.Threading.Tasks.Task.ExecuteWithThreadLocal(System.Threading.Tasks.Task ByRef, System.Threading.Thread) [C:\Users\MCA\source\repos\ConsoleApp11\ConsoleApp11\ConsoleApp11.csproj]
C:\Program Files\dotnet\sdk\3.1.401\Roslyn\Microsoft.CSharp.Core.targets(70,5): error : at System.Threading.Tasks.Task.ExecuteEntryUnsafe(System.Threading.Thread) [C:\Users\MCA\source\repos\ConsoleApp11\ConsoleApp11\ConsoleApp11.csproj]
C:\Program Files\dotnet\sdk\3.1.401\Roslyn\Microsoft.CSharp.Core.targets(70,5): error : at System.Threading.Tasks.Task.ExecuteFromThreadPool(System.Threading.Thread) [C:\Users\MCA\source\repos\ConsoleApp11\ConsoleApp11\ConsoleApp11.csproj]
C:\Program Files\dotnet\sdk\3.1.401\Roslyn\Microsoft.CSharp.Core.targets(70,5): error : at System.Threading.ThreadPoolWorkQueue.Dispatch() [C:\Users\MCA\source\repos\ConsoleApp11\ConsoleApp11\ConsoleApp11.csproj]
C:\Program Files\dotnet\sdk\3.1.401\Roslyn\Microsoft.CSharp.Core.targets(70,5): error : at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback() [C:\Users\MCA\source\repos\ConsoleApp11\ConsoleApp11\ConsoleApp11.csproj]
C:\Program Files\dotnet\sdk\3.1.401\Roslyn\Microsoft.CSharp.Core.targets(70,5): error : System.NullReferenceException: Object reference not set to an instance of
an object. [C:\Users\MCA\source\repos\ConsoleApp11\ConsoleApp11\ConsoleApp11.csproj]
C:\Program Files\dotnet\sdk\3.1.401\Roslyn\Microsoft.CSharp.Core.targets(70,5): error : at Microsoft.CodeAnalysis.CodeGen.ILBuilder.BasicBlock.ShortenBranches(Int32& delta) [C:\Users\MCA\source\repos\ConsoleApp11\ConsoleApp11\ConsoleApp11.csproj]
C:\Program Files\dotnet\sdk\3.1.401\Roslyn\Microsoft.CSharp.Core.targets(70,5): error : at Microsoft.CodeAnalysis.CodeGen.ILBuilder.ComputeOffsetsAndAdjustBranches() [C:\Users\MCA\source\repos\ConsoleApp11\ConsoleApp11\ConsoleApp11.csproj]
C:\Program Files\dotnet\sdk\3.1.401\Roslyn\Microsoft.CSharp.Core.targets(70,5): error : at Microsoft.CodeAnalysis.CodeGen.ILBuilder.RealizeBlocks() [C:\Users\MCA\source\repos\ConsoleApp11\ConsoleApp11\ConsoleApp11.csproj]
C:\Program Files\dotnet\sdk\3.1.401\Roslyn\Microsoft.CSharp.Core.targets(70,5): error : at Microsoft.CodeAnalysis.CodeGen.ILBuilder.Realize() [C:\Users\MCA\source\repos\ConsoleApp11\ConsoleApp11\ConsoleApp11.csproj]
C:\Program Files\dotnet\sdk\3.1.401\Roslyn\Microsoft.CSharp.Core.targets(70,5): error : at Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.GenerateImpl() [C:\Users\MCA\source\repos\ConsoleApp11\ConsoleApp11\ConsoleApp11.csproj]
C:\Program Files\dotnet\sdk\3.1.401\Roslyn\Microsoft.CSharp.Core.targets(70,5): error : at Microsoft.CodeAnalysis.CSharp.MethodCompiler.GenerateMethodBody(PEModuleBuilder moduleBuilder, MethodSymbol method, Int32 methodOrdinal, BoundStatement block, ImmutableArray`1 lambdaDebugInfo, ImmutableArray`1 closureDebugInfo, StateMachineTypeSymbol stateMachineTypeOpt, VariableSlotAllocator variableSlotAllocatorOpt, DiagnosticBag diagnostics, DebugDocumentProvider debugDocumentProvider,
ImportChain importChainOpt, Boolean emittingPdb, Boolean emitTestCoverageData, ImmutableArray`1 dynamicAnalysisSpans, AsyncForwardEntryPoint entryPointOpt) [C:\Users\MCA\source\repos\ConsoleApp11\ConsoleApp11\ConsoleApp11.csproj]
C:\Program Files\dotnet\sdk\3.1.401\Roslyn\Microsoft.CSharp.Core.targets(70,5): error : at Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileMethod(MethodSymbol methodSymbol, Int32 methodOrdinal, ProcessedFieldInitializers& processedInitializers, SynthesizedSubmissionFields previousSubmissionFields, TypeCompilationState compilationState) [C:\Users\MCA\source\repos\ConsoleApp11\ConsoleApp11\ConsoleApp11.csproj]
C:\Program Files\dotnet\sdk\3.1.401\Roslyn\Microsoft.CSharp.Core.targets(70,5): error : at Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileNamedType(NamedTypeSymbol containingType) [C:\Users\MCA\source\repos\ConsoleApp11\ConsoleApp11\ConsoleApp11.csproj]
C:\Program Files\dotnet\sdk\3.1.401\Roslyn\Microsoft.CSharp.Core.targets(70,5): error : at Microsoft.CodeAnalysis.CSharp.MethodCompiler.<>c__DisplayClass22_0.<CompileNamedTypeAsync>b__0() [C:\Users\MCA\source\repos\ConsoleApp11\ConsoleApp11\ConsoleApp11.csproj]
SDK 3.1.401 fails to compile switch expression, works fine on 3.1.301 and ends with
MSB6006 "csc.exe" exited with code -2146232797.
on 3.1.401Minimal working example
dotnet build
results