dotnet/roslyn

Confusing error when assigning result of ref readonly-returning method to a ref local

Aberta

#28.653 aberto em 18 de jul. de 2018

 (0 comentário) (0 reação) (0 responsável)C# (4.257 forks)batch import
Area-CompilersBugConcept-Diagnostic Clarityhelp wanted

Métricas do repositório

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

Description

Version Used: 2.8.2; master from 14 July 2018 (c4189de08b943f87d9f03d45ef01e615800e359d)

Steps to Reproduce:

Try to assign the result of a ref readonly-returning method to a non-readonly ref local:

class C
{
    void M()
    {
        ref int x = ref Bar();
    }
    
    ref readonly int Bar() => throw null;
}

Actual Behavior:

error CS8329: Cannot use method 'C.Bar()' as a ref or out value because it is a readonly variable

I think this is not a good error message because:

  1. It's not correct: method is not a variable.
  2. It does not explain well what the error is and how to fix it.

Guia do colaborador