dotnet/roslyn

Code fix for IDE0059 "Remove unnecessary assignment" removes empty lines or reorders code

Aperta

#45.421 aperta il 24 giu 2020

 (1 commento) (0 reazioni) (0 assegnatari)C# (4257 fork)batch import
Area-IDEBugFeature - IDE0059help wanted

Metriche repository

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

Descrizione

Version Used: 16.6.2

Steps to Reproduce:

public class Test
{
    public long M(bool flag)
    {
        long a = 0; // IDE0059
        long b = 0; // IDE0059
        long c = 0; // IDE0059

        if (flag)
        {
            a = 1;
            b = 1;
            c = 1;
        }
        else
        {
            a = 2;
            b = 2;
            c = 2;
        }

        return a + b + c;
    }
}
  1. Run "Remove unnecessary assignment" for c
  2. Run "Remove unnecessary assignment" for b

Expected Behavior:

In both steps, the = 0 characters should be removed

         long a = 0; // IDE0059
-        long b = 0; // IDE0059
-        long c = 0; // IDE0059
+        long b; // IDE0059
+        long c; // IDE0059
 
         if (flag)

Actual Behavior:

After running "Remove unnecessary assignment" for c, the empty line below the declaration and the comment is also removed:

         long a = 0; // IDE0059
         long b = 0; // IDE0059
-        long c = 0; // IDE0059
-
+        long c;
         if (flag)

After then running "Remove unnecessary assignment" for b , the b and c declarations are reordered and the comment is removed:

         long a = 0; // IDE0059
-        long b = 0; // IDE0059
-        long c = 0; // IDE0059
-
+        long c;
+        long b;
         if (flag)

Guida contributor