Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions src/EditorFeatures/Test2/CodeFixes/CodeFixServiceTests.vb
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ Imports Microsoft.CodeAnalysis.UnitTests
Imports Roslyn.Utilities

Namespace Microsoft.CodeAnalysis.Editor.Implementation.CodeFixes.UnitTests

<[UseExportProvider]>
<Trait(Traits.Feature, Traits.Features.Diagnostics)>
Public Class CodeFixServiceTests
Expand Down Expand Up @@ -380,8 +379,8 @@ Namespace Microsoft.CodeAnalysis.Editor.Implementation.CodeFixes.UnitTests
Return Task.FromResult(False)
End Function

Public Function ImplementNotImplementedExceptionsAsync(document As Document, methodOrProperties As ImmutableDictionary(Of CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax, ImmutableArray(Of ReferencedSymbol)), cancellationToken As CancellationToken) As Task(Of ImmutableDictionary(Of CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax, ImplementationDetails)) Implements ICopilotCodeAnalysisService.ImplementNotImplementedExceptionsAsync
Return Task.FromResult(ImmutableDictionary(Of CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax, ImplementationDetails).Empty)
Public Function ImplementNotImplementedExceptionsAsync(document As Document, methodOrProperties As ImmutableDictionary(Of SyntaxNode, ImmutableArray(Of ReferencedSymbol)), cancellationToken As CancellationToken) As Task(Of ImmutableDictionary(Of SyntaxNode, ImplementationDetails)) Implements ICopilotCodeAnalysisService.ImplementNotImplementedExceptionsAsync
Return Task.FromResult(ImmutableDictionary(Of SyntaxNode, ImplementationDetails).Empty)
End Function
End Class
End Class
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ protected override async Task FixAllAsync(
Document document, ImmutableArray<Diagnostic> diagnostics,
SyntaxEditor editor, CancellationToken cancellationToken)
{
var memberReferencesBuilder = ImmutableDictionary.CreateBuilder<MemberDeclarationSyntax, ImmutableArray<ReferencedSymbol>>();
var memberReferencesBuilder = ImmutableDictionary.CreateBuilder<SyntaxNode, ImmutableArray<ReferencedSymbol>>();
var semanticModel = await document.GetRequiredSemanticModelAsync(cancellationToken).ConfigureAwait(false);

foreach (var diagnostic in diagnostics)
Expand All @@ -102,8 +102,10 @@ protected override async Task FixAllAsync(
var copilotService = document.GetRequiredLanguageService<ICopilotCodeAnalysisService>();
var memberImplementationDetails = await copilotService.ImplementNotImplementedExceptionsAsync(document, memberReferencesBuilder.ToImmutable(), cancellationToken).ConfigureAwait(false);

foreach (var methodOrProperty in memberReferencesBuilder.Keys)
foreach (var node in memberReferencesBuilder.Keys)
{
var methodOrProperty = (MemberDeclarationSyntax)node;

Contract.ThrowIfFalse(memberImplementationDetails.TryGetValue(methodOrProperty, out var implementationDetails));

var replacement = implementationDetails.ReplacementNode;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@ public interface IMathService
}
.WithMockCopilotService(copilotService =>
{
copilotService.SetupFixAll = (Document document, ImmutableDictionary<MemberDeclarationSyntax, ImmutableArray<ReferencedSymbol>> memberReferences, CancellationToken cancellationToken) =>
copilotService.SetupFixAll = (Document document, ImmutableDictionary<SyntaxNode, ImmutableArray<ReferencedSymbol>> memberReferences, CancellationToken cancellationToken) =>
{
// Create a map of method/property implementations
var implementationMap = new Dictionary<string, string>
Expand All @@ -192,7 +192,7 @@ public interface IMathService
};

// Process each member reference and create implementation details
var resultsBuilder = ImmutableDictionary.CreateBuilder<MemberDeclarationSyntax, ImplementationDetails>();
var resultsBuilder = ImmutableDictionary.CreateBuilder<SyntaxNode, ImplementationDetails>();
foreach (var memberReference in memberReferences)
{
var memberNode = memberReference.Key;
Expand Down Expand Up @@ -634,7 +634,7 @@ public TestCopilotCodeAnalysisService()
{
}

public Func<Document, ImmutableDictionary<MemberDeclarationSyntax, ImmutableArray<ReferencedSymbol>>, CancellationToken, ImmutableDictionary<MemberDeclarationSyntax, ImplementationDetails>>? SetupFixAll { get; internal set; }
public Func<Document, ImmutableDictionary<SyntaxNode, ImmutableArray<ReferencedSymbol>>, CancellationToken, ImmutableDictionary<SyntaxNode, ImplementationDetails>>? SetupFixAll { get; internal set; }

public ImplementationDetails? PrepareUsingSingleFakeResult { get; internal set; }

Expand Down Expand Up @@ -662,9 +662,9 @@ public Task StartRefinementSessionAsync(Document oldDocument, Document newDocume
Task<(Dictionary<string, string>? responseDictionary, bool isQuotaExceeded)> ICopilotCodeAnalysisService.GetDocumentationCommentAsync(DocumentationCommentProposal proposal, CancellationToken cancellationToken)
=> throw new NotImplementedException();

public Task<ImmutableDictionary<MemberDeclarationSyntax, ImplementationDetails>> ImplementNotImplementedExceptionsAsync(
public Task<ImmutableDictionary<SyntaxNode, ImplementationDetails>> ImplementNotImplementedExceptionsAsync(
Document document,
ImmutableDictionary<MemberDeclarationSyntax, ImmutableArray<ReferencedSymbol>> methodOrProperties,
ImmutableDictionary<SyntaxNode, ImmutableArray<ReferencedSymbol>> methodOrProperties,
CancellationToken cancellationToken)
{
if (SetupFixAll != null)
Expand All @@ -677,14 +677,14 @@ public Task<ImmutableDictionary<MemberDeclarationSyntax, ImplementationDetails>>
return Task.FromResult(CreateSingleNodeResult(methodOrProperties, PrepareUsingSingleFakeResult));
}

return Task.FromResult(ImmutableDictionary<MemberDeclarationSyntax, ImplementationDetails>.Empty);
return Task.FromResult(ImmutableDictionary<SyntaxNode, ImplementationDetails>.Empty);
}

private static ImmutableDictionary<MemberDeclarationSyntax, ImplementationDetails> CreateSingleNodeResult(
ImmutableDictionary<MemberDeclarationSyntax, ImmutableArray<ReferencedSymbol>> methodOrProperties,
private static ImmutableDictionary<SyntaxNode, ImplementationDetails> CreateSingleNodeResult(
ImmutableDictionary<SyntaxNode, ImmutableArray<ReferencedSymbol>> methodOrProperties,
ImplementationDetails implementationDetails)
{
var resultsBuilder = ImmutableDictionary.CreateBuilder<MemberDeclarationSyntax, ImplementationDetails>();
var resultsBuilder = ImmutableDictionary.CreateBuilder<SyntaxNode, ImplementationDetails>();
foreach (var methodOrProperty in methodOrProperties)
{
resultsBuilder.Add(methodOrProperty.Key, implementationDetails);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
using System.Collections.Immutable;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.DocumentationComments;
using Microsoft.CodeAnalysis.FindSymbols;
using Microsoft.CodeAnalysis.Host;
Expand Down Expand Up @@ -98,8 +97,8 @@ internal interface ICopilotCodeAnalysisService : ILanguageService
/// Implements methods or properties containing <see cref="System.NotImplementedException"/> throws in the given <paramref name="document"/>.
/// </summary>
/// <returns>A dictionary mapping the original syntax nodes to their implementation details.</returns>
Task<ImmutableDictionary<MemberDeclarationSyntax, ImplementationDetails>> ImplementNotImplementedExceptionsAsync(
Task<ImmutableDictionary<SyntaxNode, ImplementationDetails>> ImplementNotImplementedExceptionsAsync(
Document document,
ImmutableDictionary<MemberDeclarationSyntax, ImmutableArray<ReferencedSymbol>> methodOrProperties,
ImmutableDictionary<SyntaxNode, ImmutableArray<ReferencedSymbol>> methodOrProperties,
CancellationToken cancellationToken);
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
</PropertyGroup>
<ItemGroup Label="Project References">
<ProjectReference Include="..\..\..\Compilers\Core\Portable\Microsoft.CodeAnalysis.csproj" />
<ProjectReference Include="..\..\..\Compilers\CSharp\Portable\Microsoft.CodeAnalysis.CSharp.csproj" />
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:-o

<ProjectReference Include="..\..\..\Scripting\Core\Microsoft.CodeAnalysis.Scripting.csproj" Aliases="Scripting,global" />
<ProjectReference Include="..\..\..\Workspaces\Core\Portable\Microsoft.CodeAnalysis.Workspaces.csproj" />
</ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,15 @@
using System.Collections.Immutable;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.ExternalAccess.Copilot.GenerateImplementation;
using Microsoft.CodeAnalysis.FindSymbols;

namespace Microsoft.CodeAnalysis.ExternalAccess.Copilot;

internal interface IExternalCSharpCopilotGenerateImplementationService
{
Task<ImmutableDictionary<MemberDeclarationSyntax, ImplementationDetailsWrapper>> ImplementNotImplementedExceptionsAsync(
Task<ImmutableDictionary<SyntaxNode, ImplementationDetailsWrapper>> ImplementNotImplementedExceptionsAsync(

Check failure on line 15 in src/Features/ExternalAccess/Copilot/GenerateImplementation/IExternalCSharpCopilotGenerateImplementationService.cs

View check run for this annotation

Azure Pipelines / roslyn-CI (Correctness Correctness_Analyzers)

src/Features/ExternalAccess/Copilot/GenerateImplementation/IExternalCSharpCopilotGenerateImplementationService.cs#L15

src/Features/ExternalAccess/Copilot/GenerateImplementation/IExternalCSharpCopilotGenerateImplementationService.cs(15,73): error RS0051: (NETCORE_ENGINEERING_TELEMETRY=Build) Symbol 'Microsoft.CodeAnalysis.ExternalAccess.Copilot.IExternalCSharpCopilotGenerateImplementationService.ImplementNotImplementedExceptionsAsync(Microsoft.CodeAnalysis.Document! document, System.Collections.Immutable.ImmutableDictionary<Microsoft.CodeAnalysis.SyntaxNode!, System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.FindSymbols.ReferencedSymbol!>>! methodOrProperties, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<System.Collections.Immutable.ImmutableDictionary<Microsoft.CodeAnalysis.SyntaxNode!, Microsoft.CodeAnalysis.ExternalAccess.Copilot.GenerateImplementation.ImplementationDetailsWrapper!>!>!' is not part of the declared API (https://github.com/dotnet/roslyn-analyzers/blob/main/src/PublicApiAnalyzers/PublicApiAnalyzers.Help.md)

Check failure on line 15 in src/Features/ExternalAccess/Copilot/GenerateImplementation/IExternalCSharpCopilotGenerateImplementationService.cs

View check run for this annotation

Azure Pipelines / roslyn-CI (Correctness Correctness_Analyzers)

src/Features/ExternalAccess/Copilot/GenerateImplementation/IExternalCSharpCopilotGenerateImplementationService.cs#L15

src/Features/ExternalAccess/Copilot/GenerateImplementation/IExternalCSharpCopilotGenerateImplementationService.cs(15,73): error RS0051: (NETCORE_ENGINEERING_TELEMETRY=Build) Symbol 'Microsoft.CodeAnalysis.ExternalAccess.Copilot.IExternalCSharpCopilotGenerateImplementationService.ImplementNotImplementedExceptionsAsync(Microsoft.CodeAnalysis.Document! document, System.Collections.Immutable.ImmutableDictionary<Microsoft.CodeAnalysis.SyntaxNode!, System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.FindSymbols.ReferencedSymbol!>>! methodOrProperties, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<System.Collections.Immutable.ImmutableDictionary<Microsoft.CodeAnalysis.SyntaxNode!, Microsoft.CodeAnalysis.ExternalAccess.Copilot.GenerateImplementation.ImplementationDetailsWrapper!>!>!' is not part of the declared API (https://github.com/dotnet/roslyn-analyzers/blob/main/src/PublicApiAnalyzers/PublicApiAnalyzers.Help.md)
Document document,
ImmutableDictionary<MemberDeclarationSyntax, ImmutableArray<ReferencedSymbol>> methodOrProperties,
ImmutableDictionary<SyntaxNode, ImmutableArray<ReferencedSymbol>> methodOrProperties,
CancellationToken cancellationToken);
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
using System.Threading;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.Copilot;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Diagnostics;
using Microsoft.CodeAnalysis.DocumentationComments;
using Microsoft.CodeAnalysis.FindSymbols;
Expand Down Expand Up @@ -46,7 +45,7 @@ internal abstract class AbstractCopilotCodeAnalysisService(IDiagnosticsRefresher
protected abstract Task<(string responseString, bool isQuotaExceeded)> GetOnTheFlyDocsResponseCoreAsync(string prompt, CancellationToken cancellationToken);
protected abstract Task<bool> IsFileExcludedCoreAsync(string filePath, CancellationToken cancellationToken);
protected abstract Task<(Dictionary<string, string>? responseDictionary, bool isQuotaExceeded)> GetDocumentationCommentCoreAsync(DocumentationCommentProposal proposal, CancellationToken cancellationToken);
protected abstract Task<ImmutableDictionary<MemberDeclarationSyntax, ImplementationDetails>> ImplementNotImplementedExceptionsCoreAsync(Document document, ImmutableDictionary<MemberDeclarationSyntax, ImmutableArray<ReferencedSymbol>> methodOrProperties, CancellationToken cancellationToken);
protected abstract Task<ImmutableDictionary<SyntaxNode, ImplementationDetails>> ImplementNotImplementedExceptionsCoreAsync(Document document, ImmutableDictionary<SyntaxNode, ImmutableArray<ReferencedSymbol>> methodOrProperties, CancellationToken cancellationToken);
protected abstract bool IsImplementNotImplementedExceptionsAvailableCore();

public Task<bool> IsAvailableAsync(CancellationToken cancellationToken)
Expand Down Expand Up @@ -214,9 +213,9 @@ public async Task<bool> IsImplementNotImplementedExceptionsAvailableAsync(Cancel
&& IsImplementNotImplementedExceptionsAvailableCore();
}

public async Task<ImmutableDictionary<MemberDeclarationSyntax, ImplementationDetails>> ImplementNotImplementedExceptionsAsync(
public async Task<ImmutableDictionary<SyntaxNode, ImplementationDetails>> ImplementNotImplementedExceptionsAsync(
Document document,
ImmutableDictionary<MemberDeclarationSyntax, ImmutableArray<ReferencedSymbol>> methodOrProperties,
ImmutableDictionary<SyntaxNode, ImmutableArray<ReferencedSymbol>> methodOrProperties,
CancellationToken cancellationToken)
{
return await ImplementNotImplementedExceptionsCoreAsync(document, methodOrProperties, cancellationToken).ConfigureAwait(false);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
using System.Threading;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.Copilot;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Diagnostics;
using Microsoft.CodeAnalysis.DocumentationComments;
using Microsoft.CodeAnalysis.ErrorReporting;
Expand Down Expand Up @@ -157,15 +156,15 @@ protected override bool IsImplementNotImplementedExceptionsAvailableCore()
return GenerateImplementationService is not null;
}

protected override async Task<ImmutableDictionary<MemberDeclarationSyntax, ImplementationDetails>> ImplementNotImplementedExceptionsCoreAsync(
protected override async Task<ImmutableDictionary<SyntaxNode, ImplementationDetails>> ImplementNotImplementedExceptionsCoreAsync(
Document document,
ImmutableDictionary<MemberDeclarationSyntax, ImmutableArray<ReferencedSymbol>> methodOrProperties,
ImmutableDictionary<SyntaxNode, ImmutableArray<ReferencedSymbol>> methodOrProperties,
CancellationToken cancellationToken)
{
Contract.ThrowIfNull(GenerateImplementationService);
var nodeToWrappers = await GenerateImplementationService.ImplementNotImplementedExceptionsAsync(document, methodOrProperties, cancellationToken).ConfigureAwait(false);

var resultBuilder = ImmutableDictionary.CreateBuilder<MemberDeclarationSyntax, ImplementationDetails>();
var resultBuilder = ImmutableDictionary.CreateBuilder<SyntaxNode, ImplementationDetails>();
foreach (var nodeToWrapper in nodeToWrappers)
{
resultBuilder.Add(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\..\..\Compilers\CSharp\Portable\Microsoft.CodeAnalysis.CSharp.csproj" />
<ProjectReference Include="..\..\Core\Portable\Microsoft.CodeAnalysis.Features.csproj" />
</ItemGroup>

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Generated, do not update manually
# Generated, do not update manually
Microsoft.CodeAnalysis.CSharp.AwaitExpressionInfo
Microsoft.CodeAnalysis.CSharp.AwaitExpressionInfo.Equals(Microsoft.CodeAnalysis.CSharp.AwaitExpressionInfo)
Microsoft.CodeAnalysis.CSharp.AwaitExpressionInfo.Equals(System.Object)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Generated, do not update manually
# Generated, do not update manually
Microsoft.CodeAnalysis.Accessibility
Microsoft.CodeAnalysis.Accessibility.Friend
Microsoft.CodeAnalysis.Accessibility.Internal
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Generated, do not update manually
# Generated, do not update manually
System.Collections.Frozen.FrozenDictionary
System.Collections.Frozen.FrozenDictionary.ToFrozenDictionary``2(System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{``0,``1}},System.Collections.Generic.IEqualityComparer{``0})
System.Collections.Frozen.FrozenDictionary.ToFrozenDictionary``2(System.Collections.Generic.IEnumerable{``0},System.Func{``0,``1},System.Collections.Generic.IEqualityComparer{``1})
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Generated, do not update manually
# Generated, do not update manually
System.Collections.BitArray
System.Collections.BitArray.#ctor(System.Boolean[])
System.Collections.BitArray.#ctor(System.Byte[])
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Generated, do not update manually
# Generated, do not update manually
System.Linq.Enumerable
System.Linq.Enumerable.Aggregate``1(System.Collections.Generic.IEnumerable{``0},System.Func{``0,``0,``0})
System.Linq.Enumerable.Aggregate``2(System.Collections.Generic.IEnumerable{``0},``1,System.Func{``1,``0,``1})
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Generated, do not update manually
# Generated, do not update manually
System.AccessViolationException
System.AccessViolationException.#ctor
System.AccessViolationException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)
Expand Down
Loading