dotnet/roslyn

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

Open

#10.126 aberto em 26 de mar. de 2016

Ver no GitHub
 (27 comments) (2 reactions) (0 assignees)C# (4.257 forks)batch import
Area-CompilersFeature - Warning WavesFeature Requesthelp wanted

Métricas do repositório

Stars
 (20.414 stars)
Métricas de merge de PR
 (Mesclagem média 6d 17h) (256 fundiu PRs em 30d)

Description

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]

Guia do colaborador