[Mlir-commits] [mlir] [mlir] Expand error message to include unregistered dialects. (PR #158028)
Mehdi Amini
llvmlistbot at llvm.org
Fri Sep 12 06:45:13 PDT 2025
================
@@ -2077,9 +2077,45 @@ OperationParser::parseCustomOperation(ArrayRef<ResultRecord> resultIDs) {
diag << " (tried '" << opName << "' as well)";
auto ¬e = diag.attachNote();
note << "Registered dialects: ";
- llvm::interleaveComma(getContext()->getAvailableDialects(), note,
- [&](StringRef dialect) { note << dialect; });
- note << " ; for more info on dialect registration see "
+ std::vector<StringRef> registered = getContext()->getAvailableDialects();
+ auto loaded = getContext()->getLoadedDialects();
+
+ // Merge the sorted lists of registered and loaded dialects.
+ SmallVector<std::pair<StringRef, bool>> mergedDialects;
+ auto regIt = registered.begin(), regEnd = registered.end();
+ auto loadIt = loaded.rbegin(), loadEnd = loaded.rend();
+ bool isRegistered = false;
+ bool isOnlyLoaded = true;
+ while (regIt != regEnd && loadIt != loadEnd) {
+ StringRef reg = *regIt;
+ StringRef load = (*loadIt)->getNamespace();
+ if (reg < load) {
+ mergedDialects.emplace_back(*regIt++, isRegistered);
+ } else if (load < reg) {
+ mergedDialects.emplace_back(load, isOnlyLoaded);
+ loadIt++;
+ } else {
+ mergedDialects.emplace_back(*regIt++, isRegistered);
+ loadIt++;
+ }
----------------
joker-eph wrote:
```suggestion
if (load < reg) {
mergedDialects.emplace_back(load, isOnlyLoaded);
++loadIt;
} else {
mergedDialects.emplace_back(reg, isRegistered);
++regIt;
if (reg == load)
++loadIt;
}
```
Just a suggestion, I was trying various refactor to help readability of this loop.
https://github.com/llvm/llvm-project/pull/158028
More information about the Mlir-commits
mailing list