Skip to content

Commit d2a429b

Browse files
More fixes related to standard conformance
1 parent af42118 commit d2a429b

File tree

2 files changed

+47
-52
lines changed

2 files changed

+47
-52
lines changed

libcxx/include/__stacktrace/basic_stacktrace.h

Lines changed: 27 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
//
88
//===----------------------------------------------------------------------===//
99

10-
#ifndef _LIBCPP_BASIC_STACKTRACE_H
11-
#define _LIBCPP_BASIC_STACKTRACE_H
10+
#ifndef _LIBCPP___BASIC_STACKTRACE_H
11+
#define _LIBCPP___BASIC_STACKTRACE_H
1212

1313
#include <__config>
1414

@@ -23,6 +23,7 @@ _LIBCPP_PUSH_MACROS
2323
#include <__cstddef/size_t.h>
2424
#include <__functional/function.h>
2525
#include <__functional/hash.h>
26+
#include <__fwd/format.h>
2627
#include <__iterator/iterator.h>
2728
#include <__iterator/reverse_iterator.h>
2829
#include <__memory/allocator_traits.h>
@@ -31,12 +32,10 @@ _LIBCPP_PUSH_MACROS
3132
#include <__type_traits/is_nothrow_constructible.h>
3233
#include <__vector/vector.h>
3334
#include <cstddef>
34-
#include <cstdint>
3535
#include <string>
3636
#include <utility>
3737

3838
#if _LIBCPP_HAS_LOCALIZATION
39-
# include <__fwd/format.h>
4039
# include <__fwd/ostream.h>
4140
#endif // _LIBCPP_HAS_LOCALIZATION
4241

@@ -186,26 +185,24 @@ class basic_stacktrace : private __stacktrace::_Trace {
186185
// (19.6.4.3)
187186
// [stacktrace.basic.obs], observers
188187

189-
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI allocator_type get_allocator() const noexcept {
190-
return __entries_.get_allocator();
191-
}
188+
_LIBCPP_HIDE_FROM_ABI allocator_type get_allocator() const noexcept { return __entries_.get_allocator(); }
192189

193-
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI const_iterator begin() const noexcept { return __entries_.begin(); }
194-
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI const_iterator end() const noexcept { return __entries_.end(); }
195-
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI const_reverse_iterator rbegin() const noexcept { return __entries_.rbegin(); }
196-
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI const_reverse_iterator rend() const noexcept { return __entries_.rend(); }
190+
_LIBCPP_HIDE_FROM_ABI const_iterator begin() const noexcept { return __entries_.begin(); }
191+
_LIBCPP_HIDE_FROM_ABI const_iterator end() const noexcept { return __entries_.end(); }
192+
_LIBCPP_HIDE_FROM_ABI const_reverse_iterator rbegin() const noexcept { return __entries_.rbegin(); }
193+
_LIBCPP_HIDE_FROM_ABI const_reverse_iterator rend() const noexcept { return __entries_.rend(); }
197194

198-
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI const_iterator cbegin() const noexcept { return __entries_.cbegin(); }
199-
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI const_iterator cend() const noexcept { return __entries_.cend(); }
200-
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI const_reverse_iterator crbegin() const noexcept { return __entries_.crbegin(); }
201-
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI const_reverse_iterator crend() const noexcept { return __entries_.crend(); }
195+
_LIBCPP_HIDE_FROM_ABI const_iterator cbegin() const noexcept { return __entries_.cbegin(); }
196+
_LIBCPP_HIDE_FROM_ABI const_iterator cend() const noexcept { return __entries_.cend(); }
197+
_LIBCPP_HIDE_FROM_ABI const_reverse_iterator crbegin() const noexcept { return __entries_.crbegin(); }
198+
_LIBCPP_HIDE_FROM_ABI const_reverse_iterator crend() const noexcept { return __entries_.crend(); }
202199

203-
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool empty() const noexcept { return __entries_.empty(); }
204-
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI size_type size() const noexcept { return __entries_.size(); }
205-
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI size_type max_size() const noexcept { return __entries_.max_size(); }
200+
_LIBCPP_HIDE_FROM_ABI bool empty() const noexcept { return __entries_.empty(); }
201+
_LIBCPP_HIDE_FROM_ABI size_type size() const noexcept { return __entries_.size(); }
202+
_LIBCPP_HIDE_FROM_ABI size_type max_size() const noexcept { return __entries_.max_size(); }
206203

207-
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI const_reference operator[](size_type __i) const { return __entries_[__i]; }
208-
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI const_reference at(size_type __i) const { return __entries_.at(__i); }
204+
_LIBCPP_HIDE_FROM_ABI const_reference operator[](size_type __i) const { return __entries_[__i]; }
205+
_LIBCPP_HIDE_FROM_ABI const_reference at(size_type __i) const { return __entries_.at(__i); }
209206

210207
// (19.6.4.4)
211208
// [stacktrace.basic.cmp], comparisons
@@ -269,27 +266,26 @@ swap(basic_stacktrace<_Allocator>& __a, basic_stacktrace<_Allocator>& __b) noexc
269266
}
270267

271268
# if _LIBCPP_HAS_LOCALIZATION
272-
template <class _Allocator>
273-
_LIBCPP_HIDE_FROM_ABI inline ostream& operator<<(ostream& __os, const basic_stacktrace<_Allocator>& __stacktrace) {
274-
return ((__stacktrace::_Trace const&)__stacktrace).write_to(__os);
275-
}
269+
276270
template <class _Allocator>
277271
_LIBCPP_HIDE_FROM_ABI inline string to_string(const basic_stacktrace<_Allocator>& __stacktrace) {
278272
return ((__stacktrace::_Trace const&)__stacktrace).to_string();
279273
}
274+
275+
template <class _Allocator>
276+
_LIBCPP_HIDE_FROM_ABI inline ostream& operator<<(ostream& __os, const basic_stacktrace<_Allocator>& __stacktrace) {
277+
return ((__stacktrace::_Trace const&)__stacktrace).write_to(__os);
278+
}
279+
280280
# endif // _LIBCPP_HAS_LOCALIZATION
281281

282282
// (19.6.6)
283283
// Hash support [stacktrace.basic.hash]
284284

285285
template <class _Allocator>
286286
struct hash<basic_stacktrace<_Allocator>> {
287-
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI size_t operator()(basic_stacktrace<_Allocator> const& __context) const noexcept {
288-
size_t __ret = 1;
289-
for (auto const& __entry : __context.__entries_) {
290-
__ret += hash<uintptr_t>()(__entry.native_handle());
291-
}
292-
return __ret;
287+
_LIBCPP_HIDE_FROM_ABI size_t operator()(basic_stacktrace<_Allocator> const& __trace) const noexcept {
288+
return hash(__trace.__entries_)();
293289
}
294290
};
295291

@@ -344,4 +340,4 @@ _LIBCPP_END_NAMESPACE_STD
344340

345341
_LIBCPP_POP_MACROS
346342

347-
#endif // _LIBCPP_BASIC_STACKTRACE_H
343+
#endif // _LIBCPP___BASIC_STACKTRACE_H

libcxx/include/__stacktrace/stacktrace_entry.h

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
//
88
//===----------------------------------------------------------------------===//
99

10-
#ifndef _LIBCPP_STACKTRACE_ENTRY_H
11-
#define _LIBCPP_STACKTRACE_ENTRY_H
10+
#ifndef _LIBCPP___STACKTRACE_ENTRY_H
11+
#define _LIBCPP___STACKTRACE_ENTRY_H
1212

1313
#include <__config>
1414
#include <cstring>
@@ -22,13 +22,13 @@ _LIBCPP_PUSH_MACROS
2222

2323
#include <__assert>
2424
#include <__functional/function.h>
25+
#include <__fwd/format.h>
2526
#include <cstddef>
2627
#include <cstdint>
2728
#include <string>
2829
#include <string_view>
2930

3031
#if _LIBCPP_HAS_LOCALIZATION
31-
# include <__fwd/format.h>
3232
# include <__fwd/ostream.h>
3333
#endif // _LIBCPP_HAS_LOCALIZATION
3434

@@ -114,23 +114,21 @@ class stacktrace_entry {
114114
_LIBCPP_HIDE_FROM_ABI constexpr stacktrace_entry& operator=(const stacktrace_entry&) noexcept = default;
115115

116116
// (19.6.3.3) [stacktrace.entry.obs], observers
117-
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr native_handle_type native_handle() const noexcept {
118-
return __base_.__addr_;
119-
}
120-
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr explicit operator bool() const noexcept { return native_handle() != 0; }
117+
_LIBCPP_HIDE_FROM_ABI constexpr native_handle_type native_handle() const noexcept { return __base_.__addr_; }
118+
_LIBCPP_HIDE_FROM_ABI constexpr explicit operator bool() const noexcept { return native_handle() != 0; }
121119

122120
// (19.6.3.4) [stacktrace.entry.query], query
123-
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI string description() const { return string(__base_.__desc_.view()); }
124-
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI string source_file() const { return string(__base_.__file_.view()); }
125-
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI uint_least32_t source_line() const { return __base_.__line_; }
121+
_LIBCPP_HIDE_FROM_ABI string description() const { return string(__base_.__desc_.view()); }
122+
_LIBCPP_HIDE_FROM_ABI string source_file() const { return string(__base_.__file_.view()); }
123+
_LIBCPP_HIDE_FROM_ABI uint_least32_t source_line() const { return __base_.__line_; }
126124

127125
// (19.6.3.5) [stacktrace.entry.cmp], comparison
128-
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI friend constexpr bool
126+
_LIBCPP_HIDE_FROM_ABI friend constexpr bool
129127
operator==(const stacktrace_entry& __x, const stacktrace_entry& __y) noexcept {
130128
return __x.native_handle() == __y.native_handle();
131129
}
132130

133-
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI friend constexpr strong_ordering
131+
_LIBCPP_HIDE_FROM_ABI friend constexpr strong_ordering
134132
operator<=>(const stacktrace_entry& __x, const stacktrace_entry& __y) noexcept {
135133
return __x.native_handle() <=> __y.native_handle();
136134
}
@@ -139,15 +137,16 @@ class stacktrace_entry {
139137
// (19.6.4.6)
140138
// Non-member functions [stacktrace.basic.nonmem]
141139

142-
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI string to_string(const stacktrace_entry& __entry);
143-
144140
# if _LIBCPP_HAS_LOCALIZATION
145-
_LIBCPP_HIDE_FROM_ABI inline ostream& operator<<(ostream& __os, std::stacktrace_entry const& __entry) {
146-
return __entry.__base_.write_to(__os);
147-
}
148-
_LIBCPP_HIDE_FROM_ABI inline string to_string(std::stacktrace_entry const& __entry) {
141+
142+
_LIBCPP_HIDE_FROM_ABI inline string to_string(const std::stacktrace_entry& __entry) {
149143
return __entry.__base_.to_string();
150144
}
145+
146+
_LIBCPP_HIDE_FROM_ABI inline ostream& operator<<(ostream& __os, const std::stacktrace_entry& __entry) {
147+
return __entry.__base_.write_to(__os);
148+
}
149+
151150
# endif // _LIBCPP_HAS_LOCALIZATION
152151

153152
// (19.6.5)
@@ -158,8 +157,8 @@ _LIBCPP_HIDE_FROM_ABI inline string to_string(std::stacktrace_entry const& __ent
158157
// Hash support [stacktrace.basic.hash]
159158

160159
template <>
161-
struct _LIBCPP_HIDE_FROM_ABI hash<stacktrace_entry> {
162-
[[nodiscard]] size_t operator()(stacktrace_entry const& __entry) const noexcept {
160+
struct hash<stacktrace_entry> {
161+
_LIBCPP_HIDE_FROM_ABI size_t operator()(stacktrace_entry const& __entry) const noexcept {
163162
auto __addr = __entry.native_handle();
164163
return hash<uintptr_t>()(__addr);
165164
}
@@ -171,4 +170,4 @@ _LIBCPP_END_NAMESPACE_STD
171170

172171
_LIBCPP_POP_MACROS
173172

174-
#endif // _LIBCPP_STACKTRACE_ENTRY_H
173+
#endif // _LIBCPP___STACKTRACE_ENTRY_H

0 commit comments

Comments
 (0)