Hello Chris, Thank you so much for doing this. From a static-analysis perspective this helps us greatly avoid possible false positives and enforcing the rule when an actual result return from a function call shouldn’t be discarded.
Andi > On 22 Dec 2020, at 02:25, Chris Peterson <cpeter...@mozilla.com> wrote: > > Now that Firefox is compiled as C++17 (bug 1560664), you can use C++17's > [[nodiscard]] attribute [1] instead of the MOZ_MUST_USE macro (defined using > clang and gcc's non-standard __attribute__((warn_unused_result))). > > I have been slowly replacing MOZ_MUST_USE with [[nodiscard]] in my free time > and hope to eventually remove the MOZ_MUST_USE definition itself. That is > meta bug 1571631. > > In the meantime, please: > > 1. Avoid adding more uses of MOZ_MUST_USE. Use [[nodiscard]]. > > 2. Consider making more functions use [[nodiscard]] when writing or reviewing > new code. Functions that return errors as nsresult or bool are probably good > candidates for [[nodiscard]]. > > (I looked at adding [[nodiscard]] to the nsresult type definition, but the > results were too noisy.) > > One caveat: the [[nodiscard]] attribute must precede all of a function > declaration's declaration specifiers (like static, extern, inline, or > virtual). The __attribute__((warn_unused_result)) attribute (and thus > MOZ_MUST_USE) does not have this order restriction. > > - static inline MOZ_MUST_USE nsresult SomeFunction(); > + [[nodiscard]] static inline nsresult SomeFunction(); > > Once __attribute__((warn_unused_result)) has been replaced with > [[nodiscard]], we can also remove mozilla::Unused, replacing `Unused <<` with > a more idiomatic `(void)` cast (bug 1628542). > > [[nodiscard]] can also be applied to types, so we may be able to replace our > custom MOZ_MUST_USE_TYPE clang plugin with [[nodiscard]]. > > [1] https://en.cppreference.com/w/cpp/language/attributes/nodiscard > _______________________________________________ > dev-platform mailing list > dev-platform@lists.mozilla.org > https://lists.mozilla.org/listinfo/dev-platform _______________________________________________ dev-platform mailing list dev-platform@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-platform