Author: Ben Langmuir
Date: 2026-05-26T09:18:23-07:00
New Revision: b0a58b5d4dff8e162c17941560e5014ed9010687

URL: 
https://github.com/llvm/llvm-project/commit/b0a58b5d4dff8e162c17941560e5014ed9010687
DIFF: 
https://github.com/llvm/llvm-project/commit/b0a58b5d4dff8e162c17941560e5014ed9010687.diff

LOG: Revert "[clang] Use FileError in FileManager::getFileRef, getDirectoryRef 
(#1…"

This reverts commit b081351c7e20a26a6e67b3e82c065f02e4cce8d8.

Added: 
    

Modified: 
    clang/lib/Basic/FileManager.cpp
    clang/lib/Lex/HeaderSearch.cpp
    clang/unittests/Basic/FileManagerTest.cpp

Removed: 
    


################################################################################
diff  --git a/clang/lib/Basic/FileManager.cpp b/clang/lib/Basic/FileManager.cpp
index 477f34a509daf..a126d14087963 100644
--- a/clang/lib/Basic/FileManager.cpp
+++ b/clang/lib/Basic/FileManager.cpp
@@ -21,7 +21,6 @@
 #include "llvm/ADT/SmallString.h"
 #include "llvm/ADT/Statistic.h"
 #include "llvm/Config/llvm-config.h"
-#include "llvm/Support/Error.h"
 #include "llvm/Support/FileSystem.h"
 #include "llvm/Support/IOSandbox.h"
 #include "llvm/Support/MemoryBuffer.h"
@@ -89,12 +88,11 @@ static llvm::Expected<DirectoryEntryRef>
 getDirectoryFromFile(FileManager &FileMgr, StringRef Filename,
                      bool CacheFailure) {
   if (Filename.empty())
-    return llvm::createFileError(
-        Filename, make_error_code(std::errc::no_such_file_or_directory));
+    return llvm::errorCodeToError(
+        make_error_code(std::errc::no_such_file_or_directory));
 
   if (llvm::sys::path::is_separator(Filename[Filename.size() - 1]))
-    return llvm::createFileError(Filename,
-                                 make_error_code(std::errc::is_a_directory));
+    return llvm::errorCodeToError(make_error_code(std::errc::is_a_directory));
 
   StringRef DirName = llvm::sys::path::parent_path(Filename);
   // Use the current directory if file has no path component.
@@ -178,8 +176,7 @@ FileManager::getDirectoryRef(StringRef DirName, bool 
CacheFailure) {
   if (!SeenDirInsertResult.second) {
     if (SeenDirInsertResult.first->second)
       return DirectoryEntryRef(*SeenDirInsertResult.first);
-    return llvm::createFileError(DirName,
-                                 SeenDirInsertResult.first->second.getError());
+    return 
llvm::errorCodeToError(SeenDirInsertResult.first->second.getError());
   }
 
   // We've not seen this before. Fill it in.
@@ -201,7 +198,7 @@ FileManager::getDirectoryRef(StringRef DirName, bool 
CacheFailure) {
       NamedDirEnt.second = statError;
     else
       SeenDirEntries.erase(DirName);
-    return llvm::createFileError(DirName, statError);
+    return llvm::errorCodeToError(statError);
   }
 
   // It exists.
@@ -222,8 +219,8 @@ llvm::Expected<FileEntryRef> 
FileManager::getFileRef(StringRef Filename,
       SeenFileEntries.insert({Filename, std::errc::no_such_file_or_directory});
   if (!SeenFileInsertResult.second) {
     if (!SeenFileInsertResult.first->second)
-      return llvm::createFileError(
-          Filename, SeenFileInsertResult.first->second.getError());
+      return llvm::errorCodeToError(
+          SeenFileInsertResult.first->second.getError());
     return FileEntryRef(*SeenFileInsertResult.first);
   }
 
@@ -249,7 +246,7 @@ llvm::Expected<FileEntryRef> 
FileManager::getFileRef(StringRef Filename,
     else
       SeenFileEntries.erase(Filename);
 
-    return llvm::createFileError(Filename, Err);
+    return llvm::errorCodeToError(Err);
   }
   DirectoryEntryRef DirInfo = *DirInfoOrErr;
 
@@ -268,7 +265,7 @@ llvm::Expected<FileEntryRef> 
FileManager::getFileRef(StringRef Filename,
     else
       SeenFileEntries.erase(Filename);
 
-    return llvm::createFileError(Filename, statError);
+    return llvm::errorCodeToError(statError);
   }
 
   assert((openFile || !F) && "undesired open file");
@@ -370,7 +367,7 @@ llvm::Expected<FileEntryRef> FileManager::getSTDIN() {
   }();
 
   if (!ContentOrError)
-    return llvm::createFileError("-", ContentOrError.getError());
+    return llvm::errorCodeToError(ContentOrError.getError());
 
   auto Content = std::move(*ContentOrError);
   STDIN = getVirtualFileRef(Content->getBufferIdentifier(),

diff  --git a/clang/lib/Lex/HeaderSearch.cpp b/clang/lib/Lex/HeaderSearch.cpp
index 782b789f9260b..5cc2c04a68077 100644
--- a/clang/lib/Lex/HeaderSearch.cpp
+++ b/clang/lib/Lex/HeaderSearch.cpp
@@ -907,13 +907,15 @@ void HeaderSearch::diagnoseHeaderShadowing(
       const auto &IncluderAndDir = Includers[i];
       SmallString<1024> TmpDir = IncluderAndDir.second.getName();
       llvm::sys::path::append(TmpDir, Filename);
-      if (auto File = getFileMgr().getOptionalFileRef(TmpDir, false, false)) {
+      if (auto File = getFileMgr().getFileRef(TmpDir, false, false)) {
         if (&File->getFileEntry() == *FE)
           continue;
         Diags.Report(IncludeLoc, diag::warn_header_shadowing)
             << Filename << (*FE).getDir().getName()
             << IncluderAndDir.second.getName();
         return;
+      } else {
+        llvm::errorToErrorCode(File.takeError());
       }
     }
   }
@@ -932,12 +934,14 @@ void HeaderSearch::diagnoseHeaderShadowing(
       continue;
     SmallString<1024> TmpPath = It->getName();
     llvm::sys::path::append(TmpPath, Filename);
-    if (auto File = getFileMgr().getOptionalFileRef(TmpPath, false, false)) {
+    if (auto File = getFileMgr().getFileRef(TmpPath, false, false)) {
       if (&File->getFileEntry() == *FE)
         continue;
       Diags.Report(IncludeLoc, diag::warn_header_shadowing)
           << Filename << (*FE).getDir().getName() << It->getName();
       return;
+    } else {
+      llvm::errorToErrorCode(File.takeError());
     }
   }
 }

diff  --git a/clang/unittests/Basic/FileManagerTest.cpp 
b/clang/unittests/Basic/FileManagerTest.cpp
index c3f306d023fb0..e54d3f8f9e416 100644
--- a/clang/unittests/Basic/FileManagerTest.cpp
+++ b/clang/unittests/Basic/FileManagerTest.cpp
@@ -228,75 +228,6 @@ TEST_F(FileManagerTest, 
getFileReturnsErrorForNonexistentFile) {
             std::make_error_code(std::errc::not_a_directory));
 }
 
-TEST_F(FileManagerTest, getFileRefErrorIncludesFilename) {
-  auto FS = llvm::makeIntrusiveRefCnt<llvm::vfs::InMemoryFileSystem>();
-  auto EmptyBuffer = llvm::MemoryBuffer::getMemBuffer("");
-  ASSERT_TRUE(
-      FS->addFileNoOwn("/MyDirectory/file", 0, 
EmptyBuffer->getMemBufferRef()));
-  FileSystemOptions Opts;
-  FileManager Mgr(Opts, FS);
-
-  // Build the expected message for a given filename and error code, since the
-  // system-provided message text (and capitalization) for std::errc values
-  // varies by platform.
-  auto ExpectedMsg = [](StringRef Name, std::errc EC) {
-    return ("'" + Name + "': " + std::make_error_code(EC).message()).str();
-  };
-
-  // Nonexistent file.
-  auto Missing = Mgr.getFileRef("/xyz.txt");
-  ASSERT_FALSE(Missing);
-  EXPECT_EQ(ExpectedMsg("/xyz.txt", std::errc::no_such_file_or_directory),
-            llvm::toString(Missing.takeError()));
-
-  // Cached failure
-  auto MissingAgain = Mgr.getFileRef("/xyz.txt");
-  ASSERT_FALSE(MissingAgain);
-  EXPECT_EQ(std::make_error_code(std::errc::no_such_file_or_directory),
-            llvm::errorToErrorCode(MissingAgain.takeError()));
-
-  // Reading a directory as a file.
-  auto DirAsFile = Mgr.getFileRef("/MyDirectory");
-  ASSERT_FALSE(DirAsFile);
-  EXPECT_EQ(ExpectedMsg("/MyDirectory", std::errc::is_a_directory),
-            llvm::toString(DirAsFile.takeError()));
-
-  auto Trailing = Mgr.getFileRef("/some/dir/");
-  ASSERT_FALSE(Trailing);
-  EXPECT_EQ(ExpectedMsg("/some/dir/", std::errc::is_a_directory),
-            llvm::toString(Trailing.takeError()));
-}
-
-TEST_F(FileManagerTest, getDirectoryRefErrorIncludesFilename) {
-  auto FS = llvm::makeIntrusiveRefCnt<llvm::vfs::InMemoryFileSystem>();
-  auto EmptyBuffer = llvm::MemoryBuffer::getMemBuffer("");
-  ASSERT_TRUE(FS->addFileNoOwn("/foo.cpp", 0, EmptyBuffer->getMemBufferRef()));
-  FileSystemOptions Opts;
-  FileManager Mgr(Opts, FS);
-
-  auto ExpectedMsg = [](StringRef Name, std::errc EC) {
-    return ("'" + Name + "': " + std::make_error_code(EC).message()).str();
-  };
-
-  // Nonexistent directory.
-  auto Missing = Mgr.getDirectoryRef("/no_such_dir");
-  ASSERT_FALSE(Missing);
-  EXPECT_EQ(ExpectedMsg("/no_such_dir", std::errc::no_such_file_or_directory),
-            llvm::toString(Missing.takeError()));
-
-  // Cached failure
-  auto MissingAgain = Mgr.getDirectoryRef("/no_such_dir");
-  ASSERT_FALSE(MissingAgain);
-  EXPECT_EQ(std::make_error_code(std::errc::no_such_file_or_directory),
-            llvm::errorToErrorCode(MissingAgain.takeError()));
-
-  // Reading a file as a directory.
-  auto FileAsDir = Mgr.getDirectoryRef("/foo.cpp");
-  ASSERT_FALSE(FileAsDir);
-  EXPECT_EQ(ExpectedMsg("/foo.cpp", std::errc::not_a_directory),
-            llvm::toString(FileAsDir.takeError()));
-}
-
 // The following tests apply to Unix-like system only.
 
 #ifndef _WIN32


        
_______________________________________________
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits

Reply via email to