[Mlir-commits] [mlir] [mlir] Improve mlir-query by adding matcher combinators (PR #141423)
Jacques Pienaar
llvmlistbot at llvm.org
Mon Jun 9 05:32:16 PDT 2025
================
@@ -153,6 +158,54 @@ class FixedArgCountMatcherDescriptor : public MatcherDescriptor {
const std::vector<ArgKind> argKinds;
};
+class VariadicOperatorMatcherDescriptor : public MatcherDescriptor {
+public:
+ using VarOp = DynMatcher::VariadicOperator;
+ VariadicOperatorMatcherDescriptor(unsigned minCount, unsigned maxCount,
+ VarOp varOp, StringRef matcherName)
+ : minCount(minCount), maxCount(maxCount), varOp(varOp),
+ matcherName(matcherName) {}
+
+ VariantMatcher create(SourceRange nameRange, ArrayRef<ParserValue> args,
+ Diagnostics *error) const override {
+ if (args.size() < minCount || maxCount < args.size()) {
+ addError(error, nameRange, ErrorType::RegistryWrongArgCount,
+ {llvm::Twine("requires between "), llvm::Twine(minCount),
+ llvm::Twine(" and "), llvm::Twine(maxCount),
+ llvm::Twine(" args, got "), llvm::Twine(args.size())});
+ return VariantMatcher();
+ }
+
+ std::vector<VariantMatcher> innerArgs;
+ for (int64_t i = 0, e = args.size(); i != e; ++i) {
+ const ParserValue &arg = args[i];
+ const VariantValue &value = arg.value;
+ if (!value.isMatcher()) {
+ addError(error, arg.range, ErrorType::RegistryWrongArgType,
+ {llvm::Twine(i + 1), llvm::Twine("Matcher: "),
----------------
jpienaar wrote:
s/Matcher/matcher/ - I think most are lower case here (LLVM error convention is that, but not sure if different here, above one follows LLVM style).
https://github.com/llvm/llvm-project/pull/141423
More information about the Mlir-commits
mailing list