dotnet/roslyn

IDE0016 codefix can change behaviour

Aperta

#36.177 aperta il 5 giu 2019

 (13 commenti) (0 reazioni) (0 assegnatari)C# (4257 fork)batch import
Area-AnalyzersBugFeature - IDE0016help wanted

Metriche repository

Star
 (20.414 stelle)
Metriche merge PR
 (Merge medio 6g 17h) (256 PR mergiate in 30 g)

Descrizione

Version Used: 16.1.1+28922.388

Steps to Reproduce:

object _o;
bool _b;
void M(object o)
{
    if (o == null)
        throw new ArgumentNullException(nameof(o));
    _b = true;
    _o = o;
}

IDE0016 fires and wants to change the code to:

object _o;
bool _b;
void M(object o)
{
    _b = true;
    _o = o ?? throw new ArgumentNullException(nameof(o));
}

Expected Behavior:

No change in behaviour.

Actual Behavior:

Potential change in behaviour due to throw being moved after side effecty code.

Guida contributor