This helper method creates a pre-checked Error suitable for use as an out
parameter in a constructor. This avoids the need to have the constructor
check a known-good error before assigning to it.
llvm-svn: 264467
/// constructor, but should be preferred for readability where possible.
static Error success() { return Error(); }
+ /// Create a 'pre-checked' success value suitable for use as an out-parameter.
+ static Error errorForOutParameter() {
+ Error Err;
+ (void)!!Err;
+ return Err;
+ }
+
// Errors are not copy-constructable.
Error(const Error &Other) = delete;
}
#endif
+// Test that errors to be used as out parameters are implicitly checked (
+// and thus destruct quietly).
+TEST(Error, ErrorAsOutParameter) {
+ Error E = Error::errorForOutParameter();
+}
+
// Check that we abort on unhandled failure cases. (Force conversion to bool
// to make sure that we don't accidentally treat checked errors as handled).
// Test runs in debug mode only.