dotnet/roslyn

Property patterns and dynamic

Ouverte

#28 933 ouverte le 29 juil. 2018

 (3 commentaires) (0 réaction) (0 personne assignée)C# (4 257 forks)batch import
Area-CompilersBugConcept-Diagnostic ClarityFeature - Pattern Matchinghelp wanted

Métriques du dépôt

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

Description

Version Used: SharpLab for branch features/recursive-patterns from 24 Jul 2018 (commit b364cfc)

Steps to Reproduce:

Try to compile the following code:

class C
{
    void M(dynamic o)
    {
        _ = o is { Foo: 42 };
    }
}

Expected Behavior:

Since code like o is { Foo: 42 } normally compiles to the equivalent of o != null && o.Foo == 42 and since that code is valid for o of type dynamic, I would expect the above method to compile.

Actual Behavior:

error CS0117: 'dynamic' does not contain a definition for 'Foo'

I think the error message is somewhat confusing, because the whole point of dynamic is that it's not checked at compile time whether a member exists.


As usual with work-in-progress features, it's not clear to me if this is by design, not implemented yet, just a confusing error message or an actual bug, so feel free to handle this issue accordingly.

Guide contributeur