dotnet/roslyn

CLR bug with static variable in struct could be warned by the compiler

Open

#10.126 geöffnet am 26. März 2016

Auf GitHub ansehen
 (27 Kommentare) (2 Reaktionen) (0 zugewiesene Personen)C# (4.257 Forks)batch import
Area-CompilersFeature - Warning WavesFeature Requesthelp wanted

Repository-Metriken

Stars
 (20.414 Stars)
PR-Merge-Metriken
 (Durchschn. Merge 6T 17h) (256 gemergte PRs in 30 T)

Beschreibung

The following code compiles, but throws a TypeLoadException when executed.

using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            var x = MyStruct.Empty;
        }

        public struct MyStruct
        {
            public static readonly MyStruct? Empty = null;
        }
    }
}

Since Empty is static, this is not a cyclic struct layout issue. It would be nice if the compiler produced warnings that tells you that you are likely to run into this CLR bug at runtime

[Note from @gafter this is due to CLR bug https://github.com/dotnet/coreclr/issues/4049. See also https://github.com/dotnet/coreclr/issues/7957 and https://github.com/dotnet/coreclr/issues/22553 for other situations where the warning would be helpful]

Contributor Guide