dotnet / roslyn

The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.
https://docs.microsoft.com/dotnet/csharp/roslyn-sdk/
MIT License
18.71k stars 3.98k forks source link

EnforceCodeStyleInBuild causes Roslyn to crash in ProduceOnlyReferenceAssembly projects #51660

Open alexrp opened 3 years ago

alexrp commented 3 years ago

Version Used:

.NET SDK (reflecting any global.json):
 Version:   6.0.100-preview.1.21103.13
 Commit:    b8a03527b2

Runtime Environment:
 OS Name:     ubuntu
 OS Version:  20.10
 OS Platform: Linux
 RID:         ubuntu.20.10-x64
 Base Path:   /home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/

Host (useful for support):
  Version: 6.0.0-preview.1.21102.12
  Commit:  9b2776d481

Steps to Reproduce:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
    <ProduceOnlyReferenceAssembly>true</ProduceOnlyReferenceAssembly>
    <ProduceReferenceAssembly>false</ProduceReferenceAssembly>
    <TargetFramework>net6.0</TargetFramework>
  </PropertyGroup>
</Project>
using System;

namespace roslyn_crash
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
        }
    }
}

Expected Behavior:

Compiles without errors.

Actual Behavior:

Microsoft (R) Build Engine version 16.9.0-preview-21103-02+198f3f262 for .NET
Copyright (C) Microsoft Corporation. All rights reserved.

  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-core-preview
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error : Process terminated. System.InvalidOperationException: Cannot enqueue data after PromiseNotToEnqueue. [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at Microsoft.CodeAnalysis.Diagnostics.AsyncQueue`1.EnqueueCore(TElement value) [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at Microsoft.CodeAnalysis.Diagnostics.AsyncQueue`1.TryEnqueue(TElement value) [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileMethod(MethodSymbol methodSymbol, Int32 methodOrdinal, ProcessedFieldInitializers& processedInitializers, SynthesizedSubmissionFields previousSubmissionFields, TypeCompilationState compilationState) [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileNamedType(NamedTypeSymbol containingType) [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at Microsoft.CodeAnalysis.CSharp.MethodCompiler.<>c__DisplayClass22_0.<CompileNamedTypeAsync>b__0() [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at System.Environment.FailFast(System.String, System.Exception) [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at Microsoft.CodeAnalysis.FailFast.OnFatalException(System.Exception) [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at Microsoft.CodeAnalysis.FatalError.Report(System.Exception, System.Action`1<System.Exception>) [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at Microsoft.CodeAnalysis.FatalError.ReportAndPropagateUnlessCanceled(System.Exception) [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at Microsoft.CodeAnalysis.CSharp.MethodCompiler+<>c__DisplayClass22_0.<CompileNamedTypeAsync>b__0() [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at Microsoft.CodeAnalysis.Diagnostics.AsyncQueue`1[[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].EnqueueCore(System.__Canon) [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at Microsoft.CodeAnalysis.Diagnostics.AsyncQueue`1[[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].TryEnqueue(System.__Canon) [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileMethod(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol, Int32, ProcessedFieldInitializers ByRef, Microsoft.CodeAnalysis.CSharp.SynthesizedSubmissionFields, Microsoft.CodeAnalysis.CSharp.TypeCompilationState) [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileNamedType(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol) [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at Microsoft.CodeAnalysis.CSharp.MethodCompiler+<>c__DisplayClass22_0.<CompileNamedTypeAsync>b__0() [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at Roslyn.Utilities.UICultureUtilities+<>c__DisplayClass5_0.<WithCurrentUICulture>b__0() [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at System.Threading.Tasks.Task.InnerInvoke() [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at System.Threading.Tasks.Task+<>c.<.cctor>b__278_0(System.Object) [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(System.Threading.Thread, System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at System.Threading.Tasks.Task.ExecuteWithThreadLocal(System.Threading.Tasks.Task ByRef, System.Threading.Thread) [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at System.Threading.Tasks.Task.ExecuteEntryUnsafe(System.Threading.Thread) [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at System.Threading.Tasks.Task.ExecuteFromThreadPool(System.Threading.Thread) [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at System.Threading.ThreadPoolWorkQueue.Dispatch() [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at System.Threading.PortableThreadPool+WorkerThread.WorkerThreadStart() [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at System.Threading.Thread.StartCallback() [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error : System.InvalidOperationException: Cannot enqueue data after PromiseNotToEnqueue. [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at Microsoft.CodeAnalysis.Diagnostics.AsyncQueue`1.EnqueueCore(TElement value) [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at Microsoft.CodeAnalysis.Diagnostics.AsyncQueue`1.TryEnqueue(TElement value) [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileMethod(MethodSymbol methodSymbol, Int32 methodOrdinal, ProcessedFieldInitializers& processedInitializers, SynthesizedSubmissionFields previousSubmissionFields, TypeCompilationState compilationState) [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileNamedType(NamedTypeSymbol containingType) [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at Microsoft.CodeAnalysis.CSharp.MethodCompiler.<>c__DisplayClass22_0.<CompileNamedTypeAsync>b__0() [/home/alexrp/roslyn-crash/roslyn-crash.csproj]

Build FAILED.

/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error : Process terminated. System.InvalidOperationException: Cannot enqueue data after PromiseNotToEnqueue. [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at Microsoft.CodeAnalysis.Diagnostics.AsyncQueue`1.EnqueueCore(TElement value) [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at Microsoft.CodeAnalysis.Diagnostics.AsyncQueue`1.TryEnqueue(TElement value) [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileMethod(MethodSymbol methodSymbol, Int32 methodOrdinal, ProcessedFieldInitializers& processedInitializers, SynthesizedSubmissionFields previousSubmissionFields, TypeCompilationState compilationState) [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileNamedType(NamedTypeSymbol containingType) [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at Microsoft.CodeAnalysis.CSharp.MethodCompiler.<>c__DisplayClass22_0.<CompileNamedTypeAsync>b__0() [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at System.Environment.FailFast(System.String, System.Exception) [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at Microsoft.CodeAnalysis.FailFast.OnFatalException(System.Exception) [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at Microsoft.CodeAnalysis.FatalError.Report(System.Exception, System.Action`1<System.Exception>) [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at Microsoft.CodeAnalysis.FatalError.ReportAndPropagateUnlessCanceled(System.Exception) [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at Microsoft.CodeAnalysis.CSharp.MethodCompiler+<>c__DisplayClass22_0.<CompileNamedTypeAsync>b__0() [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at Microsoft.CodeAnalysis.Diagnostics.AsyncQueue`1[[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].EnqueueCore(System.__Canon) [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at Microsoft.CodeAnalysis.Diagnostics.AsyncQueue`1[[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].TryEnqueue(System.__Canon) [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileMethod(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol, Int32, ProcessedFieldInitializers ByRef, Microsoft.CodeAnalysis.CSharp.SynthesizedSubmissionFields, Microsoft.CodeAnalysis.CSharp.TypeCompilationState) [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileNamedType(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol) [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at Microsoft.CodeAnalysis.CSharp.MethodCompiler+<>c__DisplayClass22_0.<CompileNamedTypeAsync>b__0() [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at Roslyn.Utilities.UICultureUtilities+<>c__DisplayClass5_0.<WithCurrentUICulture>b__0() [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at System.Threading.Tasks.Task.InnerInvoke() [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at System.Threading.Tasks.Task+<>c.<.cctor>b__278_0(System.Object) [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(System.Threading.Thread, System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at System.Threading.Tasks.Task.ExecuteWithThreadLocal(System.Threading.Tasks.Task ByRef, System.Threading.Thread) [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at System.Threading.Tasks.Task.ExecuteEntryUnsafe(System.Threading.Thread) [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at System.Threading.Tasks.Task.ExecuteFromThreadPool(System.Threading.Thread) [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at System.Threading.ThreadPoolWorkQueue.Dispatch() [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at System.Threading.PortableThreadPool+WorkerThread.WorkerThreadStart() [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at System.Threading.Thread.StartCallback() [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error : System.InvalidOperationException: Cannot enqueue data after PromiseNotToEnqueue. [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at Microsoft.CodeAnalysis.Diagnostics.AsyncQueue`1.EnqueueCore(TElement value) [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at Microsoft.CodeAnalysis.Diagnostics.AsyncQueue`1.TryEnqueue(TElement value) [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileMethod(MethodSymbol methodSymbol, Int32 methodOrdinal, ProcessedFieldInitializers& processedInitializers, SynthesizedSubmissionFields previousSubmissionFields, TypeCompilationState compilationState) [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileNamedType(NamedTypeSymbol containingType) [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
/home/alexrp/.dotnet/sdk/6.0.100-preview.1.21103.13/Roslyn/Microsoft.CSharp.Core.targets(71,5): error :    at Microsoft.CodeAnalysis.CSharp.MethodCompiler.<>c__DisplayClass22_0.<CompileNamedTypeAsync>b__0() [/home/alexrp/roslyn-crash/roslyn-crash.csproj]
    0 Warning(s)
    32 Error(s)

Time Elapsed 00:00:02.63
Youssef1313 commented 3 years ago

Similar issue is encountered in mono, but it doesn't involve EnforceCodeStyleInBuild.

https://github.com/mono/linker/blob/d948ae4bac935b45aa432b6550d8987678c29aa3/src/linker/ref/Mono.Linker.csproj#L8

For reference: https://github.com/dotnet/roslyn/issues/44000

jaredpar commented 3 years ago

@jcouv can you take a look? Appears to be related to reference assemblies.

jcouv commented 2 years ago

Isolated a repro. See below. This happens with /refonly when an analyzer pulls on diagnostics. It must be repro'ed as a command-line test to hit CommonCompiler.CompileAndEmit, which first emits the output (without emitting method bodies), then marks the event queue as completed (PromiseNotToEnqueue), then let's the analyzer process the "compilation completed" event. When the analyzer calls GetDiagnostics, that binds method bodies which attempts to queue some events (which is disallowed by now). From discussion with Aleksey, I should understand what is the event that is triggering the exception, to see whether it should have been reported during declaration/emit phase or not. Then there is the question of whether we should run analyzers in /refonly compilation.

PS: also need to consider whether source generator might be impacted.


        [Fact]
        public void RefAssembly_AnalyzerGetsDiagnostics()
        {
            var errorLog = Temp.CreateFile();
            var dir = Temp.CreateDirectory();

            var srcFile = dir.CreateFile("source.cs").WriteAllText(@"
using System;

class Program
{
    static void Main()
    {
        Console.WriteLine(42);
    }
}
");
            var csc = CreateCSharpCompiler(
                null,
                workingDirectory: dir.Path,
                args: new[] { "/errorlog:" + errorLog.Path, "/warnaserror+", "/nologo", "/t:library", "/refonly", "source.cs" },
                analyzers: ImmutableArray.Create<DiagnosticAnalyzer>(new RefAssembly_AnalyzerGetsDiagnostics_Analyzer()));

            var outWriter = new StringWriter(CultureInfo.InvariantCulture);
            var exitCode = csc.Run(outWriter);

            Assert.Empty(outWriter.ToString());
            Assert.Equal(0, exitCode);

            CleanupAllGeneratedFiles(srcFile.Path);
            CleanupAllGeneratedFiles(errorLog.Path);
            CleanupAllGeneratedFiles(dir.Path);
        }

        private class RefAssembly_AnalyzerGetsDiagnostics_Analyzer : DiagnosticAnalyzer
        {
            public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics => ImmutableArray.Create(s_descriptor1, s_descriptor2);

            private static readonly DiagnosticDescriptor s_descriptor1 = new DiagnosticDescriptor(id: "CA9999_NullabilityPrinter", title: "CA9999_NullabilityPrinter", messageFormat: "Nullability of '{0}' is '{1}':'{2}'. Speculative flow state is '{3}'", category: "Test", defaultSeverity: DiagnosticSeverity.Warning, isEnabledByDefault: true);
            private static readonly DiagnosticDescriptor s_descriptor2 = new DiagnosticDescriptor(id: "CA9998_NullabilityPrinter", title: "CA9998_NullabilityPrinter", messageFormat: "Declared nullability of '{0}' is '{1}'", category: "Test", defaultSeverity: DiagnosticSeverity.Warning, isEnabledByDefault: true);

            public override void Initialize(AnalysisContext context)
            {
                context.RegisterSemanticModelAction(context =>
                {
                    var diag = context.SemanticModel.GetDiagnostics();
                });
            }
        }

Using refonly-repro branch

AraHaan commented 2 years ago

I see now how I broke the compiler on some of my reference only projects as well.

I think what has to happen is to not use analyzers on my reference only projects at all, but I wanted to have them at least use stylecop to enforce docs on public members on the reference only version of the code.