meowlang/typechecker/types/GenericStructTypeDescription.cs

21 lines
754 B
C#
Raw Normal View History

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<string> genericNames, List<(string Name, GenericTypeId Type)> members) : base(genericNames)
{
_members = members;
CheckGenericNames(members.Select(x => x.Type).ToList());
}
public override StructTypeDescription Concretize(List<Guid> typeParams)
{
var members = _members.Select(x => (x.Name, ConcretizeGenericType(x.Type, typeParams))).ToList();
return new StructTypeDescription(members);
}
}