diff options
author | Chuanqi Xu <yedeng.yd@linux.alibaba.com> | 2022-07-22 13:20:22 +0800 |
---|---|---|
committer | Chuanqi Xu <yedeng.yd@linux.alibaba.com> | 2022-07-26 23:58:07 +0800 |
commit | a2772fc806af7db5d58c7e3d604270a92fff79de (patch) | |
tree | 39e9c4a78be223b32a8e186b0a36235d202672ba /clang/include | |
parent | 7ca9e471fe5b5ec51d151774e52dd0d5bd8f0ad0 (diff) | |
download | llvm-a2772fc806af7db5d58c7e3d604270a92fff79de.zip llvm-a2772fc806af7db5d58c7e3d604270a92fff79de.tar.gz llvm-a2772fc806af7db5d58c7e3d604270a92fff79de.tar.bz2 |
[C++20] [Modules] Disable preferred_name when writing a C++20 Module interface
Currently, the use of preferred_name would block implementing std
modules in libcxx. See https://github.com/llvm/llvm-project/issues/56490
for example.
The problem is pretty hard and it looks like we couldn't solve it in a
short time. So we sent this patch as a workaround to avoid blocking us
to modularize STL. This is intended to be fixed properly in the future.
Reviewed By: erichkeane, aaron.ballman, tahonermann
Differential Revision: https://reviews.llvm.org/D130331
Diffstat (limited to 'clang/include')
-rw-r--r-- | clang/include/clang/Basic/AttrDocs.td | 6 | ||||
-rw-r--r-- | clang/include/clang/Serialization/ASTWriter.h | 4 |
2 files changed, 10 insertions, 0 deletions
diff --git a/clang/include/clang/Basic/AttrDocs.td b/clang/include/clang/Basic/AttrDocs.td index aff0dbb..5c84e2f 100644 --- a/clang/include/clang/Basic/AttrDocs.td +++ b/clang/include/clang/Basic/AttrDocs.td @@ -5040,6 +5040,12 @@ general this requires the template to be declared at least twice. For example: clang::preferred_name(wstring)]] basic_string { // ... }; + + +Note that the ``preferred_name`` attribute will be ignored when the compiler +writes a C++20 Module interface now. This is due to a compiler issue +(https://github.com/llvm/llvm-project/issues/56490) that blocks users to modularize +declarations with `preferred_name`. This is intended to be fixed in the future. }]; } diff --git a/clang/include/clang/Serialization/ASTWriter.h b/clang/include/clang/Serialization/ASTWriter.h index 6a3532d..83bc7dc 100644 --- a/clang/include/clang/Serialization/ASTWriter.h +++ b/clang/include/clang/Serialization/ASTWriter.h @@ -703,6 +703,10 @@ public: bool hasChain() const { return Chain; } ASTReader *getChain() const { return Chain; } + bool isWritingNamedModules() const { + return WritingModule && WritingModule->isModulePurview(); + } + private: // ASTDeserializationListener implementation void ReaderInitialized(ASTReader *Reader) override; |