in ReSharper.FSharp/src/FSharp.TypeProviders.Host/FSharp.TypeProviders.Host/src/ModelCreators/ProvidedMethodCreator.cs [10:43]
public ProvidedMethodCreator(TypeProvidersContext typeProvidersContext) : base(typeProvidersContext
.ProvidedMethodsCache) => myTypeProvidersContext = typeProvidersContext;
protected override RdProvidedMethodInfo CreateRdModelInternal(ProvidedMethodInfo providedModel, int entityId,
int typeProviderId)
{
var flags = RdProvidedMethodFlags.None;
if (providedModel.IsGenericMethod) flags |= RdProvidedMethodFlags.IsGenericMethod;
if (providedModel.IsStatic) flags |= RdProvidedMethodFlags.IsStatic;
if (providedModel.IsFamily) flags |= RdProvidedMethodFlags.IsFamily;
if (providedModel.IsFamilyAndAssembly) flags |= RdProvidedMethodFlags.IsFamilyAndAssembly;
if (providedModel.IsFamilyOrAssembly) flags |= RdProvidedMethodFlags.IsFamilyOrAssembly;
if (providedModel.IsVirtual) flags |= RdProvidedMethodFlags.IsVirtual;
if (providedModel.IsFinal) flags |= RdProvidedMethodFlags.IsFinal;
if (providedModel.IsPublic) flags |= RdProvidedMethodFlags.IsPublic;
if (providedModel.IsAbstract) flags |= RdProvidedMethodFlags.IsAbstract;
if (providedModel.IsHideBySig) flags |= RdProvidedMethodFlags.IsHideBySig;
if (providedModel.IsConstructor) flags |= RdProvidedMethodFlags.IsConstructor;
var returnTypeId =
myTypeProvidersContext.ProvidedTypeRdModelsCreator.GetOrCreateId(providedModel.ReturnType, typeProviderId);
var declaringTypeId =
myTypeProvidersContext.ProvidedTypeRdModelsCreator.GetOrCreateId(providedModel.DeclaringType, typeProviderId);
var genericArgs = providedModel.IsGenericMethod
? providedModel
.GetGenericArguments()
.CreateIds(myTypeProvidersContext.ProvidedTypeRdModelsCreator, typeProviderId)
: null;
return new RdProvidedMethodInfo(returnTypeId, providedModel.MetadataToken, declaringTypeId, flags, genericArgs,
providedModel.Name, entityId);
}