dotnet/roslyn

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

Ouverte

#45 421 ouverte le 24 juin 2020

 (1 commentaire) (0 réaction) (0 personne assignée)C# (4 257 forks)batch import
Area-IDEBugFeature - IDE0059help 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: 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)

Guide contributeur