diff options
Diffstat (limited to 'fxjs/cjs_return.h')
-rw-r--r-- | fxjs/cjs_return.h | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/fxjs/cjs_return.h b/fxjs/cjs_return.h index b165f3f11c..99a2af60a6 100644 --- a/fxjs/cjs_return.h +++ b/fxjs/cjs_return.h @@ -13,10 +13,28 @@ class CJS_Return { public: - CJS_Return(); // Successful but empty return. - explicit CJS_Return(v8::Local<v8::Value>); // Successful return with value. - explicit CJS_Return(const WideString&); // Error with custom message. - explicit CJS_Return(JSMessage id); // Error with stock message. + // Wrap constructors with static methods so we can apply WARN_UNUSED_RESULT, + // otherwise we can't catch places where someone mistakenly writes: + // + // if (error) + // CJS_Return(JS_ERROR_CODE); + // + // instead of + // + // if (error) + // return CJS_Return(JS_ERROR_CODE); + // + static CJS_Return Success() WARN_UNUSED_RESULT { return CJS_Return(); } + static CJS_Return Success(v8::Local<v8::Value> value) WARN_UNUSED_RESULT { + return CJS_Return(value); + } + static CJS_Return Failure(const WideString& str) WARN_UNUSED_RESULT { + return CJS_Return(str); + } + static CJS_Return Failure(JSMessage id) WARN_UNUSED_RESULT { + return CJS_Return(id); + } + CJS_Return(const CJS_Return&); ~CJS_Return(); @@ -27,6 +45,11 @@ class CJS_Return { v8::Local<v8::Value> Return() const { return return_; } private: + CJS_Return(); // Successful but empty return. + explicit CJS_Return(v8::Local<v8::Value>); // Successful return with value. + explicit CJS_Return(const WideString&); // Error with custom message. + explicit CJS_Return(JSMessage id); // Error with stock message. + Optional<WideString> error_; v8::Local<v8::Value> return_; }; |