From 20c9654ca70266b04c3cf970d8ee33c9284914c0 Mon Sep 17 00:00:00 2001 From: Paige Sun Date: Fri, 14 Oct 2022 10:48:47 -0700 Subject: [PATCH] 2/n Code clarity: Use enum to clarify the values parsed by JsErrorHandler Summary: Changelog: [Internal] Code clarity: Use enum to clarify the values parsed by JsErrorHandler Create a enum `JSErrorHandlerKey` to define the keys for the values that goes into each stack frame. Next up -- using this in the Bridge! Reviewed By: sammy-SC Differential Revision: D40326127 fbshipit-source-id: e416814fbcaa922afa92d9baf79eaa898ff979f0 --- ReactCommon/jserrorhandler/JsErrorHandler.cpp | 34 ++++++++++--------- ReactCommon/jserrorhandler/JsErrorHandler.h | 18 +++++----- 2 files changed, 28 insertions(+), 24 deletions(-) diff --git a/ReactCommon/jserrorhandler/JsErrorHandler.cpp b/ReactCommon/jserrorhandler/JsErrorHandler.cpp index 44f5b513d41..ca512330027 100644 --- a/ReactCommon/jserrorhandler/JsErrorHandler.cpp +++ b/ReactCommon/jserrorhandler/JsErrorHandler.cpp @@ -15,6 +15,8 @@ namespace facebook { namespace react { +using facebook::react::JSErrorHandlerKey; + static MapBuffer parseErrorStack(const jsi::JSError &error, bool isFatal, bool isHermes) { /** @@ -53,37 +55,37 @@ parseErrorStack(const jsi::JSError &error, bool isFatal, bool isHermes) { if (std::regex_search(line, searchResults, REGEX_HERMES)) { std::string str2 = std::string(searchResults[2]); if (str2.compare("native")) { - frame.putString(0, std::string(searchResults[4])); - frame.putString(1, std::string(searchResults[1])); - frame.putInt(2, std::stoi(searchResults[5])); - frame.putInt(3, std::stoi(searchResults[6])); + frame.putString(kFrameFileName, std::string(searchResults[4])); + frame.putString(kFrameMethodName, std::string(searchResults[1])); + frame.putInt(kFrameLineNumber, std::stoi(searchResults[5])); + frame.putInt(kFrameColumnNumber, std::stoi(searchResults[6])); frames.push_back(frame.build()); } } } else { if (std::regex_search(line, searchResults, REGEX_GECKO)) { - frame.putString(0, std::string(searchResults[3])); - frame.putString(1, std::string(searchResults[1])); - frame.putInt(2, std::stoi(searchResults[4])); - frame.putInt(3, std::stoi(searchResults[5])); + frame.putString(kFrameFileName, std::string(searchResults[3])); + frame.putString(kFrameMethodName, std::string(searchResults[1])); + frame.putInt(kFrameLineNumber, std::stoi(searchResults[4])); + frame.putInt(kFrameColumnNumber, std::stoi(searchResults[5])); } else if ( std::regex_search(line, searchResults, REGEX_CHROME) || std::regex_search(line, searchResults, REGEX_NODE)) { - frame.putString(0, std::string(searchResults[2])); - frame.putString(1, std::string(searchResults[1])); - frame.putInt(2, std::stoi(searchResults[3])); - frame.putInt(3, std::stoi(searchResults[4])); + frame.putString(kFrameFileName, std::string(searchResults[2])); + frame.putString(kFrameMethodName, std::string(searchResults[1])); + frame.putInt(kFrameLineNumber, std::stoi(searchResults[3])); + frame.putInt(kFrameColumnNumber, std::stoi(searchResults[4])); } else { continue; } frames.push_back(frame.build()); } } - errorObj.putMapBufferList(4, std::move(frames)); - errorObj.putString(5, error.getMessage()); + errorObj.putMapBufferList(kAllStackFrames, std::move(frames)); + errorObj.putString(kErrorMessage, error.getMessage()); // TODO: If needed, can increment exceptionId by 1 each time - errorObj.putInt(6, 0); - errorObj.putBool(7, isFatal); + errorObj.putInt(kExceptionId, 0); + errorObj.putBool(kIsFatal, isFatal); return errorObj.build(); } diff --git a/ReactCommon/jserrorhandler/JsErrorHandler.h b/ReactCommon/jserrorhandler/JsErrorHandler.h index a7b51e9c376..90383e17ca7 100644 --- a/ReactCommon/jserrorhandler/JsErrorHandler.h +++ b/ReactCommon/jserrorhandler/JsErrorHandler.h @@ -11,14 +11,16 @@ namespace facebook { namespace react { -const int FILE_KEY_OF_JS_ERROR = 0; -const int METHOD_NAME_KEY_OF_JS_ERROR = 1; -const int LINE_NUMBER_KEY_OF_JS_ERROR = 2; -const int COLUMN_KEY_OF_JS_ERROR = 3; -const int FRAMES_KEY_OF_JS_ERROR = 4; -const int MESSAGE_KEY_OF_JS_ERROR = 5; -const int ID_KEY_OF_JS_ERROR = 6; -const int IS_FATAL_KEY_OF_JS_ERROR = 7; +enum JSErrorHandlerKey : uint16_t { + kFrameFileName = 0, + kFrameMethodName = 1, + kFrameLineNumber = 2, + kFrameColumnNumber = 3, + kAllStackFrames = 4, + kErrorMessage = 5, + kExceptionId = 6, + kIsFatal = 7 +}; class JsErrorHandler { public: