in src/powerquery-parser/language/type/typeUtils/categorize.ts [476:539]
function addTypeIfUniqueType(category: TypeCategory, type: Type.TType): TypeCategory {
assertIsCategoryForType<Type.TType, TypeCategory>(category, type);
switch (type.maybeExtendedKind) {
case Type.ExtendedTypeKind.DefinedListType: {
return {
...category,
definedListTypes: category.definedListTypes.add(type),
};
}
case Type.ExtendedTypeKind.FunctionType: {
return {
...category,
functionTypes: category.functionTypes.add(type),
};
}
case Type.ExtendedTypeKind.ListType: {
return {
...category,
listTypes: category.listTypes.add(type),
};
}
case Type.ExtendedTypeKind.PrimaryPrimitiveType: {
return {
...category,
primaryPrimitiveTypes: category.primaryPrimitiveTypes.add(type),
};
}
case Type.ExtendedTypeKind.RecordType: {
return {
...category,
recordTypes: category.recordTypes.add(type),
};
}
case Type.ExtendedTypeKind.TableType: {
return {
...category,
tableTypes: category.tableTypes.add(type),
};
}
case Type.ExtendedTypeKind.TableTypePrimaryExpression: {
return {
...category,
tablePrimaryExpressionTypes: category.tablePrimaryExpressionTypes.add(type),
};
}
case undefined: {
return {
...category,
primitives: category.primitives.add(type),
};
}
default:
throw Assert.isNever(type);
}
}