namespace meowlang.typechecker; public record GenericStructTypeDescription : GenericTypeDescription { private readonly List<(string Name, GenericTypeId Type)> _members; public List<(string Name, GenericTypeId Type)> DebugGetMembers => _members; public GenericStructTypeDescription(List genericNames, List<(string Name, GenericTypeId Type)> members) : base(genericNames) { _members = members; CheckGenericNames(members.Select(x => x.Type).ToList()); } public override StructTypeDescription Concretize(List typeParams) { var members = _members.Select(x => (x.Name, ConcretizeGenericType(x.Type, typeParams))).ToList(); return new StructTypeDescription(members); } }