/// <inheritdoc/> public override async Task RegisterCodeFixesAsync(CodeFixContext context) { CodeFixData <AttributeSyntax> data = await CodeFixData <AttributeSyntax> .FromAsync(context, true).ConfigureAwait(false); if (!data.Success || !data.HasNode || !data.HasSemanticModel) { return; } if (data.Node.Parent?.Parent is not TypeParameterSyntax typeParameter || data.SemanticModel.GetDeclaredSymbol(typeParameter, data.CancellationToken) is not ITypeParameterSymbol parameterSymbol || GetTargetType(data.Node, data.SemanticModel, parameterSymbol.Ordinal, data.CancellationToken) is not ITypeSymbol targetType) { return; } CodeAction?action = GetCodeAction(in data, targetType); if (action is null) { return; } context.RegisterCodeFix(action, data.Diagnostic); }
/// <inheritdoc/> public override async Task RegisterCodeFixesAsync(CodeFixContext context) { CodeFixData <TypeDeclarationSyntax> data = await CodeFixData <TypeDeclarationSyntax> .FromAsync(context, true).ConfigureAwait(false); if (!data.Success || !data.HasNode || !data.HasSemanticModel) { return; } INamedTypeSymbol?attribute = data.SemanticModel.Compilation.GetTypeByMetadataName(MemberNames.DefaultParamConfigurationAttribute); if (attribute is null) { return; } CodeAction?action = GetCodeAction(in data, attribute); if (action is null) { return; } context.RegisterCodeFix(action, data.Diagnostic); }