|
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
#nullable disable
using System.Collections.Immutable;
using System.Threading;
using Microsoft.CodeAnalysis.Utilities;
namespace Microsoft.CodeAnalysis.GenerateMember.GenerateParameterizedMember;
internal abstract partial class AbstractGenerateParameterizedMemberService<TService, TSimpleNameSyntax, TExpressionSyntax, TInvocationExpressionSyntax>
{
protected class MethodSignatureInfo(
SemanticDocument document,
State state,
IMethodSymbol methodSymbol,
ImmutableArray<string> parameterNames = default) : SignatureInfo(document, state)
{
private readonly IMethodSymbol _methodSymbol = methodSymbol;
private readonly ImmutableArray<string> _parameterNames = parameterNames;
protected override ITypeSymbol DetermineReturnTypeWorker(CancellationToken cancellationToken)
=> _methodSymbol.ReturnType;
protected override RefKind DetermineRefKind(CancellationToken cancellationToken)
=> _methodSymbol.RefKind;
protected override ImmutableArray<ITypeParameterSymbol> DetermineTypeParametersWorker(CancellationToken cancellationToken)
=> _methodSymbol.TypeParameters;
protected override ImmutableArray<RefKind> DetermineParameterModifiers(CancellationToken cancellationToken)
=> _methodSymbol.Parameters.SelectAsArray(p => p.RefKind);
protected override ImmutableArray<bool> DetermineParameterOptionality(CancellationToken cancellationToken)
=> _methodSymbol.Parameters.SelectAsArray(p => p.IsOptional);
protected override ImmutableArray<ITypeSymbol> DetermineParameterTypes(CancellationToken cancellationToken)
=> _methodSymbol.Parameters.SelectAsArray(p => p.Type);
protected override ImmutableArray<ParameterName> DetermineParameterNames(CancellationToken cancellationToken)
=> _parameterNames.IsDefault
? _methodSymbol.Parameters.SelectAsArray(p => new ParameterName(p.Name, isFixed: true))
: _parameterNames.SelectAsArray(p => new ParameterName(p, isFixed: true));
protected override ImmutableArray<ITypeSymbol> DetermineTypeArguments(CancellationToken cancellationToken)
=> [];
}
}
|