Skip to content

Compiler crash: generic extension block with async method #78487

@jolaquai

Description

@jolaquai

Version Used:

.NET SDK:
 Version:           10.0.100-preview.3.25201.16
 Commit:            9dee3cf508
 Workload version:  10.0.100-manifests.ef4f854f
 MSBuild version:   17.14.0-preview-25177-05+903614e16

Runtime Environment:
 OS Name:     Windows
 OS Version:  10.0.26200
 OS Platform: Windows
 RID:         win-x64
 Base Path:   C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\

Microsoft Visual Studio Community 2022 (64-bit) - Preview Version 17.14.0 Preview 6.0

Steps to Reproduce:

  1. Create any project type
  2. Set <TargetFramework>net10.0</TargetFramework> and <LangVersion>preview</LangVersion>
  3. Write an extension block along the lines of:
extension<T>(Task<T> source)
{
    public async Task With()
    {
        await source;
    }
}
  1. Attempt a build.

Diagnostic Id: MSB6006 "csc.exe" exited with code -2146232797.

Building from Developer PS shows the following output.

pwsh>dotnet build
Restore complete (0.7s)
You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policy
  Random failed with 93 error(s) (8.4s)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error : Process terminated. System.Collections.Generic.KeyNotFoundException: The given key 'Microsoft.CodeAnalysis.CSharp.BoundAwaitableValuePlaceholder' was not present in the dictionary.
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.BoundTreeVisitor.VisitExpressionOrPatternWithStackGuard(Int32& recursionDepth, BoundNode node)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.MethodToStateMachineRewriter.Visit(BoundNode node)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.Symbols.MethodToClassRewriter.VisitCall(BoundCall node)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.BoundTreeVisitor.VisitExpressionOrPatternWithStackGuard(BoundNode node)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.BoundTreeVisitor.VisitExpressionOrPatternWithStackGuard(Int32& recursionDepth, BoundNode node)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.MethodToStateMachineRewriter.Visit(BoundNode node)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.AsyncMethodToStateMachineRewriter.VisitAwaitExpression(BoundAwaitExpression node, BoundExpression resultPlace)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.MethodToStateMachineRewriter.Visit(BoundNode node)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriter.VisitSequencePoint(BoundSequencePoint node)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.MethodToStateMachineRewriter.Visit(BoundNode node)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriter.DoVisitList[T](ImmutableArray`1 list)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.BoundTreeToDifferentEnclosingContextRewriter.VisitBlock(BoundBlock node, Boolean removeInstrumentation)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.MethodToStateMachineRewriter.PossibleIteratorScope(ImmutableArray`1 locals, Func`1 wrapped)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.MethodToStateMachineRewriter.Visit(BoundNode node)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.AsyncMethodToStateMachineRewriter.VisitBody(BoundStatement body)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.AsyncMethodToStateMachineRewriter.GenerateMoveNext(BoundStatement body, MethodSymbol moveNextMethod)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.AsyncRewriter.GenerateMoveNext(SynthesizedImplementationMethod moveNextMethod)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.AsyncRewriter.GenerateMethodImplementations()
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.StateMachineRewriter.Rewrite()
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.AsyncRewriter.Rewrite(BoundStatement bodyWithAwaitLifted, MethodSymbol method, Int32 methodOrdinal, ArrayBuilder`1 stateMachineStateDebugInfoBuilder, VariableSlotAllocator slotAllocatorOpt, TypeCompilationState compilationState, BindingDiagnosticBag diagnostics, AsyncStateMachine& stateMachineType)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.MethodCompiler.LowerBodyOrInitializer(MethodSymbol method, SourceExtensionImplementationMethodSymbol extensionImplementationMethod, 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)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileMethod(MethodSymbol methodSymbol, Int32 methodOrdinal, ProcessedFieldInitializers& processedInitializers, SynthesizedSubmissionFields previousSubmissionFields, TypeCompilationState compilationState)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileNamedType(NamedTypeSymbol containingType)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.MethodCompiler.<>c__DisplayClass25_0.<CompileNamedTypeAsync>b__0()
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at System.Environment.FailFast(System.Runtime.CompilerServices.StackCrawlMarkHandle, System.String, System.Runtime.CompilerServices.ObjectHandleOnStack, System.String)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at System.Environment.FailFast(System.Threading.StackCrawlMark ByRef, System.String, System.Exception, System.String)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at System.Environment.FailFast(System.String, System.Exception)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.FailFast.OnFatalException(System.Exception)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.ErrorReporting.FatalError.Report(System.Exception, Microsoft.CodeAnalysis.ErrorReporting.ErrorSeverity, Boolean)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.ErrorReporting.FatalError.ReportAndPropagateUnlessCanceled(System.Exception, Microsoft.CodeAnalysis.ErrorReporting.ErrorSeverity)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.MethodCompiler+<>c__DisplayClass25_0.<CompileNamedTypeAsync>b__0()
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at System.Runtime.EH.FindFirstPassHandler(System.Object, UInt32, System.Runtime.StackFrameIterator ByRef, UInt32 ByRef, Byte* ByRef)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at System.Runtime.EH.DispatchEx(System.Runtime.StackFrameIterator ByRef, ExInfo ByRef)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at System.Runtime.EH.RhThrowEx(System.Object, ExInfo ByRef)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at System.ThrowHelper.ThrowKeyNotFoundException[[System.__Canon, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]](System.__Canon)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at System.Collections.Generic.Dictionary`2[[System.__Canon, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.__Canon, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].get_Item(System.__Canon)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.BoundTreeVisitor.VisitExpressionOrPatternWithStackGuard(Int32 ByRef, Microsoft.CodeAnalysis.CSharp.BoundNode)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.MethodToStateMachineRewriter.Visit(Microsoft.CodeAnalysis.CSharp.BoundNode)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.Symbols.MethodToClassRewriter.VisitCall(Microsoft.CodeAnalysis.CSharp.BoundCall)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.BoundTreeVisitor.VisitExpressionOrPatternWithStackGuard(Microsoft.CodeAnalysis.CSharp.BoundNode)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.BoundTreeVisitor.VisitExpressionOrPatternWithStackGuard(Int32 ByRef, Microsoft.CodeAnalysis.CSharp.BoundNode)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.MethodToStateMachineRewriter.Visit(Microsoft.CodeAnalysis.CSharp.BoundNode)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.AsyncMethodToStateMachineRewriter.VisitAwaitExpression(Microsoft.CodeAnalysis.CSharp.BoundAwaitExpression, Microsoft.CodeAnalysis.CSharp.BoundExpression)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.MethodToStateMachineRewriter.Visit(Microsoft.CodeAnalysis.CSharp.BoundNode)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriter.VisitSequencePoint(Microsoft.CodeAnalysis.CSharp.BoundSequencePoint)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.MethodToStateMachineRewriter.Visit(Microsoft.CodeAnalysis.CSharp.BoundNode)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriter.DoVisitList[[System.__Canon, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]](System.Collections.Immutable.ImmutableArray`1<System.__Canon>)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.BoundTreeToDifferentEnclosingContextRewriter.VisitBlock(Microsoft.CodeAnalysis.CSharp.BoundBlock, Boolean)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.MethodToStateMachineRewriter.PossibleIteratorScope(System.Collections.Immutable.ImmutableArray`1<Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol>, System.Func`1<Microsoft.CodeAnalysis.CSharp.BoundStatement>)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.MethodToStateMachineRewriter.Visit(Microsoft.CodeAnalysis.CSharp.BoundNode)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.AsyncMethodToStateMachineRewriter.VisitBody(Microsoft.CodeAnalysis.CSharp.BoundStatement)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.AsyncMethodToStateMachineRewriter.GenerateMoveNext(Microsoft.CodeAnalysis.CSharp.BoundStatement, Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.AsyncRewriter.GenerateMoveNext(Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedImplementationMethod)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.AsyncRewriter.GenerateMethodImplementations()
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.StateMachineRewriter.Rewrite()
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.AsyncRewriter.Rewrite(Microsoft.CodeAnalysis.CSharp.BoundStatement, Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol, Int32, Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1<Microsoft.CodeAnalysis.CodeGen.StateMachineStateDebugInfo>, Microsoft.CodeAnalysis.CodeGen.VariableSlotAllocator, Microsoft.CodeAnalysis.CSharp.TypeCompilationState, Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag, Microsoft.CodeAnalysis.CSharp.AsyncStateMachine ByRef)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.MethodCompiler.LowerBodyOrInitializer(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol, Microsoft.CodeAnalysis.CSharp.Symbols.SourceExtensionImplementationMethodSymbol, 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<Microsoft.CodeAnalysis.CodeGen.SourceSpan> ByRef, Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag, Microsoft.CodeAnalysis.CodeGen.VariableSlotAllocator ByRef, Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1<Microsoft.CodeAnalysis.Emit.EncLambdaInfo>, Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1<Microsoft.CodeAnalysis.CodeGen.LambdaRuntimeRudeEditInfo>, Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1<Microsoft.CodeAnalysis.Emit.EncClosureInfo>, Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1<Microsoft.CodeAnalysis.CodeGen.StateMachineStateDebugInfo>, Microsoft.CodeAnalysis.CSharp.StateMachineTypeSymbol ByRef)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,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:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileNamedType(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.MethodCompiler+<>c__DisplayClass25_0.<CompileNamedTypeAsync>b__0()
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(System.Threading.Thread, System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at System.Threading.Tasks.Task.ExecuteWithThreadLocal(System.Threading.Tasks.Task ByRef, System.Threading.Thread)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at System.Threading.ThreadPoolWorkQueue.Dispatch()
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at System.Threading.PortableThreadPool+WorkerThread.WorkerThreadStart()
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at System.Threading.Thread+StartHelper.RunWorker()
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error : System.Collections.Generic.KeyNotFoundException: The given key 'Microsoft.CodeAnalysis.CSharp.BoundAwaitableValuePlaceholder' was not present in the dictionary.
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.BoundTreeVisitor.VisitExpressionOrPatternWithStackGuard(Int32& recursionDepth, BoundNode node)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.MethodToStateMachineRewriter.Visit(BoundNode node)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.Symbols.MethodToClassRewriter.VisitCall(BoundCall node)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.BoundTreeVisitor.VisitExpressionOrPatternWithStackGuard(BoundNode node)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.BoundTreeVisitor.VisitExpressionOrPatternWithStackGuard(Int32& recursionDepth, BoundNode node)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.MethodToStateMachineRewriter.Visit(BoundNode node)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.AsyncMethodToStateMachineRewriter.VisitAwaitExpression(BoundAwaitExpression node, BoundExpression resultPlace)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.MethodToStateMachineRewriter.Visit(BoundNode node)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriter.VisitSequencePoint(BoundSequencePoint node)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.MethodToStateMachineRewriter.Visit(BoundNode node)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.BoundTreeRewriter.DoVisitList[T](ImmutableArray`1 list)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.BoundTreeToDifferentEnclosingContextRewriter.VisitBlock(BoundBlock node, Boolean removeInstrumentation)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.MethodToStateMachineRewriter.PossibleIteratorScope(ImmutableArray`1 locals, Func`1 wrapped)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.MethodToStateMachineRewriter.Visit(BoundNode node)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.AsyncMethodToStateMachineRewriter.VisitBody(BoundStatement body)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.AsyncMethodToStateMachineRewriter.GenerateMoveNext(BoundStatement body, MethodSymbol moveNextMethod)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.AsyncRewriter.GenerateMoveNext(SynthesizedImplementationMethod moveNextMethod)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.AsyncRewriter.GenerateMethodImplementations()
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.StateMachineRewriter.Rewrite()
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.AsyncRewriter.Rewrite(BoundStatement bodyWithAwaitLifted, MethodSymbol method, Int32 methodOrdinal, ArrayBuilder`1 stateMachineStateDebugInfoBuilder, VariableSlotAllocator slotAllocatorOpt, TypeCompilationState compilationState, BindingDiagnosticBag diagnostics, AsyncStateMachine& stateMachineType)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.MethodCompiler.LowerBodyOrInitializer(MethodSymbol method, SourceExtensionImplementationMethodSymbol extensionImplementationMethod, 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)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileMethod(MethodSymbol methodSymbol, Int32 methodOrdinal, ProcessedFieldInitializers& processedInitializers, SynthesizedSubmissionFields previousSubmissionFields, TypeCompilationState compilationState)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileNamedType(NamedTypeSymbol containingType)
    C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\Roslyn\Microsoft.CSharp.Core.targets(84,5): error :    at Microsoft.CodeAnalysis.CSharp.MethodCompiler.<>c__DisplayClass25_0.<CompileNamedTypeAsync>b__0()

Build failed with 93 error(s) in 9.5s

A static version that merely uses T will not compile either:

extension<T>(Task<T>)
{
    public static async Task AStatic()
    {
        await Task.FromResult(default(T));
    }
}

Expected Behavior: The code compiles.

Actual Behavior: csc.exe crashes (well, technically it's dotnet.exe from a dotnet.exe exec "[...]\csc.dll" call).

Interestingly, removing the type parameter from the extension block "fixes" the issue and the build succeeds. Obviously, same when you remove the need for the async state machine (i.e. remove the await and the build succeeds since (I'm assuming) the call into Microsoft.CodeAnalysis.CSharp.AsyncRewriter.Rewrite doesn't happen).

EDIT: Forgot to mention, legacy version of implementing that silly extension compiles fine:

public static async Task With<T>(this Task<T> source)
{
    await source;
}
pwsh>dotnet build -v diag
C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\MSBuild.dll -nologo -consoleloggerparameters:Summary -distributedlogger:Microsoft.DotNet.Tools.MSBuild.MSBuildLogger,C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\dotnet.dll*Microsoft.DotNet.Tools.MSBuild.MSBuildForwardingLogger,C:\Program Files\dotnet\sdk\10.0.100-preview.3.25201.16\dotnet.dll -maxcpucount -property:NuGetInteractive=false -restore -tlp:default=auto -verbosity:m -verbosity:diag .\Random.csproj
Restore complete (0.4s)
    Determining projects to restore...
    All projects are up-to-date for restore.
You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policy
  Random succeeded (0.3s) → bin\Debug\net10.0\Random.dll

Build succeeded in 1.0s

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions