in src/search/ir_pass.h [40:102]
std::unique_ptr<Node> Transform(std::unique_ptr<Node> node) override {
if (auto v = Node::As<SearchExpr>(std::move(node))) {
return Visit(std::move(v));
} else if (auto v = Node::As<SelectClause>(std::move(node))) {
return Visit(std::move(v));
} else if (auto v = Node::As<IndexRef>(std::move(node))) {
return Visit(std::move(v));
} else if (auto v = Node::As<LimitClause>(std::move(node))) {
return Visit(std::move(v));
} else if (auto v = Node::As<SortByClause>(std::move(node))) {
return Visit(std::move(v));
} else if (auto v = Node::As<AndExpr>(std::move(node))) {
return Visit(std::move(v));
} else if (auto v = Node::As<OrExpr>(std::move(node))) {
return Visit(std::move(v));
} else if (auto v = Node::As<NotExpr>(std::move(node))) {
return Visit(std::move(v));
} else if (auto v = Node::As<NumericCompareExpr>(std::move(node))) {
return Visit(std::move(v));
} else if (auto v = Node::As<NumericLiteral>(std::move(node))) {
return Visit(std::move(v));
} else if (auto v = Node::As<FieldRef>(std::move(node))) {
return Visit(std::move(v));
} else if (auto v = Node::As<TagContainExpr>(std::move(node))) {
return Visit(std::move(v));
} else if (auto v = Node::As<VectorLiteral>(std::move(node))) {
return Visit(std::move(v));
} else if (auto v = Node::As<VectorKnnExpr>(std::move(node))) {
return Visit(std::move(v));
} else if (auto v = Node::As<VectorRangeExpr>(std::move(node))) {
return Visit(std::move(v));
} else if (auto v = Node::As<StringLiteral>(std::move(node))) {
return Visit(std::move(v));
} else if (auto v = Node::As<BoolLiteral>(std::move(node))) {
return Visit(std::move(v));
} else if (auto v = Node::As<FullIndexScan>(std::move(node))) {
return Visit(std::move(v));
} else if (auto v = Node::As<NumericFieldScan>(std::move(node))) {
return Visit(std::move(v));
} else if (auto v = Node::As<TagFieldScan>(std::move(node))) {
return Visit(std::move(v));
} else if (auto v = Node::As<HnswVectorFieldRangeScan>(std::move(node))) {
return Visit(std::move(v));
} else if (auto v = Node::As<HnswVectorFieldKnnScan>(std::move(node))) {
return Visit(std::move(v));
} else if (auto v = Node::As<Filter>(std::move(node))) {
return Visit(std::move(v));
} else if (auto v = Node::As<Limit>(std::move(node))) {
return Visit(std::move(v));
} else if (auto v = Node::As<Merge>(std::move(node))) {
return Visit(std::move(v));
} else if (auto v = Node::As<Sort>(std::move(node))) {
return Visit(std::move(v));
} else if (auto v = Node::As<TopNSort>(std::move(node))) {
return Visit(std::move(v));
} else if (auto v = Node::As<Projection>(std::move(node))) {
return Visit(std::move(v));
} else if (auto v = Node::As<Noop>(std::move(node))) {
return Visit(std::move(v));
}
unreachable();
}