[libcxx-commits] [PATCH] D119769: [libc++] Move everything related solely to _LIBCPP_ASSERT to its own file
Louis Dionne via Phabricator via libcxx-commits
libcxx-commits at lists.llvm.org
Tue Feb 15 09:11:13 PST 2022
ldionne marked 6 inline comments as done.
ldionne added inline comments.
================
Comment at: libcxx/include/CMakeLists.txt:102
__algorithm/upper_bound.h
+ __assert
__availability
----------------
Quuxplusone wrote:
> philnik wrote:
> > Quuxplusone wrote:
> > > Are we at all worried about name conflicts? (Or stylistically about adding new top-level detail headers?) Should this be something like `__utility/libcpp_assert.h` instead?
> > > OTOH, maybe we keep it like this right now, and then at some point in the future we move `__assert` to `__foo/libcpp_assert.h` and `__debug` to `__foo/debug_iterators.h` in the same commit, for some value of `__foo` on which I'm sure we'll disagree. :)
> > I'm definitely in favor of moving that stuff into some directory. Maybe `__libcpp/`? That would most likely not clash with any new C++ headers and we could leave the `libcpp_` prefix out.
> > and we could leave the `libcpp_` prefix out.
>
> I don't want to get into a situation where `<assert.h>` means one thing and `"./assert.h"` means a different thing, so the prefix would need to stay even in that case. (Likewise, if we ever granularize `<string>`, I'll oppose the creation of `__string/string.h`. But luckily in that case it'll be `__string/basic_string.h` so the issue won't arise.)
I agree that we should move those to a subdirectory, however I want to do that separately to give us ample time to bikeshed the name.
We already have a "pattern" for adding these detail headers right now: it's to add them at the top-level. So I'm following the trend in this patch for the time being.
================
Comment at: libcxx/include/__debug:27
-#if _LIBCPP_DEBUG_LEVEL == 0
+#if _LIBCPP_DEBUG_LEVEL < 2
# define _LIBCPP_DEBUG_ASSERT(x, m) ((void)0)
----------------
philnik wrote:
> Quuxplusone wrote:
> > This `<` allows people to set `-D_LIBCPP_DEBUG_LEVEL=-1` without triggering the `#error` on line 32.
> `_LIBCPP_DEBUG_LEVEL` should never be set directly. The public interface is `_LIBCPP_DEBUG`.
I agree with Arthur, I'll fix it. This is an easy way to ensure that users don't define things they shouldn't define.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D119769/new/
https://reviews.llvm.org/D119769
More information about the libcxx-commits
mailing list