dotnet/roslyn

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

开放

#45,421 创建于 2020年6月24日

 (1 条评论) (0 个反应) (0 位负责人)C# (4,257 个派生)batch import
Area-IDEBugFeature - IDE0059help wanted

仓库指标

星标
 (20,414 个星标)
PR 合并指标
 (平均合并 6天 17小时) (30 天内合并 256 个 PR)

描述

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)

贡献者指南