namespace meowlang.typechecker; public record EnumTypeDescription : TypeDescription { private readonly List<(string Name, TypeId? Type)> _members; private readonly Dictionary _memberMap; public Dictionary DebugGetMembers => _memberMap; public EnumTypeDescription(List<(string Name, TypeId? Type)> members) { _members = members; _memberMap = members.ToDictionary(x => x.Name, x => x.Type); } public IReadOnlyList MemberNames => _members.Select(x => x.Name).ToList(); public TypeId? GetTypeForMember(string name) { return _memberMap.TryGetValue(name, out var value) ? value : throw new UnknownEnumMemberException(name); } public bool HasMember(string name) => _memberMap.ContainsKey(name); };