Skip to content

Commit a5a3d37

Browse files
RSNarafacebook-github-bot
authored andcommitted
Rename ParsedError to ProcessedError
Summary: I think parsed isn't a good enough name. React native also does a lot of processing of the error. This also opens the door for eventually forwarding the original error in the future. Changelog: [Internal] Reviewed By: alanleedev Differential Revision: D67526700 fbshipit-source-id: 895d64fa1ee4061ecbf0c1a6033c25b6fca95fd6
1 parent 29e5de5 commit a5a3d37

16 files changed

Lines changed: 337 additions & 327 deletions

File tree

packages/react-native/ReactAndroid/api/ReactAndroid.api

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2364,7 +2364,7 @@ public class com/facebook/react/devsupport/StackTraceHelper {
23642364
public static fun convertJsStackTrace (Lcom/facebook/react/bridge/ReadableArray;)[Lcom/facebook/react/devsupport/interfaces/StackFrame;
23652365
public static fun convertJsStackTrace (Ljava/lang/String;)[Lcom/facebook/react/devsupport/interfaces/StackFrame;
23662366
public static fun convertJsStackTrace (Lorg/json/JSONArray;)[Lcom/facebook/react/devsupport/interfaces/StackFrame;
2367-
public static fun convertParsedError (Lcom/facebook/react/interfaces/exceptionmanager/ReactJsExceptionHandler$ParsedError;)Lcom/facebook/react/bridge/JavaOnlyMap;
2367+
public static fun convertProcessedError (Lcom/facebook/react/interfaces/exceptionmanager/ReactJsExceptionHandler$ProcessedError;)Lcom/facebook/react/bridge/JavaOnlyMap;
23682368
public static fun formatFrameSource (Lcom/facebook/react/devsupport/interfaces/StackFrame;)Ljava/lang/String;
23692369
public static fun formatStackTrace (Ljava/lang/String;[Lcom/facebook/react/devsupport/interfaces/StackFrame;)Ljava/lang/String;
23702370
}
@@ -2816,7 +2816,7 @@ public abstract interface class com/facebook/react/interfaces/TaskInterface {
28162816
public abstract fun waitForCompletion (JLjava/util/concurrent/TimeUnit;)Z
28172817
}
28182818

2819-
public abstract interface class com/facebook/react/interfaces/exceptionmanager/ReactJsExceptionHandler$ParsedError {
2819+
public abstract interface class com/facebook/react/interfaces/exceptionmanager/ReactJsExceptionHandler$ProcessedError {
28202820
public abstract fun getComponentStack ()Ljava/lang/String;
28212821
public abstract fun getExtraData ()Lcom/facebook/react/bridge/ReadableMap;
28222822
public abstract fun getId ()I
@@ -2827,7 +2827,7 @@ public abstract interface class com/facebook/react/interfaces/exceptionmanager/R
28272827
public abstract fun isFatal ()Z
28282828
}
28292829

2830-
public abstract interface class com/facebook/react/interfaces/exceptionmanager/ReactJsExceptionHandler$ParsedError$StackFrame {
2830+
public abstract interface class com/facebook/react/interfaces/exceptionmanager/ReactJsExceptionHandler$ProcessedError$StackFrame {
28312831
public abstract fun getColumn ()Ljava/lang/Integer;
28322832
public abstract fun getFile ()Ljava/lang/String;
28332833
public abstract fun getLineNumber ()Ljava/lang/Integer;

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/StackTraceHelper.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
import com.facebook.react.bridge.ReadableType;
1616
import com.facebook.react.common.MapBuilder;
1717
import com.facebook.react.devsupport.interfaces.StackFrame;
18-
import com.facebook.react.interfaces.exceptionmanager.ReactJsExceptionHandler.ParsedError;
18+
import com.facebook.react.interfaces.exceptionmanager.ReactJsExceptionHandler.ProcessedError;
1919
import java.io.File;
2020
import java.util.ArrayList;
2121
import java.util.List;
@@ -263,10 +263,10 @@ public static String formatStackTrace(String title, StackFrame[] stack) {
263263
return stackTrace.toString();
264264
}
265265

266-
public static JavaOnlyMap convertParsedError(ParsedError error) {
267-
List<ParsedError.StackFrame> frames = error.getStack();
266+
public static JavaOnlyMap convertProcessedError(ProcessedError error) {
267+
List<ProcessedError.StackFrame> frames = error.getStack();
268268
List<ReadableMap> readableMapList = new ArrayList<>();
269-
for (ParsedError.StackFrame frame : frames) {
269+
for (ProcessedError.StackFrame frame : frames) {
270270
JavaOnlyMap map = new JavaOnlyMap();
271271
map.putDouble(COLUMN_KEY, frame.getColumn());
272272
map.putDouble(LINE_NUMBER_KEY, frame.getLineNumber());

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/interfaces/exceptionmanager/ReactJsExceptionHandler.kt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import java.util.ArrayList
1717
@UnstableReactNativeAPI
1818
public fun interface ReactJsExceptionHandler {
1919
@DoNotStripAny
20-
public interface ParsedError {
20+
public interface ProcessedError {
2121
@DoNotStripAny
2222
public interface StackFrame {
2323
public val file: String?
@@ -37,24 +37,24 @@ public fun interface ReactJsExceptionHandler {
3737
}
3838

3939
@DoNotStripAny
40-
private data class ParsedStackFrameImpl(
40+
private data class ProcessedErrorStackFrameImpl(
4141
override val file: String?,
4242
override val methodName: String,
4343
override val lineNumber: Int?,
4444
override val column: Int?,
45-
) : ParsedError.StackFrame
45+
) : ProcessedError.StackFrame
4646

4747
@DoNotStripAny
48-
private data class ParsedErrorImpl(
48+
private data class ProcessedErrorImpl(
4949
override val message: String,
5050
override val originalMessage: String?,
5151
override val name: String?,
5252
override val componentStack: String?,
53-
override val stack: ArrayList<ParsedStackFrameImpl>,
53+
override val stack: ArrayList<ProcessedErrorStackFrameImpl>,
5454
override val id: Int,
5555
override val isFatal: Boolean,
5656
override val extraData: ReadableNativeMap,
57-
) : ParsedError
57+
) : ProcessedError
5858

59-
public fun reportJsException(errorMap: ParsedError)
59+
public fun reportJsException(errorMap: ProcessedError)
6060
}

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactInstance.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -324,8 +324,8 @@ private class ReactJsExceptionHandlerImpl implements ReactJsExceptionHandler {
324324
}
325325

326326
@Override
327-
public void reportJsException(ParsedError error) {
328-
JavaOnlyMap data = StackTraceHelper.convertParsedError(error);
327+
public void reportJsException(ProcessedError error) {
328+
JavaOnlyMap data = StackTraceHelper.convertProcessedError(error);
329329

330330
try {
331331
NativeExceptionsManagerSpec exceptionsManager =

packages/react-native/ReactAndroid/src/main/jni/react/runtime/jni/JReactExceptionManager.cpp

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -16,20 +16,20 @@
1616
namespace facebook::react {
1717

1818
namespace {
19-
class ParsedError : public facebook::jni::JavaClass<ParsedError> {
19+
class ProcessedError : public facebook::jni::JavaClass<ProcessedError> {
2020
public:
2121
static auto constexpr kJavaDescriptor =
22-
"Lcom/facebook/react/interfaces/exceptionmanager/ReactJsExceptionHandler$ParsedError;";
22+
"Lcom/facebook/react/interfaces/exceptionmanager/ReactJsExceptionHandler$ProcessedError;";
2323
};
2424

25-
class ParsedStackFrameImpl
26-
: public facebook::jni::JavaClass<ParsedStackFrameImpl> {
25+
class ProcessedErrorStackFrameImpl
26+
: public facebook::jni::JavaClass<ProcessedErrorStackFrameImpl> {
2727
public:
2828
static auto constexpr kJavaDescriptor =
29-
"Lcom/facebook/react/interfaces/exceptionmanager/ReactJsExceptionHandler$ParsedStackFrameImpl;";
29+
"Lcom/facebook/react/interfaces/exceptionmanager/ReactJsExceptionHandler$ProcessedErrorStackFrameImpl;";
3030

31-
static facebook::jni::local_ref<ParsedStackFrameImpl> create(
32-
const JsErrorHandler::ParsedError::StackFrame& frame) {
31+
static facebook::jni::local_ref<ProcessedErrorStackFrameImpl> create(
32+
const JsErrorHandler::ProcessedError::StackFrame& frame) {
3333
return newInstance(
3434
frame.file ? jni::make_jstring(*frame.file) : nullptr,
3535
frame.methodName,
@@ -38,18 +38,19 @@ class ParsedStackFrameImpl
3838
}
3939
};
4040

41-
class ParsedErrorImpl
42-
: public facebook::jni::JavaClass<ParsedErrorImpl, ParsedError> {
41+
class ProcessedErrorImpl
42+
: public facebook::jni::JavaClass<ProcessedErrorImpl, ProcessedError> {
4343
public:
4444
static auto constexpr kJavaDescriptor =
45-
"Lcom/facebook/react/interfaces/exceptionmanager/ReactJsExceptionHandler$ParsedErrorImpl;";
45+
"Lcom/facebook/react/interfaces/exceptionmanager/ReactJsExceptionHandler$ProcessedErrorImpl;";
4646

47-
static facebook::jni::local_ref<ParsedErrorImpl> create(
47+
static facebook::jni::local_ref<ProcessedErrorImpl> create(
4848
jsi::Runtime& runtime,
49-
const JsErrorHandler::ParsedError& error) {
50-
auto stack = facebook::jni::JArrayList<ParsedStackFrameImpl>::create();
49+
const JsErrorHandler::ProcessedError& error) {
50+
auto stack =
51+
facebook::jni::JArrayList<ProcessedErrorStackFrameImpl>::create();
5152
for (const auto& frame : error.stack) {
52-
stack->add(ParsedStackFrameImpl::create(frame));
53+
stack->add(ProcessedErrorStackFrameImpl::create(frame));
5354
}
5455

5556
auto extraDataDynamic =
@@ -75,12 +76,12 @@ class ParsedErrorImpl
7576

7677
void JReactExceptionManager::reportJsException(
7778
jsi::Runtime& runtime,
78-
const JsErrorHandler::ParsedError& error) {
79+
const JsErrorHandler::ProcessedError& error) {
7980
static const auto method =
80-
javaClassStatic()->getMethod<void(jni::alias_ref<ParsedError>)>(
81+
javaClassStatic()->getMethod<void(jni::alias_ref<ProcessedError>)>(
8182
"reportJsException");
8283
if (self() != nullptr) {
83-
method(self(), ParsedErrorImpl::create(runtime, error));
84+
method(self(), ProcessedErrorImpl::create(runtime, error));
8485
}
8586
}
8687

packages/react-native/ReactAndroid/src/main/jni/react/runtime/jni/JReactExceptionManager.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class JReactExceptionManager
2121

2222
void reportJsException(
2323
jsi::Runtime& runtime,
24-
const JsErrorHandler::ParsedError& error);
24+
const JsErrorHandler::ProcessedError& error);
2525
};
2626

2727
} // namespace facebook::react

packages/react-native/ReactAndroid/src/main/jni/react/runtime/jni/JReactInstance.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ JReactInstance::JReactInstance(
5353
auto onJsError =
5454
[weakJReactExceptionManager = jni::make_weak(jReactExceptionManager)](
5555
jsi::Runtime& runtime,
56-
const JsErrorHandler::ParsedError& error) mutable noexcept {
56+
const JsErrorHandler::ProcessedError& error) mutable noexcept {
5757
if (auto jReactExceptionManager =
5858
weakJReactExceptionManager.lockLocal()) {
5959
jReactExceptionManager->reportJsException(runtime, error);

packages/react-native/ReactAndroid/src/test/java/com/facebook/react/devsupport/StackTraceHelperTest.kt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -65,10 +65,10 @@ class StackTraceHelperTest {
6565
}
6666

6767
@Test
68-
fun testConvertParsedError() {
69-
val error = getParsedErrorTestData()
68+
fun testConvertProcessedError() {
69+
val error = getProcessedErrorTestData()
7070

71-
val data = StackTraceHelper.convertParsedError(error)
71+
val data = StackTraceHelper.convertProcessedError(error)
7272
assertThat(data.getString("message")).isEqualTo("error message")
7373
assertThat(data.getInt("id")).isEqualTo(123)
7474
assertThat(data.getBoolean("isFatal")).isEqualTo(true)
@@ -96,17 +96,17 @@ class StackTraceHelperTest {
9696
assertThat(map.getDouble("column").toInt()).isEqualTo(columnNumber)
9797
}
9898

99-
private fun getParsedErrorTestData(): ParsedError {
99+
private fun getProcessedErrorTestData(): ProcessedError {
100100
val frame1 =
101-
object : ParsedError.StackFrame {
101+
object : ProcessedError.StackFrame {
102102
override val file = "file1"
103103
override val methodName = "method1"
104104
override val lineNumber = 1
105105
override val column = 10
106106
}
107107

108108
val frame2 =
109-
object : ParsedError.StackFrame {
109+
object : ProcessedError.StackFrame {
110110
override val file = "file2"
111111
override val methodName = "method2"
112112
override val lineNumber = 2
@@ -115,7 +115,7 @@ class StackTraceHelperTest {
115115

116116
val frames = listOf(frame1, frame2)
117117

118-
return object : ParsedError {
118+
return object : ProcessedError {
119119
override val message = "error message"
120120
override val originalMessage = null
121121
override val name = null

packages/react-native/ReactCommon/jserrorhandler/JsErrorHandler.cpp

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -124,10 +124,10 @@ jsi::Value getBundleMetadata(jsi::Runtime& runtime, jsi::JSError& error) {
124124
namespace facebook::react {
125125

126126
template <>
127-
struct Bridging<JsErrorHandler::ParsedError::StackFrame> {
127+
struct Bridging<JsErrorHandler::ProcessedError::StackFrame> {
128128
static jsi::Value toJs(
129129
jsi::Runtime& runtime,
130-
const JsErrorHandler::ParsedError::StackFrame& frame) {
130+
const JsErrorHandler::ProcessedError::StackFrame& frame) {
131131
auto stackFrame = jsi::Object(runtime);
132132
auto file = bridging::toJs(runtime, frame.file, nullptr);
133133
auto lineNumber = bridging::toJs(runtime, frame.lineNumber, nullptr);
@@ -142,10 +142,10 @@ struct Bridging<JsErrorHandler::ParsedError::StackFrame> {
142142
};
143143

144144
template <>
145-
struct Bridging<JsErrorHandler::ParsedError> {
145+
struct Bridging<JsErrorHandler::ProcessedError> {
146146
static jsi::Value toJs(
147147
jsi::Runtime& runtime,
148-
const JsErrorHandler::ParsedError& error) {
148+
const JsErrorHandler::ProcessedError& error) {
149149
auto data = jsi::Object(runtime);
150150
data.setProperty(runtime, "message", error.message);
151151
data.setProperty(
@@ -175,7 +175,7 @@ struct Bridging<JsErrorHandler::ParsedError> {
175175

176176
std::ostream& operator<<(
177177
std::ostream& os,
178-
const JsErrorHandler::ParsedError::StackFrame& frame) {
178+
const JsErrorHandler::ProcessedError::StackFrame& frame) {
179179
auto file = frame.file ? quote(*frame.file) : "nil";
180180
auto methodName = quote(frame.methodName);
181181
auto lineNumber =
@@ -188,7 +188,7 @@ std::ostream& operator<<(
188188
}
189189
std::ostream& operator<<(
190190
std::ostream& os,
191-
const JsErrorHandler::ParsedError& error) {
191+
const JsErrorHandler::ProcessedError& error) {
192192
auto message = quote(error.message);
193193
auto originalMessage =
194194
error.originalMessage ? quote(*error.originalMessage) : "nil";
@@ -199,7 +199,7 @@ std::ostream& operator<<(
199199
auto isFatal = std::to_string(static_cast<int>(error.isFatal));
200200
auto extraData = "jsi::Object{ <omitted> } ";
201201

202-
os << "ParsedError {\n"
202+
os << "ProcessedError {\n"
203203
<< " .message = " << message << "\n"
204204
<< " .originalMessage = " << originalMessage << "\n"
205205
<< " .name = " << name << "\n"
@@ -329,7 +329,7 @@ void JsErrorHandler::handleErrorWithCppPipeline(
329329

330330
auto id = nextExceptionId();
331331

332-
ParsedError parsedError = {
332+
ProcessedError processedError = {
333333
.message =
334334
_isRuntimeReady ? message : ("[runtime not ready]: " + message),
335335
.originalMessage = originalMessage,
@@ -341,7 +341,7 @@ void JsErrorHandler::handleErrorWithCppPipeline(
341341
.extraData = std::move(extraData),
342342
};
343343

344-
auto data = bridging::toJs(runtime, parsedError).asObject(runtime);
344+
auto data = bridging::toJs(runtime, processedError).asObject(runtime);
345345

346346
auto isComponentError =
347347
isTruthy(runtime, errorObj.getProperty(runtime, "isComponentError"));
@@ -351,7 +351,7 @@ void JsErrorHandler::handleErrorWithCppPipeline(
351351
auto console = runtime.global().getPropertyAsObject(runtime, "console");
352352
auto errorFn = console.getPropertyAsFunction(runtime, "error");
353353
auto finalMessage =
354-
jsi::String::createFromUtf8(runtime, parsedError.message);
354+
jsi::String::createFromUtf8(runtime, processedError.message);
355355
errorFn.callWithThis(runtime, console, finalMessage);
356356
}
357357

@@ -397,7 +397,7 @@ void JsErrorHandler::handleErrorWithCppPipeline(
397397
_hasHandledFatalError = true;
398398
}
399399

400-
_onJsError(runtime, parsedError);
400+
_onJsError(runtime, processedError);
401401
}
402402
}
403403

packages/react-native/ReactCommon/jserrorhandler/JsErrorHandler.h

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ namespace facebook::react {
1515

1616
class JsErrorHandler {
1717
public:
18-
struct ParsedError {
18+
struct ProcessedError {
1919
struct StackFrame {
2020
std::optional<std::string> file;
2121
std::string methodName;
@@ -34,11 +34,13 @@ class JsErrorHandler {
3434
int id;
3535
bool isFatal;
3636
jsi::Object extraData;
37-
friend std::ostream& operator<<(std::ostream& os, const ParsedError& error);
37+
friend std::ostream& operator<<(
38+
std::ostream& os,
39+
const ProcessedError& error);
3840
};
3941

4042
using OnJsError =
41-
std::function<void(jsi::Runtime& runtime, const ParsedError& error)>;
43+
std::function<void(jsi::Runtime& runtime, const ProcessedError& error)>;
4244

4345
explicit JsErrorHandler(OnJsError onJsError);
4446
~JsErrorHandler();

0 commit comments

Comments
 (0)