meowlang/typechecker/types/GenericEnumTypeDescription.cs
Gwendolyn d6bdd08002 loooots of stuff
the typechecker project can collect all the top level types from a file, which is pretty cool I think
(except for pointers, those aren't implemented yet...)
2022-02-13 02:41:16 +01:00

21 lines
741 B
C#

namespace meowlang.typechecker;
public record GenericEnumTypeDescription : GenericTypeDescription
{
private readonly List<(string Name, GenericTypeId? Type)> _members;
public GenericEnumTypeDescription(List<string> 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<Guid> typeParams)
{
var members = _members.Select(x =>
x.Type == null ? (x.Name, null) : (x.Name, ConcretizeGenericType(x.Type, typeParams))).ToList();
return new EnumTypeDescription(members);
}
}