From a9f48558a9459b943dedb9cad0d979aca3bca1e1 Mon Sep 17 00:00:00 2001 From: Paul Chen Date: Thu, 5 May 2016 06:48:42 +0800 Subject: [PATCH] Fix edge cases typing Enter before /**/ comments. --- .../BlockCommentEditingCommandHandler.cs | 3 +- .../BlockCommentEditingTests.cs | 56 +++++++++++++++++++ 2 files changed, 58 insertions(+), 1 deletion(-) diff --git a/src/EditorFeatures/CSharp/BlockCommentEditing/BlockCommentEditingCommandHandler.cs b/src/EditorFeatures/CSharp/BlockCommentEditing/BlockCommentEditingCommandHandler.cs index f2968755a7667..3ca4b6497c233 100644 --- a/src/EditorFeatures/CSharp/BlockCommentEditing/BlockCommentEditingCommandHandler.cs +++ b/src/EditorFeatures/CSharp/BlockCommentEditing/BlockCommentEditingCommandHandler.cs @@ -171,7 +171,8 @@ private static bool IsCaretInsideBlockCommentSyntax(SnapshotPoint caretPosition) var syntaxTree = document.GetSyntaxTreeAsync().WaitAndGetResult(CancellationToken.None); var trivia = syntaxTree.FindTriviaAndAdjustForEndOfFile(caretPosition, CancellationToken.None); - return trivia.IsKind(SyntaxKind.MultiLineCommentTrivia) || trivia.IsKind(SyntaxKind.MultiLineDocumentationCommentTrivia); + var isBlockComment = trivia.IsKind(SyntaxKind.MultiLineCommentTrivia) || trivia.IsKind(SyntaxKind.MultiLineDocumentationCommentTrivia); + return isBlockComment && trivia.FullSpan.Start < caretPosition; } } } diff --git a/src/EditorFeatures/CSharpTest/BlockCommentEditing/BlockCommentEditingTests.cs b/src/EditorFeatures/CSharpTest/BlockCommentEditing/BlockCommentEditingTests.cs index d195ace88037c..33daf92fed156 100644 --- a/src/EditorFeatures/CSharpTest/BlockCommentEditing/BlockCommentEditingTests.cs +++ b/src/EditorFeatures/CSharpTest/BlockCommentEditing/BlockCommentEditingTests.cs @@ -15,6 +15,62 @@ namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.BlockCommentEditing { public class BlockCommentEditingTests : AbstractBlockCommentEditingTests { + [WorkItem(11057, "https://github.com/dotnet/roslyn/issues/11057")] + [WpfFact, Trait(Traits.Feature, Traits.Features.BlockCommentEditing)] + public async Task EdgeCase0() + { + var code = @" +$$/**/ +"; + var expected = @" + +$$/**/ +"; + await VerifyAsync(code, expected); + } + + [WorkItem(11057, "https://github.com/dotnet/roslyn/issues/11057")] + [WpfFact, Trait(Traits.Feature, Traits.Features.BlockCommentEditing)] + public async Task EdgeCase1() + { + var code = @" +/**/$$ +"; + var expected = @" +/**/ +$$ +"; + await VerifyAsync(code, expected); + } + + [WorkItem(11056, "https://github.com/dotnet/roslyn/issues/11056")] + [WpfFact, Trait(Traits.Feature, Traits.Features.BlockCommentEditing)] + public async Task EdgeCase2() + { + var code = @" +$$/* */ +"; + var expected = @" + +$$/* */ +"; + await VerifyAsync(code, expected); + } + + [WorkItem(11056, "https://github.com/dotnet/roslyn/issues/11056")] + [WpfFact, Trait(Traits.Feature, Traits.Features.BlockCommentEditing)] + public async Task EdgeCase3() + { + var code = @" +/* */$$ +"; + var expected = @" +/* */ +$$ +"; + await VerifyAsync(code, expected); + } + [WpfFact, Trait(Traits.Feature, Traits.Features.BlockCommentEditing)] public async Task InsertOnStartLine0() {