C# compiler crashes when using "switch" block
- Dominant language
- C#
- Stars
- 20.7k
- Forks
- 4.3k
- PR merge metrics
- PR metrics pending
Description
I dont know how to describe it.... problems like below (image)
Failed:
Log when failed: (VBCSCompiler.exe)
System.InvalidOperationException: Unexpected value 'System_IntPtr' of type 'Microsoft.CodeAnalysis.SpecialType'
在 Microsoft.CodeAnalysis.CSharp.LocalRewriter.DecisionDagRewriter.LowerSwitchDispatchNode(SwitchDispatch node, BoundExpression input)
在 Microsoft.CodeAnalysis.CSharp.LocalRewriter.DecisionDagRewriter.GenerateSwitchDispatch(BoundDecisionDagNode node, HashSet`1 loweredNodes)
在 Microsoft.CodeAnalysis.CSharp.LocalRewriter.DecisionDagRewriter.LowerDecisionDagCore(BoundDecisionDag decisionDag)
在 Microsoft.CodeAnalysis.CSharp.LocalRewriter.BaseSwitchLocalRewriter.LowerDecisionDag(BoundDecisionDag decisionDag)
在 Microsoft.CodeAnalysis.CSharp.LocalRewriter.SwitchStatementLocalRewriter.LowerSwitchStatement(BoundSwitchStatement node)
在 Microsoft.CodeAnalysis.CSharp.LocalRewriter.SwitchStatementLocalRewriter.Rewrite(LocalRewriter localRewriter, BoundSwitchStatement node)
在 Microsoft.CodeAnalysis.CSharp.LocalRewriter.VisitStatement(BoundStatement node)
在 Microsoft.CodeAnalysis.CSharp.LocalRewriter.VisitPossibleUsingDeclaration(BoundStatement node, ImmutableArray`1 statements, Int32 statementIndex, Boolean& replacedLocalDeclarations)
在 Microsoft.CodeAnalysis.CSharp.LocalRewriter.VisitStatementSubList(ArrayBuilder`1 builder, ImmutableArray`1 statements, Int32 startIndex)
在 Microsoft.CodeAnalysis.CSharp.LocalRewriter.VisitBlock(BoundBlock node)
在 Microsoft.CodeAnalysis.CSharp.LocalRewriter.VisitStatement(BoundStatement node)
在 Microsoft.CodeAnalysis.CSharp.LocalRewriter.VisitIfStatement(BoundIfStatement node)
在 Microsoft.CodeAnalysis.CSharp.LocalRewriter.VisitStatement(BoundStatement node)
在 Microsoft.CodeAnalysis.CSharp.LocalRewriter.VisitPossibleUsingDeclaration(BoundStatement node, ImmutableArray`1 statements, Int32 statementIndex, Boolean& replacedLocalDeclarations)
在 Microsoft.CodeAnalysis.CSharp.LocalRewriter.VisitStatementSubList(ArrayBuilder`1 builder, ImmutableArray`1 statements, Int32 startIndex)
在 Microsoft.CodeAnalysis.CSharp.LocalRewriter.VisitBlock(BoundBlock node)
在 Microsoft.CodeAnalysis.CSharp.BoundTreeRewriter.DoVisitList[T](ImmutableArray`1 list)
在 Microsoft.CodeAnalysis.CSharp.LocalRewriter.SwitchStatementLocalRewriter.LowerSwitchStatement(BoundSwitchStatement node)
在 Microsoft.CodeAnalysis.CSharp.LocalRewriter.SwitchStatementLocalRewriter.Rewrite(LocalRewriter localRewriter, BoundSwitchStatement node)
在 Microsoft.CodeAnalysis.CSharp.LocalRewriter.VisitStatement(BoundStatement node)
在 Microsoft.CodeAnalysis.CSharp.LocalRewriter.VisitPossibleUsingDeclaration(BoundStatement node, ImmutableArray`1 statements, Int32 statementIndex, Boolean& replacedLocalDeclarations)
在 Microsoft.CodeAnalysis.CSharp.LocalRewriter.VisitStatementSubList(ArrayBuilder`1 builder, ImmutableArray`1 statements, Int32 startIndex)
在 Microsoft.CodeAnalysis.CSharp.LocalRewriter.VisitBlock(BoundBlock node)
在 Microsoft.CodeAnalysis.CSharp.LocalRewriter.VisitStatement(BoundStatement node)
在 Microsoft.CodeAnalysis.CSharp.LocalRewriter.Rewrite(CSharpCompilation compilation, MethodSymbol method, Int32 methodOrdinal, NamedTypeSymbol containingType, BoundStatement statement, TypeCompilationState compilationState, SynthesizedSubmissionFields previousSubmissionFields, Boolean allowOmissionOfConditionalCalls, MethodInstrumentation instrumentation, DebugDocumentProvider debugDocumentProvider, BindingDiagnosticBag diagnostics, ImmutableArray`1& codeCoverageSpans, Boolean& sawLambdas, Boolean& sawLocalFunctions, Boolean& sawAwaitInExceptionHandler)
在 Microsoft.CodeAnalysis.CSharp.MethodCompiler.LowerBodyOrInitializer(MethodSymbol method, Int32 methodOrdinal, BoundStatement body, SynthesizedSubmissionFields previousSubmissionFields, TypeCompilationState compilationState, MethodInstrumentation instrumentation, DebugDocumentProvider debugDocumentProvider, ImmutableArray`1& codeCoverageSpans, BindingDiagnosticBag diagnostics, VariableSlotAllocator& lazyVariableSlotAllocator, ArrayBuilder`1 lambdaDebugInfoBuilder, ArrayBuilder`1 lambdaRuntimeRudeEditsBuilder, ArrayBuilder`1 closureDebugInfoBuilder, ArrayBuilder`1 stateMachineStateDebugInfoBuilder, StateMachineTypeSymbol& stateMachineTypeOpt)
在 Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileMethod(MethodSymbol methodSymbol, Int32 methodOrdinal, ProcessedFieldInitializers& processedInitializers, SynthesizedSubmissionFields previousSubmissionFields, TypeCompilationState compilationState)
在 Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileNamedType(NamedTypeSymbol containingType)
在 Microsoft.CodeAnalysis.CSharp.MethodCompiler.<>c__DisplayClass25_0.b__0()
堆栈:
在 System.Environment.FailFast(System.String, System.Exception)
在 Microsoft.CodeAnalysis.FailFast.OnFatalException(System.Exception)
在 Microsoft.CodeAnalysis.ErrorReporting.FatalError.Report(System.Exception, Microsoft.CodeAnalysis.ErrorReporting.ErrorSeverity, Boolean)
在 Microsoft.CodeAnalysis.ErrorReporting.FatalError.ReportAndPropagateUnlessCanceled(System.Exception, Microsoft.CodeAnalysis.ErrorReporting.ErrorSeverity)
在 Microsoft.CodeAnalysis.CSharp.MethodCompiler+<>c__DisplayClass25_0.b__0()
在 Microsoft.CodeAnalysis.CSharp.LocalRewriter+DecisionDagRewriter.LowerSwitchDispatchNode(SwitchDispatch, Microsoft.CodeAnalysis.CSharp.BoundExpression)
在 Microsoft.CodeAnalysis.CSharp.LocalRewriter+DecisionDagRewriter.GenerateSwitchDispatch(Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode, System.Collections.Generic.HashSet`1)
在 Microsoft.CodeAnalysis.CSharp.LocalRewriter+DecisionDagRewriter.LowerDecisionDagCore(Microsoft.CodeAnalysis.CSharp.BoundDecisionDag)
在 Microsoft.CodeAnalysis.CSharp.LocalRewriter+BaseSwitchLocalRewriter.LowerDecisionDag(Microsoft.CodeAnalysis.CSharp.BoundDecisionDag)
在 Microsoft.CodeAnalysis.CSharp.LocalRewriter+SwitchStatementLocalRewriter.LowerSwitchStatement(Microsoft.CodeAnalysis.CSharp.BoundSwitchStatement)
在 Microsoft.CodeAnalysis.CSharp.LocalRewriter+SwitchStatementLocalRewriter.Rewrite(Microsoft.CodeAnalysis.CSharp.LocalRewriter, Microsoft.CodeAnalysis.CSharp.BoundSwitchStatement)
在 Microsoft.CodeAnalysis.CSharp.LocalRewriter.VisitStatement(Microsoft.CodeAnalysis.CSharp.BoundStatement)
在 Microsoft.CodeAnalysis.CSharp.LocalRewriter.VisitPossibleUsingDeclaration(Microsoft.CodeAnalysis.CSharp.BoundStatement, System.Collections.Immutable.ImmutableArray`1, Int32, Boolean ByRef)
在 Microsoft.CodeAnalysis.CSharp.LocalRewriter.VisitStatementSubList(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1, System.Collections.Immutable.ImmutableArray`1, Int32)
在 Microsoft.CodeAnalysis.CSharp.LocalRewriter.VisitBlock(Microsoft.CodeAnalysis.CSharp.BoundBlock)
在 Microsoft.CodeAnalysis.CSharp.LocalRewriter.VisitStatement(Microsoft.CodeAnalysis.CSharp.BoundStatement)
在 Microsoft.CodeAnalysis.CSharp.LocalRewriter.VisitIfStatement(Microsoft.CodeAnalysis.CSharp.BoundIfStatement)
在 Microsoft.CodeAnalysis.CSharp.LocalRewriter.VisitStatement(Microsoft.CodeAnalysis.CSharp.BoundStatement)
在 Microsoft.CodeAnalysis.CSharp.LocalRewriter.VisitPossibleUsingDeclaration(Microsoft.CodeAnalysis.CSharp.BoundStatement, System.Collections.Immutable.ImmutableArray`1, Int32, Boolean ByRef)
在 Microsoft.CodeAnalysis.CSharp.LocalRewriter.VisitStatementSubList(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1, System.Collections.Immutable.ImmutableArray`1, Int32)
在 Microsoft.CodeAnalysis.CSharp.LocalRewriter.VisitBlock(Microsoft.CodeAnalysis.CSharp.BoundBlock)
在 Microsoft.CodeAnalysis.CSharp.BoundTreeRewriter.DoVisitList[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]](System.Collections.Immutable.ImmutableArray`1)
在 Microsoft.CodeAnalysis.CSharp.LocalRewriter+SwitchStatementLocalRewriter.LowerSwitchStatement(Microsoft.CodeAnalysis.CSharp.BoundSwitchStatement)
在 Microsoft.CodeAnalysis.CSharp.LocalRewriter+SwitchStatementLocalRewriter.Rewrite(Microsoft.CodeAnalysis.CSharp.LocalRewriter, Microsoft.CodeAnalysis.CSharp.BoundSwitchStatement)
在 Microsoft.CodeAnalysis.CSharp.LocalRewriter.VisitStatement(Microsoft.CodeAnalysis.CSharp.BoundStatement)
在 Microsoft.CodeAnalysis.CSharp.LocalRewriter.VisitPossibleUsingDeclaration(Microsoft.CodeAnalysis.CSharp.BoundStatement, System.Collections.Immutable.ImmutableArray`1, Int32, Boolean ByRef)
在 Microsoft.CodeAnalysis.CSharp.LocalRewriter.VisitStatementSubList(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1, System.Collections.Immutable.ImmutableArray`1, Int32)
在 Microsoft.CodeAnalysis.CSharp.LocalRewriter.VisitBlock(Microsoft.CodeAnalysis.CSharp.BoundBlock)
在 Microsoft.CodeAnalysis.CSharp.LocalRewriter.VisitStatement(Microsoft.CodeAnalysis.CSharp.BoundStatement)
在 Microsoft.CodeAnalysis.CSharp.LocalRewriter.Rewrite(Microsoft.CodeAnalysis.CSharp.CSharpCompilation, Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol, Int32, Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol, Microsoft.CodeAnalysis.CSharp.BoundStatement, Microsoft.CodeAnalysis.CSharp.TypeCompilationState, Microsoft.CodeAnalysis.CSharp.SynthesizedSubmissionFields, Boolean, Microsoft.CodeAnalysis.Emit.MethodInstrumentation, Microsoft.CodeAnalysis.CodeGen.DebugDocumentProvider, Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag, System.Collections.Immutable.ImmutableArray`1 ByRef, Boolean ByRef, Boolean ByRef, Boolean ByRef)
在 Microsoft.CodeAnalysis.CSharp.MethodCompiler.LowerBodyOrInitializer(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol, Int32, Microsoft.CodeAnalysis.CSharp.BoundStatement, Microsoft.CodeAnalysis.CSharp.SynthesizedSubmissionFields, Microsoft.CodeAnalysis.CSharp.TypeCompilationState, Microsoft.CodeAnalysis.Emit.MethodInstrumentation, Microsoft.CodeAnalysis.CodeGen.DebugDocumentProvider, System.Collections.Immutable.ImmutableArray`1 ByRef, Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag, Microsoft.CodeAnalysis.CodeGen.VariableSlotAllocator ByRef, Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1, Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1, Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1, Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1, Microsoft.CodeAnalysis.CSharp.StateMachineTypeSymbol ByRef)
在 Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileMethod(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol, Int32, ProcessedFieldInitializers ByRef, Microsoft.CodeAnalysis.CSharp.SynthesizedSubmissionFields, Microsoft.CodeAnalysis.CSharp.TypeCompilationState)
在 Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileNamedType(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol)
在 Microsoft.CodeAnalysis.CSharp.MethodCompiler+<>c__DisplayClass25_0.b__0()
在 Roslyn.Utilities.UICultureUtilities+<>c__DisplayClass5_0.b__0()
在 System.Threading.Tasks.Task.Execute()
在 System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
在 System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
在 System.Threading.Tasks.Task.ExecuteWithThreadLocal(System.Threading.Tasks.Task ByRef)
在 System.Threading.Tasks.Task.ExecuteEntry(Boolean)
在 System.Threading.ThreadPoolWorkQueue.Dispatch()
Success:
Contributor guide
Assessment
This issue has not been assessed yet.