ashmind / SharpLab

.NET language playground
https://sharplab.io
BSD 2-Clause "Simplified" License
2.69k stars 197 forks source link

System.InvalidOperationException: Unexpected value 'Dup' of type 'Microsoft.CodeAnalysis.CSharp.BoundKind' #1170

Open OwnageIsMagic opened 2 years ago

OwnageIsMagic commented 2 years ago

Looks like bug Roslyn, but it compiles locally. (.NET 6 SDK) Maybe something with Analyzers (it should emit warning CS0168: The variable 'oce' is declared but never used).

using System;
using System.Threading.Tasks;

[assembly: SharpLab.Runtime.NoILRewriting]

// bool catchEx = true;

try { await default(ValueTask); }
//                                ↓↓↓ delete this name
catch (OperationCanceledException oce) when (
                                             false is var catchEx &&
                                                ( (Func<bool>) (() => {
                                                 // ↓↓↓ or this line
                                                 catchEx.ToString();
                                                 return false; }) )()
                                            )
{ }
//catch (Exception) when (catchEx) { }
Stack trace System.InvalidOperationException: Unexpected value 'Dup' of type 'Microsoft.CodeAnalysis.CSharp.BoundKind' at Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitCatchBlock(BoundCatchBlock catchBlock) in /_/src/Compilers/CSharp/Portable/CodeGen/EmitStatement.cs:line 1034 at Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitTryStatement(BoundTryStatement statement, Boolean emitCatchesOnly) in /_/src/Compilers/CSharp/Portable/CodeGen/EmitStatement.cs:line 838 at Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitStatement(BoundStatement statement) in /_/src/Compilers/CSharp/Portable/CodeGen/EmitStatement.cs:line 99 at Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitStatements(ImmutableArray`1 statements) in /_/src/Compilers/CSharp/Portable/CodeGen/EmitStatement.cs:line 665 at Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitBlock(BoundBlock block) in /_/src/Compilers/CSharp/Portable/CodeGen/EmitStatement.cs:line 632 at Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitStatement(BoundStatement statement) in /_/src/Compilers/CSharp/Portable/CodeGen/EmitStatement.cs:line 99 at Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitStatements(ImmutableArray`1 statements) in /_/src/Compilers/CSharp/Portable/CodeGen/EmitStatement.cs:line 665 at Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitBlock(BoundBlock block) in /_/src/Compilers/CSharp/Portable/CodeGen/EmitStatement.cs:line 632 at Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitStatement(BoundStatement statement) in /_/src/Compilers/CSharp/Portable/CodeGen/EmitStatement.cs:line 99 at Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitStatements(ImmutableArray`1 statements) in /_/src/Compilers/CSharp/Portable/CodeGen/EmitStatement.cs:line 665 at Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitBlock(BoundBlock block) in /_/src/Compilers/CSharp/Portable/CodeGen/EmitStatement.cs:line 632 at Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitTryStatement(BoundTryStatement statement, Boolean emitCatchesOnly) in /_/src/Compilers/CSharp/Portable/CodeGen/EmitStatement.cs:line 823 at Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitStatement(BoundStatement statement) in /_/src/Compilers/CSharp/Portable/CodeGen/EmitStatement.cs:line 99 at Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitStatements(ImmutableArray`1 statements) in /_/src/Compilers/CSharp/Portable/CodeGen/EmitStatement.cs:line 665 at Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitBlock(BoundBlock block) in /_/src/Compilers/CSharp/Portable/CodeGen/EmitStatement.cs:line 632 at Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitStatement(BoundStatement statement) in /_/src/Compilers/CSharp/Portable/CodeGen/EmitStatement.cs:line 99 at Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitStatementAndCountInstructions(BoundStatement statement) in /_/src/Compilers/CSharp/Portable/CodeGen/EmitStatement.cs:line 121 at Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitSequencePointStatement(BoundSequencePoint node) in /_/src/Compilers/CSharp/Portable/CodeGen/CodeGenerator.cs:line 366 at Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitStatement(BoundStatement statement) in /_/src/Compilers/CSharp/Portable/CodeGen/EmitStatement.cs:line 99 at Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitStatements(ImmutableArray`1 statements) in /_/src/Compilers/CSharp/Portable/CodeGen/EmitStatement.cs:line 665 at Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitBlock(BoundBlock block) in /_/src/Compilers/CSharp/Portable/CodeGen/EmitStatement.cs:line 632 at Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitStatement(BoundStatement statement) in /_/src/Compilers/CSharp/Portable/CodeGen/EmitStatement.cs:line 99 at Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.GenerateImpl() in /_/src/Compilers/CSharp/Portable/CodeGen/CodeGenerator.cs:line 305 at Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.Generate(Int32& asyncCatchHandlerOffset, ImmutableArray`1& asyncYieldPoints, ImmutableArray`1& asyncResumePoints, Boolean& hasStackAlloc) in /_/src/Compilers/CSharp/Portable/CodeGen/CodeGenerator.cs:line 223 at Microsoft.CodeAnalysis.CSharp.MethodCompiler.GenerateMethodBody(PEModuleBuilder moduleBuilder, MethodSymbol method, Int32 methodOrdinal, BoundStatement block, ImmutableArray`1 lambdaDebugInfo, ImmutableArray`1 closureDebugInfo, ImmutableArray`1 stateMachineStateDebugInfos, StateMachineTypeSymbol stateMachineTypeOpt, VariableSlotAllocator variableSlotAllocatorOpt, BindingDiagnosticBag diagnostics, DebugDocumentProvider debugDocumentProvider, ImportChain importChainOpt, Boolean emittingPdb, Boolean emitTestCoverageData, ImmutableArray`1 dynamicAnalysisSpans, AsyncForwardEntryPoint entryPointOpt) in /_/src/Compilers/CSharp/Portable/Compiler/MethodCompiler.cs:line 1641 at Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileSynthesizedMethods(TypeCompilationState compilationState) in /_/src/Compilers/CSharp/Portable/Compiler/MethodCompiler.cs:line 754 at Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileNamedType(NamedTypeSymbol containingType) in /_/src/Compilers/CSharp/Portable/Compiler/MethodCompiler.cs:line 653 at Microsoft.CodeAnalysis.CSharp.MethodCompiler.<>c__DisplayClass25_0.b__0() in /_/src/Compilers/CSharp/Portable/Compiler/MethodCompiler.cs:line 430 at Roslyn.Utilities.UICultureUtilities.<>c__DisplayClass5_0.b__0() in /_/src/Compilers/Core/Portable/InternalUtilities/UICultureUtilities.cs:line 141 at System.Threading.Tasks.Task.InnerInvoke() at System.Threading.Tasks.Task.<>c.<.cctor>b__272_0(Object obj) at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) --- End of stack trace from previous location --- at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread) --- End of stack trace from previous location --- at Microsoft.CodeAnalysis.CSharp.MethodCompiler.WaitForWorkers() in /_/src/Compilers/CSharp/Portable/Compiler/MethodCompiler.cs:line 335 at Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileMethodBodies(CSharpCompilation compilation, PEModuleBuilder moduleBeingBuiltOpt, Boolean emittingPdb, Boolean emitTestCoverageData, Boolean hasDeclarationErrors, Boolean emitMethodBodies, BindingDiagnosticBag diagnostics, Predicate`1 filterOpt, CancellationToken cancellationToken) in /_/src/Compilers/CSharp/Portable/Compiler/MethodCompiler.cs:line 129 at Microsoft.CodeAnalysis.CSharp.CSharpCompilation.CompileMethods(CommonPEModuleBuilder moduleBuilder, Boolean emittingPdb, Boolean emitMetadataOnly, Boolean emitTestCoverageData, DiagnosticBag diagnostics, Predicate`1 filterOpt, CancellationToken cancellationToken) in /_/src/Compilers/CSharp/Portable/Compilation/CSharpCompilation.cs:line 3253 at Microsoft.CodeAnalysis.Compilation.Emit(Stream peStream, Stream metadataPEStream, Stream pdbStream, Stream xmlDocumentationStream, Stream win32Resources, IEnumerable`1 manifestResources, EmitOptions options, IMethodSymbol debugEntryPoint, Stream sourceLinkStream, IEnumerable`1 embeddedTexts, RebuildData rebuildData, CompilationTestData testData, CancellationToken cancellationToken) in /_/src/Compilers/Core/Portable/Compilation/Compilation.cs:line 2900 at Microsoft.CodeAnalysis.Compilation.Emit(Stream peStream, Stream pdbStream, Stream xmlDocumentationStream, Stream win32Resources, IEnumerable`1 manifestResources, EmitOptions options, IMethodSymbol debugEntryPoint, Stream sourceLinkStream, IEnumerable`1 embeddedTexts, Stream metadataPEStream, RebuildData rebuildData, CancellationToken cancellationToken) in /_/src/Compilers/Core/Portable/Compilation/Compilation.cs:line 2767 at SharpLab.Server.Compilation.Compiler.TryCompileToStreamAsync(MemoryStream assemblyStream, MemoryStream symbolStream, IWorkSession session, IList`1 diagnostics, CancellationToken cancellationToken) in D:\a\SharpLab\SharpLab\!roslyn-branches\dotnet-main\sharplab\source\Server\Compilation\Compiler.cs:line 52 at SharpLab.Server.MirrorSharp.SlowUpdate.ProcessAsync(IWorkSession session, IList`1 diagnostics, CancellationToken cancellationToken) in D:\a\SharpLab\SharpLab\!roslyn-branches\dotnet-main\sharplab\source\Server\MirrorSharp\SlowUpdate.cs:line 139 at MirrorSharp.Internal.Handlers.SlowUpdateHandler.ExecuteAsync(AsyncData data, WorkSession session, ICommandResultSender sender, CancellationToken cancellationToken) in D:\a\SharpLab\SharpLab\!roslyn-branches\dotnet-main\sharplab\source\#external\mirrorsharp\Common\Internal\Handlers\SlowUpdateHandler.cs:line 39 at MirrorSharp.Internal.Connection.ReceiveAndProcessInternalAsync(CancellationToken cancellationToken) in D:\a\SharpLab\SharpLab\!roslyn-branches\dotnet-main\sharplab\source\#external\mirrorsharp\Common\Internal\Connection.cs:line 118 at MirrorSharp.Internal.Connection.ReceiveAndProcessAsync(CancellationToken cancellationToken) in D:\a\SharpLab\SharpLab\!roslyn-branches\dotnet-main\sharplab\source\#external\mirrorsharp\Common\Internal\Connection.cs:line 73
ashmind commented 2 years ago

Thanks for reporting! I can't currently reproduce this -- might be a temporary bug in some specific Roslyn version?