dotnet/roslyn

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

Open

#16 316 ouverte le 7 janv. 2017

Voir sur GitHub
 (0 commentaires) (0 réactions) (0 assignés)C# (4 257 forks)batch import
Area-CompilersFeature - TuplesFeature Requesthelp wanted

Métriques du dépôt

Stars
 (20 414 stars)
Métriques de merge PR
 (Merge moyen 6j 17h) (256 PRs mergées en 30 j)

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

Guide contributeur