function addTypeIfUniqueType()

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);
    }
}