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