[PATCH] D140261: [C++20][Modules] Do not allow non-inline external definitions in header units.
Chuanqi Xu via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Dec 19 01:14:54 PST 2022
ChuanqiXu added inline comments.
================
Comment at: clang/lib/Sema/SemaDecl.cpp:12957-12958
+ // units.
+ if (getLangOpts().CPlusPlus20 && getLangOpts().CPlusPlusModules &&
+ !ModuleScopes.empty() && ModuleScopes.back().Module->isHeaderUnit()) {
+ if (VDecl->getFormalLinkage() == Linkage::ExternalLinkage &&
----------------
iains wrote:
> ChuanqiXu wrote:
> > `getLangOpts().CPlusPlus20` is redundant. It is also good to define a helper interface `withinHeaderUnit` in Sema (not required).
> I do not mind making this change - but note that the constraint is specific to C++20 and there are some people who want to remove it (the constraint). I guess you meant `getCurrentModule()` ?
> I do not mind making this change - but note that the constraint is specific to C++20 and there are some people who want to remove it (the constraint).
Got it. Let's make it when it comes true. It won't be a big deal.
> I guess you meant getCurrentModule() ?
It looks **a little bit** better to me to not access `ModuleScopes` directly.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D140261/new/
https://reviews.llvm.org/D140261
More information about the cfe-commits
mailing list