dotnet/roslyn

Semantic model: Should GetSymbolInfo on `var _` return an IDiscardSymbol?

Open

#16.316 aberto em 7 de jan. de 2017

Ver no GitHub
 (0 comments) (0 reactions) (0 assignees)C# (4.257 forks)batch import
Area-CompilersFeature - TuplesFeature 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

Currently, GetSymbolInfo will return null in this case. The only scenario where a discard symbol is returned is with the _ identifier/expression.

   [Fact]
        public void VariousDiscardsInForeach()
        {
            var source =
@"
class C
{
    static void Main()
    {
        foreach ((var _, int _, _, var (_, _), int x) in new[] { (1L, 2, 3, (""hello"", 5), 6) })
        {
            System.Console.Write(x);
        }
    }
}
";
            var comp = CreateCompilationWithMscorlib(source, options: TestOptions.DebugExe, references: s_valueTupleRefs);
            var tree = comp.SyntaxTrees.First();
            var model = comp.GetSemanticModel(tree);

            var discard1 = GetDiscardDesignations(tree).First();
            Assert.Null(model.GetSymbolInfo(declaration1).Symbol); // should return a discard symbol instead?
        }

FYI @AlekseyTs @gafter Related to https://github.com/dotnet/roslyn/pull/16153

Guia do colaborador