提交 85049c53 编写于 作者: G Gen Lu

Revert "Merge pull request #43634 from allisonchou/IVTInterfaceDeclarationsTSRename"

This reverts commit 3ae0f796, reversing
changes made to a2ec364d.
上级 7fd07d52
......@@ -3,7 +3,6 @@
// See the LICENSE file in the project root for more information.
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.Options;
......@@ -34,13 +33,11 @@ public FailureInlineRenameInfo(string localizedErrorMessage)
public Glyph Glyph => Glyph.None;
public ImmutableArray<DocumentSpan> DefinitionLocations => default;
public string GetFinalSymbolName(string replacementText) => null;
public TextSpan GetReferenceEditSpan(InlineRenameLocation location, string triggerText, CancellationToken cancellationToken) => default;
public TextSpan GetReferenceEditSpan(InlineRenameLocation location, CancellationToken cancellationToken) => default;
public TextSpan? GetConflictEditSpan(InlineRenameLocation location, string triggerText, string replacementText, CancellationToken cancellationToken) => null;
public TextSpan? GetConflictEditSpan(InlineRenameLocation location, string replacementText, CancellationToken cancellationToken) => null;
public Task<IInlineRenameLocationSet> FindRenameLocationsAsync(OptionSet optionSet, CancellationToken cancellationToken) => null;
......
......@@ -11,6 +11,7 @@
using System.Threading.Tasks;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.Editor.Shared.Extensions;
using Microsoft.CodeAnalysis.FindSymbols;
using Microsoft.CodeAnalysis.LanguageServices;
using Microsoft.CodeAnalysis.Options;
using Microsoft.CodeAnalysis.Rename;
......@@ -59,7 +60,6 @@ private partial class SymbolInlineRenameInfo : IInlineRenameInfoWithFileRename
IEnumerable<IRefactorNotifyService> refactorNotifyServices,
Document document,
TextSpan triggerSpan,
string triggerText,
ISymbol renameSymbol,
bool forceRenameOverloads,
ImmutableArray<DocumentSpan> definitionLocations,
......@@ -74,13 +74,13 @@ private partial class SymbolInlineRenameInfo : IInlineRenameInfoWithFileRename
this.HasOverloads = RenameLocations.GetOverloadedSymbols(this.RenameSymbol).Any();
this.ForceRenameOverloads = forceRenameOverloads;
_isRenamingAttributePrefix = CanRenameAttributePrefix(document, triggerSpan, triggerText, cancellationToken);
this.TriggerSpan = GetReferenceEditSpan(new InlineRenameLocation(document, triggerSpan), triggerText, cancellationToken);
_isRenamingAttributePrefix = CanRenameAttributePrefix(document, triggerSpan, cancellationToken);
this.TriggerSpan = GetReferenceEditSpan(new InlineRenameLocation(document, triggerSpan), cancellationToken);
this.DefinitionLocations = definitionLocations;
}
private bool CanRenameAttributePrefix(Document document, TextSpan triggerSpan, string triggerText, CancellationToken cancellationToken)
private bool CanRenameAttributePrefix(Document document, TextSpan triggerSpan, CancellationToken cancellationToken)
{
// if this isn't an attribute, or it doesn't have the 'Attribute' suffix, then clearly
// we can't rename just the attribute prefix.
......@@ -94,6 +94,7 @@ private bool CanRenameAttributePrefix(Document document, TextSpan triggerSpan, s
// we need to rename the entire attribute).
var nameWithoutAttribute = GetWithoutAttributeSuffix(this.RenameSymbol.Name);
var triggerText = GetSpanText(document, triggerSpan, cancellationToken);
return triggerText.StartsWith(triggerText); // TODO: Always true? What was it supposed to do?
}
......@@ -110,7 +111,7 @@ private bool CanRenameAttributePrefix(Document document, TextSpan triggerSpan, s
/// - Compiler-generated EventHandler suffix XEventHandler => X
/// - Compiler-generated get_ and set_ prefixes get_X => X
/// </summary>
public TextSpan GetReferenceEditSpan(InlineRenameLocation location, string triggerText, CancellationToken cancellationToken)
public TextSpan GetReferenceEditSpan(InlineRenameLocation location, CancellationToken cancellationToken)
{
var searchName = this.RenameSymbol.Name;
if (_isRenamingAttributePrefix)
......@@ -120,7 +121,9 @@ public TextSpan GetReferenceEditSpan(InlineRenameLocation location, string trigg
searchName = GetWithoutAttributeSuffix(this.RenameSymbol.Name);
}
var index = triggerText.LastIndexOf(searchName, StringComparison.Ordinal);
var spanText = GetSpanText(location.Document, location.TextSpan, cancellationToken);
var index = spanText.LastIndexOf(searchName, StringComparison.Ordinal);
if (index < 0)
{
// Couldn't even find the search text at this reference location. This might happen
......@@ -132,15 +135,16 @@ public TextSpan GetReferenceEditSpan(InlineRenameLocation location, string trigg
return new TextSpan(location.TextSpan.Start + index, searchName.Length);
}
public TextSpan? GetConflictEditSpan(InlineRenameLocation location, string triggerText, string replacementText, CancellationToken cancellationToken)
public TextSpan? GetConflictEditSpan(InlineRenameLocation location, string replacementText, CancellationToken cancellationToken)
{
var position = triggerText.LastIndexOf(replacementText, StringComparison.Ordinal);
var spanText = GetSpanText(location.Document, location.TextSpan, cancellationToken);
var position = spanText.LastIndexOf(replacementText, StringComparison.Ordinal);
if (_isRenamingAttributePrefix)
{
// We're only renaming the attribute prefix part. We want to adjust the span of
// the reference we've found to only update the prefix portion.
var index = triggerText.LastIndexOf(replacementText + AttributeSuffix, StringComparison.Ordinal);
var index = spanText.LastIndexOf(replacementText + AttributeSuffix, StringComparison.Ordinal);
position = index >= 0 ? index : position;
}
......@@ -158,6 +162,15 @@ private string GetWithoutAttributeSuffix(string value)
private bool HasAttributeSuffix(string value)
=> value.TryGetWithoutAttributeSuffix(isCaseSensitive: _document.GetLanguageService<ISyntaxFactsService>().IsCaseSensitive, result: out var _);
private static string GetSpanText(Document document, TextSpan triggerSpan, CancellationToken cancellationToken)
{
// TO-DO: Add new 'triggerText' parameter to the callers of this method via IVT so that we can get the text asynchronously instead.
// https://devdiv.visualstudio.com/DevDiv/_workitems/edit/1080161
var sourceText = document.GetTextSynchronously(cancellationToken);
var triggerText = sourceText.ToString(triggerSpan);
return triggerText;
}
internal bool IsRenamingAttributeTypeWithAttributeSuffix()
{
if (this.RenameSymbol.IsAttribute() || (this.RenameSymbol.Kind == SymbolKind.Alias && ((IAliasSymbol)this.RenameSymbol).Target.IsAttribute()))
......
......@@ -197,11 +197,8 @@ public async Task<IInlineRenameInfo> GetRenameInfoAsync(Document document, int p
}
}
var sourceText = await document.GetTextAsync(cancellationToken).ConfigureAwait(false);
var triggerText = sourceText.ToString(triggerToken.Span);
return new SymbolInlineRenameInfo(
refactorNotifyServices, document, triggerToken.Span, triggerText,
refactorNotifyServices, document, triggerToken.Span,
symbol, forceRenameOverloads, documentSpans.ToImmutableAndFree(), cancellationToken);
}
......
......@@ -97,12 +97,11 @@ internal class InlineRenameService : IInlineRenameService
static InlineRenameSessionInfo? IsReadOnlyOrCannotNavigateToSpan(IInlineRenameInfo renameInfo, Document document, CancellationToken cancellationToken)
{
if (renameInfo is IInlineRenameInfo inlineRenameInfo && inlineRenameInfo.DefinitionLocations != default)
if (renameInfo is IInlineRenameInfoWithFileRename renameInfoWithFileRename)
{
var workspace = document.Project.Solution.Workspace;
var navigationService = workspace.Services.GetRequiredService<IDocumentNavigationService>();
foreach (var documentSpan in inlineRenameInfo.DefinitionLocations)
foreach (var documentSpan in renameInfoWithFileRename.DefinitionLocations)
{
var sourceText = documentSpan.Document.GetTextSynchronously(cancellationToken);
var textSnapshot = sourceText.FindCorrespondingEditorTextSnapshot();
......
......@@ -184,9 +184,8 @@ internal void SetReferenceSpans(IEnumerable<TextSpan> spans)
_referenceSpanToLinkedRenameSpanMap.Clear();
foreach (var span in spans)
{
var document = _baseDocuments.First();
var renameableSpan = _session._renameInfo.GetReferenceEditSpan(
new InlineRenameLocation(document, span), GetTriggerText(document, span), CancellationToken.None);
new InlineRenameLocation(_baseDocuments.First(), span), CancellationToken.None);
var trackingSpan = new RenameTrackingSpan(
_subjectBuffer.CurrentSnapshot.CreateTrackingSpan(renameableSpan.ToSpan(), SpanTrackingMode.EdgeInclusive, TrackingFidelityMode.Forward),
RenameSpanKind.Reference);
......@@ -209,12 +208,6 @@ internal void SetReferenceSpans(IEnumerable<TextSpan> spans)
RaiseSpansChanged();
}
private static string GetTriggerText(Document document, TextSpan span)
{
var sourceText = document.GetTextSynchronously(CancellationToken.None);
return sourceText.ToString(span);
}
private void OnTextBufferChanged(object sender, TextContentChangedEventArgs args)
{
AssertIsForeground();
......@@ -472,10 +465,7 @@ internal void ApplyConflictResolutionEdits(IInlineRenameReplacementInfo conflict
if (_referenceSpanToLinkedRenameSpanMap.ContainsKey(replacement.OriginalSpan) && kind != RenameSpanKind.Complexified)
{
var linkedRenameSpan = _session._renameInfo.GetConflictEditSpan(
new InlineRenameLocation(newDocument, replacement.NewSpan), GetTriggerText(newDocument, replacement.NewSpan),
GetWithoutAttributeSuffix(_session.ReplacementText,
document.GetLanguageService<LanguageServices.ISyntaxFactsService>().IsCaseSensitive), cancellationToken);
new InlineRenameLocation(newDocument, replacement.NewSpan), GetWithoutAttributeSuffix(_session.ReplacementText, document.GetLanguageService<LanguageServices.ISyntaxFactsService>().IsCaseSensitive), cancellationToken);
if (linkedRenameSpan.HasValue)
{
if (!mergeConflictComments.Any(s => replacement.NewSpan.IntersectsWith(s)))
......
......@@ -54,7 +54,7 @@ public async Task<IInlineRenameLocationSet> FindRenameLocationsAsync(OptionSet o
}
}
public TextSpan? GetConflictEditSpan(InlineRenameLocation location, string triggerText, string replacementText, CancellationToken cancellationToken)
public TextSpan? GetConflictEditSpan(InlineRenameLocation location, string replacementText, CancellationToken cancellationToken)
{
return _info.GetConflictEditSpan(new VSTypeScriptInlineRenameLocationWrapper(
new InlineRenameLocation(location.Document, location.TextSpan)), replacementText, cancellationToken);
......@@ -63,7 +63,7 @@ public async Task<IInlineRenameLocationSet> FindRenameLocationsAsync(OptionSet o
public string GetFinalSymbolName(string replacementText)
=> _info.GetFinalSymbolName(replacementText);
public TextSpan GetReferenceEditSpan(InlineRenameLocation location, string triggerText, CancellationToken cancellationToken)
public TextSpan GetReferenceEditSpan(InlineRenameLocation location, CancellationToken cancellationToken)
{
return _info.GetReferenceEditSpan(new VSTypeScriptInlineRenameLocationWrapper(
new InlineRenameLocation(location.Document, location.TextSpan)), cancellationToken);
......
......@@ -193,11 +193,6 @@ internal interface IInlineRenameInfo
/// </summary>
Glyph Glyph { get; }
/// <summary>
/// The locations of the potential rename candidates for the symbol.
/// </summary>
ImmutableArray<DocumentSpan> DefinitionLocations { get; }
/// <summary>
/// Gets the final name of the symbol if the user has typed the provided replacement text
/// in the editor. Normally, the final name will be same as the replacement text. However,
......@@ -210,13 +205,13 @@ internal interface IInlineRenameInfo
/// Returns the actual span that should be edited in the buffer for a given rename reference
/// location.
/// </summary>
TextSpan GetReferenceEditSpan(InlineRenameLocation location, string triggerText, CancellationToken cancellationToken);
TextSpan GetReferenceEditSpan(InlineRenameLocation location, CancellationToken cancellationToken);
/// <summary>
/// Returns the actual span that should be edited in the buffer for a given rename conflict
/// location.
/// </summary>
TextSpan? GetConflictEditSpan(InlineRenameLocation location, string triggerText, string replacementText, CancellationToken cancellationToken);
TextSpan? GetConflictEditSpan(InlineRenameLocation location, string replacementText, CancellationToken cancellationToken);
/// <summary>
/// Determine the set of locations to rename given the provided options. May be called
......@@ -245,6 +240,10 @@ internal interface IInlineRenameInfoWithFileRename : IInlineRenameInfo
/// an inline rename
/// </summary>
InlineRenameFileRenameInfo GetFileRenameInfo();
// TO-DO: Move property to IInlineRenameInfo once Typescript moves to the correct IVT layering
// https://devdiv.visualstudio.com/DevDiv/_workitems/edit/1077984
ImmutableArray<DocumentSpan> DefinitionLocations { get; }
}
/// <summary>
......
......@@ -3,9 +3,9 @@
// See the LICENSE file in the project root for more information.
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.Host;
using Microsoft.CodeAnalysis.Options;
using Microsoft.CodeAnalysis.Text;
......@@ -130,11 +130,6 @@ internal interface IFSharpInlineRenameInfo
/// </summary>
FSharpGlyph Glyph { get; }
/// <summary>
/// The locations of the potential rename candidates for the symbol.
/// </summary>
ImmutableArray<DocumentSpan> DefinitionLocations { get; }
/// <summary>
/// Gets the final name of the symbol if the user has typed the provided replacement text
/// in the editor. Normally, the final name will be same as the replacement text. However,
......
......@@ -14,7 +14,6 @@
using Microsoft.CodeAnalysis.Options;
using Microsoft.CodeAnalysis.Text;
using Roslyn.Utilities;
using System.Collections.Immutable;
namespace Microsoft.CodeAnalysis.ExternalAccess.FSharp.Internal.Editor
{
......@@ -131,8 +130,6 @@ public FSharpInlineRenameInfo(IFSharpInlineRenameInfo info)
public Glyph Glyph => FSharpGlyphHelpers.ConvertTo(_info.Glyph);
public ImmutableArray<DocumentSpan> DefinitionLocations => _info.DefinitionLocations;
public async Task<IInlineRenameLocationSet> FindRenameLocationsAsync(OptionSet optionSet, CancellationToken cancellationToken)
{
var set = await _info.FindRenameLocationsAsync(optionSet, cancellationToken).ConfigureAwait(false);
......@@ -146,7 +143,7 @@ public async Task<IInlineRenameLocationSet> FindRenameLocationsAsync(OptionSet o
}
}
public TextSpan? GetConflictEditSpan(InlineRenameLocation location, string triggerText, string replacementText, CancellationToken cancellationToken)
public TextSpan? GetConflictEditSpan(InlineRenameLocation location, string replacementText, CancellationToken cancellationToken)
{
return _info.GetConflictEditSpan(new FSharpInlineRenameLocation(location.Document, location.TextSpan), replacementText, cancellationToken);
}
......@@ -156,7 +153,7 @@ public string GetFinalSymbolName(string replacementText)
return _info.GetFinalSymbolName(replacementText);
}
public TextSpan GetReferenceEditSpan(InlineRenameLocation location, string triggerText, CancellationToken cancellationToken)
public TextSpan GetReferenceEditSpan(InlineRenameLocation location, CancellationToken cancellationToken)
{
return _info.GetReferenceEditSpan(new FSharpInlineRenameLocation(location.Document, location.TextSpan), cancellationToken);
}
......
......@@ -3,7 +3,6 @@
// See the LICENSE file in the project root for more information.
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis;
......@@ -32,10 +31,9 @@ public FailureInlineRenameInfo(string localizedErrorMessage)
public string DisplayName => null;
public string FullDisplayName => null;
public Glyph Glyph => Glyph.None;
public ImmutableArray<DocumentSpan> DefinitionLocations => default;
public string GetFinalSymbolName(string replacementText) => null;
public TextSpan GetReferenceEditSpan(InlineRenameLocation location, string triggerText, CancellationToken cancellationToken) => default;
public TextSpan? GetConflictEditSpan(InlineRenameLocation location, string triggerText, string replacementText, CancellationToken cancellationToken) => null;
public TextSpan GetReferenceEditSpan(InlineRenameLocation location, CancellationToken cancellationToken) => default;
public TextSpan? GetConflictEditSpan(InlineRenameLocation location, string replacementText, CancellationToken cancellationToken) => null;
public Task<IInlineRenameLocationSet> FindRenameLocationsAsync(OptionSet optionSet, CancellationToken cancellationToken) => null;
public bool TryOnAfterGlobalSymbolRenamed(CodeAnalysis.Workspace workspace, IEnumerable<DocumentId> changedDocumentIDs, string replacementText) => false;
public bool TryOnBeforeGlobalSymbolRenamed(CodeAnalysis.Workspace workspace, IEnumerable<DocumentId> changedDocumentIDs, string replacementText) => false;
......
......@@ -3,7 +3,6 @@
// See the LICENSE file in the project root for more information.
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.Text;
......@@ -43,11 +42,6 @@ internal interface IXamlRenameInfo
/// </summary>
SymbolKind Kind { get; }
/// <summary>
/// The locations of the potential rename candidates for the symbol.
/// </summary>
ImmutableArray<CodeAnalysis.DocumentSpan> DefinitionLocations { get; }
/// <summary>
/// Find all locations to be renamed.
/// </summary>
......
......@@ -67,8 +67,6 @@ public InlineRenameInfo(IXamlRenameInfoService renameService, Document document,
public TextSpan TriggerSpan => _renameInfo.TriggerSpan;
public ImmutableArray<CodeAnalysis.DocumentSpan> DefinitionLocations => _renameInfo.DefinitionLocations;
public async Task<IInlineRenameLocationSet> FindRenameLocationsAsync(OptionSet optionSet, CancellationToken cancellationToken)
{
var references = new List<InlineRenameLocation>();
......@@ -86,7 +84,7 @@ public async Task<IInlineRenameLocationSet> FindRenameLocationsAsync(OptionSet o
references.ToImmutableArray());
}
public TextSpan? GetConflictEditSpan(InlineRenameLocation location, string triggerText, string replacementText, CancellationToken cancellationToken)
public TextSpan? GetConflictEditSpan(InlineRenameLocation location, string replacementText, CancellationToken cancellationToken)
{
return location.TextSpan;
}
......@@ -96,7 +94,7 @@ public string GetFinalSymbolName(string replacementText)
return replacementText;
}
public TextSpan GetReferenceEditSpan(InlineRenameLocation location, string triggerText, CancellationToken cancellationToken)
public TextSpan GetReferenceEditSpan(InlineRenameLocation location, CancellationToken cancellationToken)
{
return location.TextSpan;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册