| File: Actions\GrammarActions.MethodHeaders.Generics.cs | Web Access |
| Project: ILAssembler.csproj (ILAssembler) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Collections.Generic; using System.Collections.Immutable; using System.Diagnostics; using System.Reflection; namespace ILAssembler; internal sealed partial class GrammarActions { private static void RegisterGenericParameterNames( EntityRegistry.EntityBase owner, NamedElementList<EntityRegistry.GenericParameterEntity> parameters, ImmutableArray<GenericParameterDeclarationValue> declarations) { for (int i = 0; i < declarations.Length; i++) { GenericParameterDeclarationValue declaration = declarations[i]; EntityRegistry.GenericParameterEntity parameter = EntityRegistry.CreateGenericParameter(declaration.Attributes, declaration.Name); parameter.Owner = owner; parameter.Index = i; parameters.Add(parameter); } } private void MaterializeGenericParameterConstraints( NamedElementList<EntityRegistry.GenericParameterEntity> parameters, List<EntityRegistry.GenericParameterConstraintEntity> constraints, ImmutableArray<GenericParameterDeclarationValue> declarations) { Debug.Assert(parameters.Count >= declarations.Length); int count = System.Math.Min(parameters.Count, declarations.Length); for (int i = 0; i < count; i++) { EntityRegistry.GenericParameterEntity parameter = parameters[i]; foreach (TypeSpecificationValue constraintType in declarations[i].Constraints) { EntityRegistry.GenericParameterConstraintEntity constraint = EntityRegistry.CreateGenericConstraint(ResolveTypeSpecification(constraintType)); constraint.Owner = parameter; parameter.Constraints.Add(constraint); constraints.Add(constraint); } } } }