diff options
Diffstat (limited to 'mlir/lib/Query/Matcher/RegistryManager.cpp')
| -rw-r--r-- | mlir/lib/Query/Matcher/RegistryManager.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/mlir/lib/Query/Matcher/RegistryManager.cpp b/mlir/lib/Query/Matcher/RegistryManager.cpp index 4b511c5f009e..08b610453b11 100644 --- a/mlir/lib/Query/Matcher/RegistryManager.cpp +++ b/mlir/lib/Query/Matcher/RegistryManager.cpp @@ -64,7 +64,7 @@ std::vector<ArgKind> RegistryManager::getAcceptedCompletionTypes( unsigned argNumber = ctxEntry.second; std::vector<ArgKind> nextTypeSet; - if (argNumber < ctor->getNumArgs()) + if (ctor->isVariadic() || argNumber < ctor->getNumArgs()) ctor->getArgKinds(argNumber, nextTypeSet); typeSet.insert(nextTypeSet.begin(), nextTypeSet.end()); @@ -83,7 +83,7 @@ RegistryManager::getMatcherCompletions(llvm::ArrayRef<ArgKind> acceptedTypes, const internal::MatcherDescriptor &matcher = *m.getValue(); llvm::StringRef name = m.getKey(); - unsigned numArgs = matcher.getNumArgs(); + unsigned numArgs = matcher.isVariadic() ? 1 : matcher.getNumArgs(); std::vector<std::vector<ArgKind>> argKinds(numArgs); for (const ArgKind &kind : acceptedTypes) { @@ -115,6 +115,9 @@ RegistryManager::getMatcherCompletions(llvm::ArrayRef<ArgKind> acceptedTypes, } } + if (matcher.isVariadic()) + os << ",..."; + os << ")"; typedText += "("; |
