[clang] [Basic] clean up MapEntryOptionalStorage and its derived classes (NFC) (PR #164189)

Kazu Hirata via cfe-commits cfe-commits at lists.llvm.org
Sun Oct 19 16:23:42 PDT 2025


https://github.com/kazutakahirata created https://github.com/llvm/llvm-project/pull/164189

This patch modernizes a couple of things:

- Use in-class member initializers in MapEntryOptionalStorage.

- Inherit constructors in OptionalStorage<clang::DirectoryEntryRef>
  and OptionalStorage<clang::FileEntryRef>.


>From 32f55b1ab3d0106c8065bdfea59e005f83e81533 Mon Sep 17 00:00:00 2001
From: Kazu Hirata <kazu at google.com>
Date: Sun, 19 Oct 2025 01:21:18 -0700
Subject: [PATCH] [Basic] clean up MapEntryOptionalStorage and its derived
 classes (NFC)

This patch modernizes a couple of things:

- Use in-class member initializers in MapEntryOptionalStorage.

- Inherit constructors in OptionalStorage<clang::DirectoryEntryRef>
  and OptionalStorage<clang::FileEntryRef>.
---
 clang/include/clang/Basic/DirectoryEntry.h | 10 +++-------
 clang/include/clang/Basic/FileEntry.h      |  6 +-----
 2 files changed, 4 insertions(+), 12 deletions(-)

diff --git a/clang/include/clang/Basic/DirectoryEntry.h b/clang/include/clang/Basic/DirectoryEntry.h
index 35fe529ba79df..69656125e422a 100644
--- a/clang/include/clang/Basic/DirectoryEntry.h
+++ b/clang/include/clang/Basic/DirectoryEntry.h
@@ -119,10 +119,10 @@ namespace FileMgr {
 /// the private optional_none_tag to keep it to the size of a single pointer.
 template <class RefTy> class MapEntryOptionalStorage {
   using optional_none_tag = typename RefTy::optional_none_tag;
-  RefTy MaybeRef;
+  RefTy MaybeRef = optional_none_tag();
 
 public:
-  MapEntryOptionalStorage() : MaybeRef(optional_none_tag()) {}
+  MapEntryOptionalStorage() = default;
 
   template <class... ArgTypes>
   explicit MapEntryOptionalStorage(std::in_place_t, ArgTypes &&...Args)
@@ -168,11 +168,7 @@ class OptionalStorage<clang::DirectoryEntryRef>
       clang::FileMgr::MapEntryOptionalStorage<clang::DirectoryEntryRef>;
 
 public:
-  OptionalStorage() = default;
-
-  template <class... ArgTypes>
-  explicit OptionalStorage(std::in_place_t, ArgTypes &&...Args)
-      : StorageImpl(std::in_place_t{}, std::forward<ArgTypes>(Args)...) {}
+  using StorageImpl::StorageImpl;
 
   OptionalStorage &operator=(clang::DirectoryEntryRef Ref) {
     StorageImpl::operator=(Ref);
diff --git a/clang/include/clang/Basic/FileEntry.h b/clang/include/clang/Basic/FileEntry.h
index c973ba38bdf7e..e7091fd1def59 100644
--- a/clang/include/clang/Basic/FileEntry.h
+++ b/clang/include/clang/Basic/FileEntry.h
@@ -218,11 +218,7 @@ class OptionalStorage<clang::FileEntryRef>
       clang::FileMgr::MapEntryOptionalStorage<clang::FileEntryRef>;
 
 public:
-  OptionalStorage() = default;
-
-  template <class... ArgTypes>
-  explicit OptionalStorage(std::in_place_t, ArgTypes &&...Args)
-      : StorageImpl(std::in_place_t{}, std::forward<ArgTypes>(Args)...) {}
+  using StorageImpl::StorageImpl;
 
   OptionalStorage &operator=(clang::FileEntryRef Ref) {
     StorageImpl::operator=(Ref);



More information about the cfe-commits mailing list