dotnet/roslyn

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

Open

#16,316 opened on Jan 7, 2017

View on GitHub
 (0 comments) (0 reactions) (0 assignees)C# (4,257 forks)batch import
Area-CompilersFeature - TuplesFeature Requesthelp wanted

Repository metrics

Stars
 (20,414 stars)
PR merge metrics
 (Avg merge 6d 17h) (256 merged PRs in 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

Contributor guide