[Mlir-commits] [mlir] [NFC][MLIR][TableGen] Eliminate `llvm::` for common types in LSP Server (PR #110867)

Rahul Joshi llvmlistbot at llvm.org
Wed Oct 2 08:20:17 PDT 2024


https://github.com/jurahul created https://github.com/llvm/llvm-project/pull/110867

None

>From 6a8d6c8535ffc201e4b1f1e793fe0c9b9e77afd0 Mon Sep 17 00:00:00 2001
From: Rahul Joshi <rjoshi at nvidia.com>
Date: Wed, 2 Oct 2024 08:18:08 -0700
Subject: [PATCH] [NFC][MLIR][TableGen] Eliminate `llvm::` for common types in
 LSP Server

---
 .../tblgen-lsp-server/TableGenServer.cpp      | 106 +++++++++---------
 1 file changed, 51 insertions(+), 55 deletions(-)

diff --git a/mlir/lib/Tools/tblgen-lsp-server/TableGenServer.cpp b/mlir/lib/Tools/tblgen-lsp-server/TableGenServer.cpp
index f7cf4de58a0e08..94db1798e1179b 100644
--- a/mlir/lib/Tools/tblgen-lsp-server/TableGenServer.cpp
+++ b/mlir/lib/Tools/tblgen-lsp-server/TableGenServer.cpp
@@ -22,6 +22,10 @@
 #include <optional>
 
 using namespace mlir;
+using llvm::Record;
+using llvm::RecordKeeper;
+using llvm::RecordVal;
+using llvm::SourceMgr;
 
 /// Returns the range of a lexical token given a SMLoc corresponding to the
 /// start of an token location. The range is computed heuristically, and
@@ -32,7 +36,7 @@ static SMRange convertTokenLocToRange(SMLoc loc) {
 
 /// Returns a language server uri for the given source location. `mainFileURI`
 /// corresponds to the uri for the main file of the source manager.
-static lsp::URIForFile getURIFromLoc(const llvm::SourceMgr &mgr, SMLoc loc,
+static lsp::URIForFile getURIFromLoc(const SourceMgr &mgr, SMLoc loc,
                                      const lsp::URIForFile &mainFileURI) {
   int bufferId = mgr.FindBufferContainingLoc(loc);
   if (bufferId == 0 || bufferId == static_cast<int>(mgr.getMainFileID()))
@@ -47,12 +51,12 @@ static lsp::URIForFile getURIFromLoc(const llvm::SourceMgr &mgr, SMLoc loc,
 }
 
 /// Returns a language server location from the given source range.
-static lsp::Location getLocationFromLoc(llvm::SourceMgr &mgr, SMRange loc,
+static lsp::Location getLocationFromLoc(SourceMgr &mgr, SMRange loc,
                                         const lsp::URIForFile &uri) {
   return lsp::Location(getURIFromLoc(mgr, loc.Start, uri),
                        lsp::Range(mgr, loc));
 }
-static lsp::Location getLocationFromLoc(llvm::SourceMgr &mgr, SMLoc loc,
+static lsp::Location getLocationFromLoc(SourceMgr &mgr, SMLoc loc,
                                         const lsp::URIForFile &uri) {
   return getLocationFromLoc(mgr, convertTokenLocToRange(loc), uri);
 }
@@ -61,7 +65,7 @@ static lsp::Location getLocationFromLoc(llvm::SourceMgr &mgr, SMLoc loc,
 static std::optional<lsp::Diagnostic>
 getLspDiagnoticFromDiag(const llvm::SMDiagnostic &diag,
                         const lsp::URIForFile &uri) {
-  auto *sourceMgr = const_cast<llvm::SourceMgr *>(diag.getSourceMgr());
+  auto *sourceMgr = const_cast<SourceMgr *>(diag.getSourceMgr());
   if (!sourceMgr || !diag.getLoc().isValid())
     return std::nullopt;
 
@@ -79,17 +83,17 @@ getLspDiagnoticFromDiag(const llvm::SMDiagnostic &diag,
 
   // Convert the severity for the diagnostic.
   switch (diag.getKind()) {
-  case llvm::SourceMgr::DK_Warning:
+  case SourceMgr::DK_Warning:
     lspDiag.severity = lsp::DiagnosticSeverity::Warning;
     break;
-  case llvm::SourceMgr::DK_Error:
+  case SourceMgr::DK_Error:
     lspDiag.severity = lsp::DiagnosticSeverity::Error;
     break;
-  case llvm::SourceMgr::DK_Note:
+  case SourceMgr::DK_Note:
     // Notes are emitted separately from the main diagnostic, so we just treat
     // them as remarks given that we can't determine the diagnostic to relate
     // them to.
-  case llvm::SourceMgr::DK_Remark:
+  case SourceMgr::DK_Remark:
     lspDiag.severity = lsp::DiagnosticSeverity::Information;
     break;
   }
@@ -100,16 +104,15 @@ getLspDiagnoticFromDiag(const llvm::SMDiagnostic &diag,
 
 /// Get the base definition of the given record value, or nullptr if one
 /// couldn't be found.
-static std::pair<const llvm::Record *, const llvm::RecordVal *>
-getBaseValue(const llvm::Record *record, const llvm::RecordVal *value) {
+static std::pair<const Record *, const RecordVal *>
+getBaseValue(const Record *record, const RecordVal *value) {
   if (value->isTemplateArg())
     return {nullptr, nullptr};
 
   // Find a base value for the field in the super classes of the given record.
   // On success, `record` is updated to the new parent record.
   StringRef valueName = value->getName();
-  auto findValueInSupers =
-      [&](const llvm::Record *&record) -> llvm::RecordVal * {
+  auto findValueInSupers = [&](const Record *&record) -> RecordVal * {
     for (auto [parentRecord, loc] : record->getSuperClasses()) {
       if (auto *newBase = parentRecord->getValue(valueName)) {
         record = parentRecord;
@@ -120,8 +123,8 @@ getBaseValue(const llvm::Record *record, const llvm::RecordVal *value) {
   };
 
   // Try to find the lowest definition of the record value.
-  std::pair<const llvm::Record *, const llvm::RecordVal *> baseValue = {};
-  while (const llvm::RecordVal *newBase = findValueInSupers(record))
+  std::pair<const Record *, const RecordVal *> baseValue = {};
+  while (const RecordVal *newBase = findValueInSupers(record))
     baseValue = {record, newBase};
 
   // Check that the base isn't the same as the current value (e.g. if the value
@@ -140,15 +143,15 @@ namespace {
 /// contains the definition of the symbol, the location of the symbol, and any
 /// recorded references.
 struct TableGenIndexSymbol {
-  TableGenIndexSymbol(const llvm::Record *record)
+  TableGenIndexSymbol(const Record *record)
       : definition(record),
         defLoc(convertTokenLocToRange(record->getLoc().front())) {}
-  TableGenIndexSymbol(const llvm::RecordVal *value)
+  TableGenIndexSymbol(const RecordVal *value)
       : definition(value), defLoc(convertTokenLocToRange(value->getLoc())) {}
   virtual ~TableGenIndexSymbol() = default;
 
   // The main definition of the symbol.
-  PointerUnion<const llvm::Record *, const llvm::RecordVal *> definition;
+  PointerUnion<const Record *, const RecordVal *> definition;
 
   /// The source location of the definition.
   SMRange defLoc;
@@ -158,37 +161,33 @@ struct TableGenIndexSymbol {
 };
 /// This class represents a single record symbol.
 struct TableGenRecordSymbol : public TableGenIndexSymbol {
-  TableGenRecordSymbol(const llvm::Record *record)
-      : TableGenIndexSymbol(record) {}
+  TableGenRecordSymbol(const Record *record) : TableGenIndexSymbol(record) {}
   ~TableGenRecordSymbol() override = default;
 
   static bool classof(const TableGenIndexSymbol *symbol) {
-    return symbol->definition.is<const llvm::Record *>();
+    return symbol->definition.is<const Record *>();
   }
 
   /// Return the value of this symbol.
-  const llvm::Record *getValue() const {
-    return definition.get<const llvm::Record *>();
-  }
+  const Record *getValue() const { return definition.get<const Record *>(); }
 };
 /// This class represents a single record value symbol.
 struct TableGenRecordValSymbol : public TableGenIndexSymbol {
-  TableGenRecordValSymbol(const llvm::Record *record,
-                          const llvm::RecordVal *value)
+  TableGenRecordValSymbol(const Record *record, const RecordVal *value)
       : TableGenIndexSymbol(value), record(record) {}
   ~TableGenRecordValSymbol() override = default;
 
   static bool classof(const TableGenIndexSymbol *symbol) {
-    return symbol->definition.is<const llvm::RecordVal *>();
+    return symbol->definition.is<const RecordVal *>();
   }
 
   /// Return the value of this symbol.
-  const llvm::RecordVal *getValue() const {
-    return definition.get<const llvm::RecordVal *>();
+  const RecordVal *getValue() const {
+    return definition.get<const RecordVal *>();
   }
 
   /// The parent record of this symbol.
-  const llvm::Record *record;
+  const Record *record;
 };
 
 /// This class provides an index for definitions/uses within a TableGen
@@ -199,7 +198,7 @@ class TableGenIndex {
   TableGenIndex() : intervalMap(allocator) {}
 
   /// Initialize the index with the given RecordKeeper.
-  void initialize(const llvm::RecordKeeper &records);
+  void initialize(const RecordKeeper &records);
 
   /// Lookup a symbol for the given location. Returns nullptr if no symbol could
   /// be found. If provided, `overlappedRange` is set to the range that the
@@ -217,15 +216,15 @@ class TableGenIndex {
       llvm::IntervalMapHalfOpenInfo<const char *>>;
 
   /// Get or insert a symbol for the given record.
-  TableGenIndexSymbol *getOrInsertDef(const llvm::Record *record) {
+  TableGenIndexSymbol *getOrInsertDef(const Record *record) {
     auto it = defToSymbol.try_emplace(record, nullptr);
     if (it.second)
       it.first->second = std::make_unique<TableGenRecordSymbol>(record);
     return &*it.first->second;
   }
   /// Get or insert a symbol for the given record value.
-  TableGenIndexSymbol *getOrInsertDef(const llvm::Record *record,
-                                      const llvm::RecordVal *value) {
+  TableGenIndexSymbol *getOrInsertDef(const Record *record,
+                                      const RecordVal *value) {
     auto it = defToSymbol.try_emplace(value, nullptr);
     if (it.second) {
       it.first->second =
@@ -246,7 +245,7 @@ class TableGenIndex {
 };
 } // namespace
 
-void TableGenIndex::initialize(const llvm::RecordKeeper &records) {
+void TableGenIndex::initialize(const RecordKeeper &records) {
   intervalMap.clear();
   defToSymbol.clear();
 
@@ -282,7 +281,7 @@ void TableGenIndex::initialize(const llvm::RecordKeeper &records) {
       llvm::make_pointee_range(llvm::make_second_range(records.getClasses()));
   auto defs =
       llvm::make_pointee_range(llvm::make_second_range(records.getDefs()));
-  for (const llvm::Record &def : llvm::concat<llvm::Record>(classes, defs)) {
+  for (const Record &def : llvm::concat<Record>(classes, defs)) {
     auto *sym = getOrInsertDef(&def);
     insertRef(sym, sym->defLoc, /*isDef=*/true);
 
@@ -293,7 +292,7 @@ void TableGenIndex::initialize(const llvm::RecordKeeper &records) {
       insertRef(sym, loc);
 
     // Add definitions for any values.
-    for (const llvm::RecordVal &value : def.getValues()) {
+    for (const RecordVal &value : def.getValues()) {
       auto *sym = getOrInsertDef(&def, &value);
       insertRef(sym, sym->defLoc, /*isDef=*/true);
       for (SMRange refLoc : value.getReferenceLocs())
@@ -359,13 +358,12 @@ class TableGenTextFile {
 
   std::optional<lsp::Hover> findHover(const lsp::URIForFile &uri,
                                       const lsp::Position &hoverPos);
-  lsp::Hover buildHoverForRecord(const llvm::Record *record,
+  lsp::Hover buildHoverForRecord(const Record *record,
                                  const SMRange &hoverRange);
-  lsp::Hover buildHoverForTemplateArg(const llvm::Record *record,
-                                      const llvm::RecordVal *value,
+  lsp::Hover buildHoverForTemplateArg(const Record *record,
+                                      const RecordVal *value,
                                       const SMRange &hoverRange);
-  lsp::Hover buildHoverForField(const llvm::Record *record,
-                                const llvm::RecordVal *value,
+  lsp::Hover buildHoverForField(const Record *record, const RecordVal *value,
                                 const SMRange &hoverRange);
 
 private:
@@ -383,10 +381,10 @@ class TableGenTextFile {
   std::vector<std::string> includeDirs;
 
   /// The source manager containing the contents of the input file.
-  llvm::SourceMgr sourceMgr;
+  SourceMgr sourceMgr;
 
   /// The record keeper containing the parsed tablegen constructs.
-  std::unique_ptr<llvm::RecordKeeper> recordKeeper;
+  std::unique_ptr<RecordKeeper> recordKeeper;
 
   /// The index of the parsed file.
   TableGenIndex index;
@@ -430,8 +428,8 @@ void TableGenTextFile::initialize(const lsp::URIForFile &uri,
                                   int64_t newVersion,
                                   std::vector<lsp::Diagnostic> &diagnostics) {
   version = newVersion;
-  sourceMgr = llvm::SourceMgr();
-  recordKeeper = std::make_unique<llvm::RecordKeeper>();
+  sourceMgr = SourceMgr();
+  recordKeeper = std::make_unique<RecordKeeper>();
 
   // Build a buffer for this file.
   auto memBuffer = llvm::MemoryBuffer::getMemBuffer(contents, uri.file());
@@ -442,7 +440,7 @@ void TableGenTextFile::initialize(const lsp::URIForFile &uri,
   sourceMgr.setIncludeDirs(includeDirs);
   sourceMgr.AddNewSourceBuffer(std::move(memBuffer), SMLoc());
 
-  // This class provides a context argument for the llvm::SourceMgr diagnostic
+  // This class provides a context argument for the SourceMgr diagnostic
   // handler.
   struct DiagHandlerContext {
     std::vector<lsp::Diagnostic> &diagnostics;
@@ -543,13 +541,13 @@ TableGenTextFile::findHover(const lsp::URIForFile &uri,
   // Build hover for a RecordVal, which is either a template argument or a
   // field.
   auto *recordVal = cast<TableGenRecordValSymbol>(symbol);
-  const llvm::RecordVal *value = recordVal->getValue();
+  const RecordVal *value = recordVal->getValue();
   if (value->isTemplateArg())
     return buildHoverForTemplateArg(recordVal->record, value, hoverRange);
   return buildHoverForField(recordVal->record, value, hoverRange);
 }
 
-lsp::Hover TableGenTextFile::buildHoverForRecord(const llvm::Record *record,
+lsp::Hover TableGenTextFile::buildHoverForRecord(const Record *record,
                                                  const SMRange &hoverRange) {
   lsp::Hover hover(lsp::Range(sourceMgr, hoverRange));
   {
@@ -570,7 +568,7 @@ lsp::Hover TableGenTextFile::buildHoverForRecord(const llvm::Record *record,
     auto printAndFormatField = [&](StringRef fieldName) {
       // Check that the record actually has the given field, and that it's a
       // string.
-      const llvm::RecordVal *value = record->getValue(fieldName);
+      const RecordVal *value = record->getValue(fieldName);
       if (!value || !value->getValue())
         return;
       auto *stringValue = dyn_cast<llvm::StringInit>(value->getValue());
@@ -593,10 +591,8 @@ lsp::Hover TableGenTextFile::buildHoverForRecord(const llvm::Record *record,
   return hover;
 }
 
-lsp::Hover
-TableGenTextFile::buildHoverForTemplateArg(const llvm::Record *record,
-                                           const llvm::RecordVal *value,
-                                           const SMRange &hoverRange) {
+lsp::Hover TableGenTextFile::buildHoverForTemplateArg(
+    const Record *record, const RecordVal *value, const SMRange &hoverRange) {
   lsp::Hover hover(lsp::Range(sourceMgr, hoverRange));
   {
     llvm::raw_string_ostream hoverOS(hover.contents.value);
@@ -609,8 +605,8 @@ TableGenTextFile::buildHoverForTemplateArg(const llvm::Record *record,
   return hover;
 }
 
-lsp::Hover TableGenTextFile::buildHoverForField(const llvm::Record *record,
-                                                const llvm::RecordVal *value,
+lsp::Hover TableGenTextFile::buildHoverForField(const Record *record,
+                                                const RecordVal *value,
                                                 const SMRange &hoverRange) {
   lsp::Hover hover(lsp::Range(sourceMgr, hoverRange));
   {



More information about the Mlir-commits mailing list