diff options
author | Thomas Lively <tlively@google.com> | 2024-11-15 16:18:29 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-11-15 13:18:29 -0800 |
commit | 368c1edf2a6182dcde7a91e6facbf3dbdd6c7456 (patch) | |
tree | 048eb337ab186d3548a3b4460de39e513e5da4a6 /src | |
parent | ce1a2b480ae89e65b4d94e1bb3332c5980e2479f (diff) | |
download | binaryen-368c1edf2a6182dcde7a91e6facbf3dbdd6c7456.tar.gz binaryen-368c1edf2a6182dcde7a91e6facbf3dbdd6c7456.tar.bz2 binaryen-368c1edf2a6182dcde7a91e6facbf3dbdd6c7456.zip |
Mark Result and MaybeResult [[nodiscard]] (#7083)
Since these types may be carrying errors that need to be handled or
propagated, it is always an error not to use them in some way. Adding
the [[nodiscard]] attribute caused the compiler to find a few instances
where we were incorrectly ignoring results. Fix these places.
Diffstat (limited to 'src')
-rw-r--r-- | src/parser/parsers.h | 6 | ||||
-rw-r--r-- | src/support/result.h | 4 |
2 files changed, 5 insertions, 5 deletions
diff --git a/src/parser/parsers.h b/src/parser/parsers.h index 4121788d7..2d3321dcd 100644 --- a/src/parser/parsers.h +++ b/src/parser/parsers.h @@ -1099,7 +1099,7 @@ block(Ctx& ctx, const std::vector<Annotation>& annotations, bool folded) { auto type = blocktype(ctx); CHECK_ERR(type); - ctx.makeBlock(pos, annotations, label, *type); + CHECK_ERR(ctx.makeBlock(pos, annotations, label, *type)); CHECK_ERR(instrs(ctx)); @@ -1162,7 +1162,7 @@ ifelse(Ctx& ctx, const std::vector<Annotation>& annotations, bool folded) { return ctx.in.err("else label does not match if label"); } - ctx.visitElse(); + CHECK_ERR(ctx.visitElse()); CHECK_ERR(instrs(ctx)); @@ -1205,7 +1205,7 @@ loop(Ctx& ctx, const std::vector<Annotation>& annotations, bool folded) { auto type = blocktype(ctx); CHECK_ERR(type); - ctx.makeLoop(pos, annotations, label, *type); + CHECK_ERR(ctx.makeLoop(pos, annotations, label, *type)); CHECK_ERR(instrs(ctx)); diff --git a/src/support/result.h b/src/support/result.h index ab71d3a53..7cd360d53 100644 --- a/src/support/result.h +++ b/src/support/result.h @@ -40,7 +40,7 @@ struct Err { } // Represent a result of type T or an error message. -template<typename T = Ok> struct Result { +template<typename T = Ok> struct [[nodiscard]] Result { std::variant<T, Err> val; Result(Result<T>& other) = default; @@ -56,7 +56,7 @@ template<typename T = Ok> struct Result { }; // Represent an optional result of type T or an error message. -template<typename T = Ok> struct MaybeResult { +template<typename T = Ok> struct [[nodiscard]] MaybeResult { std::variant<T, None, Err> val; MaybeResult() : val(None{}) {} |