提交 f9029c7c 编写于 作者: C CyrusNajmabadi

Get merge comments working well.

上级 acc32d10
......@@ -630,5 +630,593 @@ void M()
}
}");
}
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsMoveDeclarationNearReference)]
public async Task TestComments01()
{
await TestInRegularAndScriptAsync(
@"class Program
{
static void Main(string[] args)
{
// leading trivia
int [||]i = 5;
Console.WriteLine();
Console.Write(i);
}
}",
@"class Program
{
static void Main(string[] args)
{
Console.WriteLine();
// leading trivia
int i = 5;
Console.Write(i);
}
}",
ignoreTrivia: false);
}
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsMoveDeclarationNearReference)]
public async Task TestComments02()
{
await TestInRegularAndScriptAsync(
@"class Program
{
static void Main(string[] args)
{
// leading trivia
int [||]i = 5;
Console.WriteLine();
{
Console.Write(i);
}
}
}",
@"class Program
{
static void Main(string[] args)
{
Console.WriteLine();
{
// leading trivia
int i = 5;
Console.Write(i);
}
}
}",
ignoreTrivia: false);
}
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsMoveDeclarationNearReference)]
public async Task TestComments03()
{
await TestInRegularAndScriptAsync(
@"class Program
{
static void Main(string[] args)
{
// leading trivia
int [||]i = 5;
Console.WriteLine();
// Existing trivia
Console.Write(i);
}
}",
@"class Program
{
static void Main(string[] args)
{
Console.WriteLine();
// leading trivia
int i = 5;
// Existing trivia
Console.Write(i);
}
}",
ignoreTrivia: false);
}
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsMoveDeclarationNearReference)]
public async Task TestComments04()
{
await TestInRegularAndScriptAsync(
@"class Program
{
static void Main(string[] args)
{
// leading trivia
int [||]i = 5;
Console.WriteLine();
{
// Existing trivia
Console.Write(i);
}
}
}",
@"class Program
{
static void Main(string[] args)
{
Console.WriteLine();
{
// leading trivia
int i = 5;
// Existing trivia
Console.Write(i);
}
}
}",
ignoreTrivia: false);
}
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsMoveDeclarationNearReference)]
public async Task TestComments05()
{
await TestInRegularAndScriptAsync(
@"class Program
{
static void Main(string[] args)
{
if (false)
{
}
// leading trivia
int [||]i = 5;
Console.WriteLine();
i = 0;
Console.Write(i);
}
}",
@"class Program
{
static void Main(string[] args)
{
if (false)
{
}
Console.WriteLine();
// leading trivia
int i = 0;
Console.Write(i);
}
}",
ignoreTrivia: false);
}
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsMoveDeclarationNearReference)]
public async Task TestComments06()
{
await TestInRegularAndScriptAsync(
@"class Program
{
static void Main(string[] args)
{
if (false)
{
}
// leading trivia
int [||]i = 5;
Console.WriteLine();
{
i = 0;
Console.Write(i);
}
}
}",
@"class Program
{
static void Main(string[] args)
{
if (false)
{
}
Console.WriteLine();
{
// leading trivia
int i = 0;
Console.Write(i);
}
}
}",
ignoreTrivia: false);
}
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsMoveDeclarationNearReference)]
public async Task TestComments07()
{
await TestInRegularAndScriptAsync(
@"class Program
{
static void Main(string[] args)
{
if (false)
{
}
// leading trivia
int [||]i = 5;
Console.WriteLine();
// Existing trivia
i = 0;
Console.Write(i);
}
}",
@"class Program
{
static void Main(string[] args)
{
if (false)
{
}
Console.WriteLine();
// leading trivia
// Existing trivia
int i = 0;
Console.Write(i);
}
}",
ignoreTrivia: false);
}
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsMoveDeclarationNearReference)]
public async Task TestComments08()
{
await TestInRegularAndScriptAsync(
@"class Program
{
static void Main(string[] args)
{
if (false)
{
}
// leading trivia
int [||]i = 5;
Console.WriteLine();
{
// Existing trivia
i = 0;
Console.Write(i);
}
}
}",
@"class Program
{
static void Main(string[] args)
{
if (false)
{
}
Console.WriteLine();
{
// leading trivia
// Existing trivia
int i = 0;
Console.Write(i);
}
}
}",
ignoreTrivia: false);
}
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsMoveDeclarationNearReference)]
public async Task TestMergeComments01()
{
await TestInRegularAndScriptAsync(
@"class Program
{
static void Main(string[] args)
{
// leading trivia
int [||]i = 5;
Console.WriteLine();
i = 0;
Console.Write(i);
}
}",
@"class Program
{
static void Main(string[] args)
{
Console.WriteLine();
// leading trivia
int i = 0;
Console.Write(i);
}
}",
ignoreTrivia: false);
}
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsMoveDeclarationNearReference)]
public async Task TestMergeComments02()
{
await TestInRegularAndScriptAsync(
@"class Program
{
static void Main(string[] args)
{
// leading trivia
int [||]i = 5;
Console.WriteLine();
{
i = 0;
Console.Write(i);
}
}
}",
@"class Program
{
static void Main(string[] args)
{
Console.WriteLine();
{
// leading trivia
int i = 0;
Console.Write(i);
}
}
}",
ignoreTrivia: false);
}
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsMoveDeclarationNearReference)]
public async Task TestMergeComments03()
{
await TestInRegularAndScriptAsync(
@"class Program
{
static void Main(string[] args)
{
// leading trivia
int [||]i = 5;
Console.WriteLine();
// Existing trivia
i = 0;
Console.Write(i);
}
}",
@"class Program
{
static void Main(string[] args)
{
Console.WriteLine();
// leading trivia
// Existing trivia
int i = 0;
Console.Write(i);
}
}",
ignoreTrivia: false);
}
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsMoveDeclarationNearReference)]
public async Task TestMergeComments04()
{
await TestInRegularAndScriptAsync(
@"class Program
{
static void Main(string[] args)
{
// leading trivia
int [||]i = 5;
Console.WriteLine();
{
// Existing trivia
i = 0;
Console.Write(i);
}
}
}",
@"class Program
{
static void Main(string[] args)
{
Console.WriteLine();
{
// leading trivia
// Existing trivia
int i = 0;
Console.Write(i);
}
}
}",
ignoreTrivia: false);
}
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsMoveDeclarationNearReference)]
public async Task TestMergeComments05()
{
await TestInRegularAndScriptAsync(
@"class Program
{
static void Main(string[] args)
{
if (true)
{
}
// leading trivia
int [||]i = 5;
Console.WriteLine();
i = 0;
Console.Write(i);
}
}",
@"class Program
{
static void Main(string[] args)
{
if (true)
{
}
Console.WriteLine();
// leading trivia
int i = 0;
Console.Write(i);
}
}",
ignoreTrivia: false);
}
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsMoveDeclarationNearReference)]
public async Task TestMergeComments06()
{
await TestInRegularAndScriptAsync(
@"class Program
{
static void Main(string[] args)
{
if (true)
{
}
// leading trivia
int [||]i = 5;
Console.WriteLine();
{
i = 0;
Console.Write(i);
}
}
}",
@"class Program
{
static void Main(string[] args)
{
if (true)
{
}
Console.WriteLine();
{
// leading trivia
int i = 0;
Console.Write(i);
}
}
}",
ignoreTrivia: false);
}
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsMoveDeclarationNearReference)]
public async Task TestMergeComments07()
{
await TestInRegularAndScriptAsync(
@"class Program
{
static void Main(string[] args)
{
if (true)
{
}
// leading trivia
int [||]i = 5;
Console.WriteLine();
// Existing trivia
i = 0;
Console.Write(i);
}
}",
@"class Program
{
static void Main(string[] args)
{
if (true)
{
}
Console.WriteLine();
// leading trivia
// Existing trivia
int i = 0;
Console.Write(i);
}
}",
ignoreTrivia: false);
}
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsMoveDeclarationNearReference)]
public async Task TestMergeComments08()
{
await TestInRegularAndScriptAsync(
@"class Program
{
static void Main(string[] args)
{
if (true)
{
}
// leading trivia
int [||]i = 5;
Console.WriteLine();
{
// Existing trivia
i = 0;
Console.Write(i);
}
}
}",
@"class Program
{
static void Main(string[] args)
{
if (true)
{
}
Console.WriteLine();
{
// leading trivia
// Existing trivia
int i = 0;
Console.Write(i);
}
}
}",
ignoreTrivia: false);
}
}
}
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Collections.Generic;
using System.Composition;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CodeRefactorings;
using Microsoft.CodeAnalysis.CSharp.Extensions;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.MoveDeclarationNearReference;
......@@ -45,12 +49,34 @@ protected override SyntaxToken GetIdentifierOfVariableDeclarator(VariableDeclara
var declaration = localDeclaration.Declaration;
var declarator = declaration.Variables[0];
return localDeclaration.ReplaceNode(
var newLocalDeclaration = localDeclaration.ReplaceNode(
declarator,
declarator.WithInitializer(
SyntaxFactory.EqualsValueClause(
assignExpression.OperatorToken,
assignExpression.Right)));
var totalLeadingTrivia = GetLeadingTrivia(localDeclaration, statementSyntax);
return newLocalDeclaration.WithLeadingTrivia(totalLeadingTrivia);
}
private SyntaxTriviaList GetLeadingTrivia(StatementSyntax statement1, StatementSyntax statement2)
{
var result = new List<SyntaxTrivia>();
result.AddRange(statement2.GetLeadingTrivia().TakeWhile(t => t.IsWhitespaceOrEndOfLine()));
result.AddRange(statement1.GetLeadingTrivia().SkipWhile(t => t.IsWhitespaceOrEndOfLine()));
result.AddRange(statement2.GetLeadingTrivia().SkipWhile(t => t.IsWhitespaceOrEndOfLine()));
return new SyntaxTriviaList(result);
//var index = list.Count - 1;
//while (index >= 0 && list[index].IsWhitespace())
//{
// index--;
//}
//return new SyntaxTriviaList(list.Take(index + 1));
}
protected override async Task<bool> TypesAreCompatibleAsync(
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册