dotnet / sdk

Core functionality needed to create .NET Core projects, that is shared between Visual Studio and CLI
https://dot.net/core
MIT License
2.6k stars 1.03k forks source link

SDK 3.1.401 fails to compile switch expression #12886

Open Saalin opened 3 years ago

Saalin commented 3 years ago

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]
pdad commented 3 years ago

Got the same error. Tried with 3.1.302 and it works fine.

Apollo3zehn commented 3 years ago

Same here: https://ci.appveyor.com/project/Apollo3zehn/hdf5-net/builds/35382684, see line 28 and 155 ff.

mike-f50 commented 3 years ago

Same problem here

kronos commented 3 years ago

Same problem