diff --git a/src/EditorFeatures/CSharpTest/NavigateTo/NavigateToTests.cs b/src/EditorFeatures/CSharpTest/NavigateTo/NavigateToTests.cs index 77a47999daed8135373025e8d2e5ed064236fcdd..017725705a12585a74add6e5ed2bd89980853fb9 100644 --- a/src/EditorFeatures/CSharpTest/NavigateTo/NavigateToTests.cs +++ b/src/EditorFeatures/CSharpTest/NavigateTo/NavigateToTests.cs @@ -1095,5 +1095,23 @@ public void ToError() VerifyNavigateToResultItem(item, "ToError", "ToError()", MatchKind.Regular, NavigateToItemKind.Method); }); } + + [WorkItem(18843, "https://github.com/dotnet/roslyn/issues/18843")] + [WpfFact, Trait(Traits.Feature, Traits.Features.NavigateTo)] + public async Task Test__arglist() + { + await TestAsync( +@"class C +{ + public void ToError(__arglist) + { + } +}", async w => +{ + SetupVerifiableGlyph(StandardGlyphGroup.GlyphGroupMethod, StandardGlyphItem.GlyphItemPublic); + var item = (await _aggregator.GetItemsAsync("ToError")).Single(); + VerifyNavigateToResultItem(item, "ToError", "[|ToError|](__arglist)", MatchKind.Exact, NavigateToItemKind.Method); +}); + } } } \ No newline at end of file diff --git a/src/EditorFeatures/Core/Implementation/Suggestions/SuggestedActionsSource.cs b/src/EditorFeatures/Core/Implementation/Suggestions/SuggestedActionsSource.cs index 9f5f53452292e7409b19685b9c5023c31d6fe2cc..2c65683e1aea07bf5e885e6a048592e0018d1847 100644 --- a/src/EditorFeatures/Core/Implementation/Suggestions/SuggestedActionsSource.cs +++ b/src/EditorFeatures/Core/Implementation/Suggestions/SuggestedActionsSource.cs @@ -113,7 +113,7 @@ public bool TryGetTelemetryId(out Guid telemetryId) using (Logger.LogBlock(FunctionId.SuggestedActions_GetSuggestedActions, cancellationToken)) { - var document = GetMatchingDocumentAsync(range.Snapshot, cancellationToken).WaitAndGetResult(cancellationToken); + var document = range.Snapshot.GetOpenDocumentInCurrentContextWithChanges(); if (document == null) { // this is here to fail test and see why it is failed. @@ -288,7 +288,7 @@ private bool IsApplicable(CodeAction action, Workspace workspace) if (!action.PerformFinalApplicabilityCheck) { // If we don't even need to perform the final applicability check, - // then the code actoin is applicable. + // then the code action is applicable. return true; } @@ -588,7 +588,10 @@ private static SuggestedActionSetPriority GetSuggestedActionSetPriority(CodeActi applicableSpan); } - public async Task HasSuggestedActionsAsync(ISuggestedActionCategorySet requestedActionCategories, SnapshotSpan range, CancellationToken cancellationToken) + public async Task HasSuggestedActionsAsync( + ISuggestedActionCategorySet requestedActionCategories, + SnapshotSpan range, + CancellationToken cancellationToken) { // Explicitly hold onto below fields in locals and use these locals throughout this code path to avoid crashes // if these fields happen to be cleared by Dispose() below. This is required since this code path involves @@ -604,7 +607,7 @@ public async Task HasSuggestedActionsAsync(ISuggestedActionCategorySet req using (var asyncToken = provider.OperationListener.BeginAsyncOperation("HasSuggestedActionsAsync")) { - var document = await GetMatchingDocumentAsync(range.Snapshot, cancellationToken).ConfigureAwait(false); + var document = range.Snapshot.GetOpenDocumentInCurrentContextWithChanges(); if (document == null) { // this is here to fail test and see why it is failed. @@ -722,44 +725,6 @@ public async Task HasSuggestedActionsAsync(ISuggestedActionCategorySet req return translatedSpan.Span.ToTextSpan(); } - private static async Task GetMatchingDocumentAsync(ITextSnapshot givenSnapshot, CancellationToken cancellationToken) - { - var buffer = givenSnapshot.TextBuffer; - if (buffer == null) - { - return null; - } - - var workspace = buffer.GetWorkspace(); - if (workspace == null) - { - return null; - } - - var documentId = workspace.GetDocumentIdInCurrentContext(buffer.AsTextContainer()); - if (documentId == null) - { - return null; - } - - var document = workspace.CurrentSolution.GetDocument(documentId); - if (document == null) - { - return null; - } - - var sourceText = await document.GetTextAsync(cancellationToken).ConfigureAwait(false); - cancellationToken.ThrowIfCancellationRequested(); - - var snapshot = sourceText.FindCorrespondingEditorTextSnapshot(); - if (snapshot == null || snapshot.Version.ReiteratedVersionNumber != givenSnapshot.Version.ReiteratedVersionNumber) - { - return null; - } - - return document; - } - private void OnTextViewClosed(object sender, EventArgs e) { Dispose(); diff --git a/src/Workspaces/CSharp/Portable/LanguageServices/CSharpSyntaxFactsService.cs b/src/Workspaces/CSharp/Portable/LanguageServices/CSharpSyntaxFactsService.cs index 077229fba0fa0afe494b88fec70684ea9a846426..4c9b26d2b7c669dab00634219abb1e0a476088a1 100644 --- a/src/Workspaces/CSharp/Portable/LanguageServices/CSharpSyntaxFactsService.cs +++ b/src/Workspaces/CSharp/Portable/LanguageServices/CSharpSyntaxFactsService.cs @@ -1014,7 +1014,14 @@ private void AppendParameters(SeparatedSyntaxList parameters, S builder.Append(' '); } - AppendTokens(parameter.Type, builder); + if (parameter.Type != null) + { + AppendTokens(parameter.Type, builder); + } + else + { + builder.Append(parameter.Identifier.Text); + } first = false; }