gdbsupport: mark array_view::slice with [[nodiscard]]
authorSimon Marchi <simon.marchi@efficios.com>
Fri, 3 Nov 2023 03:19:09 +0000 (23:19 -0400)
committerSimon Marchi <simon.marchi@efficios.com>
Fri, 3 Nov 2023 18:27:26 +0000 (14:27 -0400)
I (almost) had a bug where I did:

    buffer.slice (...)

but I meant:

    buffer = buffer.slice (...)

The first one does nothing, it creates a new array_view but without
using it, it's useless.  Mark the slice methods with [[nodiscard]]
(which is standard C++17) so that error would generate a warning.

I guess that many functions could be marked as nodiscard, essentially
function that is pure (doesn't have side-effects).  But this one seems
particularly easy to mis-use.

Change-Id: Ib39a0a65a5728a3cfd68a02ae31635810baeaccb
Approved-By: Tom Tromey <tom@tromey.com>
gdbsupport/array-view.h

index ee3a3c58710c2723b86854c04b46b9b2751626f4..4b519112e78f71eaa12940211d51ff8ee38c66c6 100644 (file)
@@ -185,6 +185,7 @@ public:
   /* Slice an array view.  */
 
   /* Return a new array view over SIZE elements starting at START.  */
+  [[nodiscard]]
   constexpr array_view<T> slice (size_type start, size_type size) const noexcept
   {
 #if defined(_GLIBCXX_DEBUG) && __cplusplus >= 201402L
@@ -195,6 +196,7 @@ public:
 
   /* Return a new array view over all the elements after START,
      inclusive.  */
+  [[nodiscard]]
   constexpr array_view<T> slice (size_type start) const noexcept
   {
 #if defined(_GLIBCXX_DEBUG) && __cplusplus >= 201402L