[Mlir-commits] [mlir] [mlir][lsp] Downgrade unregistered dialect error. (PR #143346)

Jacques Pienaar llvmlistbot at llvm.org
Sun Jun 8 22:10:33 PDT 2025


https://github.com/jpienaar created https://github.com/llvm/llvm-project/pull/143346

Currently its an error, but its not a user error akin to invalid syntax or unverified IR. Rather treat as warning so that user is informed, but not error.

>From a1cf2bfaa22ae865d0caf4ea39181f467eab0d5c Mon Sep 17 00:00:00 2001
From: Jacques Pienaar <jpienaar at google.com>
Date: Mon, 9 Jun 2025 05:09:12 +0000
Subject: [PATCH] [mlir][lsp] Downgrade unregistered dialect error.

Currently its an error, but its not a user error akin to invalid syntax
or unverified IR. Rather treat as warning so that user is informed, but
not error.
---
 mlir/lib/Tools/mlir-lsp-server/MLIRServer.cpp | 11 ++++++++++
 mlir/test/mlir-lsp-server/diagnostics.test    | 22 +++++++++++++++++++
 2 files changed, 33 insertions(+)

diff --git a/mlir/lib/Tools/mlir-lsp-server/MLIRServer.cpp b/mlir/lib/Tools/mlir-lsp-server/MLIRServer.cpp
index 61987525a5ca5..e4fe23210f781 100644
--- a/mlir/lib/Tools/mlir-lsp-server/MLIRServer.cpp
+++ b/mlir/lib/Tools/mlir-lsp-server/MLIRServer.cpp
@@ -231,6 +231,17 @@ static lsp::Diagnostic getLspDiagnoticFromDiag(llvm::SourceMgr &sourceMgr,
   }
   lspDiag.message = diag.str();
 
+  // Downgrade errors related to unregistered dialects. We want to be able to
+  // provide the user with headsup about why the file didn't parse, but it is
+  // not an error in the same way invalid syntax or op that failed verification
+  // is. Chose to make it a warning rather than information as it could be due
+  // to typo (and so addressable by the user).
+  if (lspDiag.severity == lsp::DiagnosticSeverity::Error &&
+      lspDiag.message.starts_with("Dialect `") &&
+      StringRef(lspDiag.message).contains("not found for custom op")) {
+    lspDiag.severity = lsp::DiagnosticSeverity::Warning;
+  }
+
   // Attach any notes to the main diagnostic as related information.
   std::vector<lsp::DiagnosticRelatedInformation> relatedDiags;
   for (Diagnostic &note : diag.getNotes()) {
diff --git a/mlir/test/mlir-lsp-server/diagnostics.test b/mlir/test/mlir-lsp-server/diagnostics.test
index 99edd11b574f5..8ee9be61d3214 100644
--- a/mlir/test/mlir-lsp-server/diagnostics.test
+++ b/mlir/test/mlir-lsp-server/diagnostics.test
@@ -61,6 +61,28 @@
 // CHECK-NEXT:     "version": 1
 // CHECK-NEXT:   }
 // -----
+{"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{
+  "uri":"test:///foo.mlir",
+  "languageId":"mlir",
+  "version":1,
+  "text":"unregistered.func.func ()"
+}}}
+// CHECK: "method": "textDocument/publishDiagnostics",
+// CHECK-NEXT: "params": {
+// CHECK-NEXT:     "diagnostics": [
+// CHECK-NEXT:       {
+// CHECK-NEXT:         "category": "Parse Error",
+// Note: If the next lines need change, please update the corresponding logic
+// in MLIRServer.cpp to ensure the severity is still set as expected.
+// CHECK-NEXT:         "message": "Dialect `unregistered' not found for custom
+// CHECK:              "severity": 2,
+// CHECK-NEXT:         "source": "mlir"
+// CHECK-NEXT:       }
+// CHECK-NEXT:     ],
+// CHECK-NEXT:     "uri": "test:///foo.mlir",
+// CHECK-NEXT:     "version": 1
+// CHECK-NEXT:   }
+// -----
 {"jsonrpc":"2.0","id":3,"method":"shutdown"}
 // -----
 {"jsonrpc":"2.0","method":"exit"}



More information about the Mlir-commits mailing list