From 33ee724501bb3b970170dfdfab0c738ef874a8ff Mon Sep 17 00:00:00 2001 From: Moti Zilberman Date: Thu, 14 Nov 2019 10:30:47 -0800 Subject: [PATCH] Extract RCTFormatStackTrace function from RCTFormatError Summary: Extracts a new `RCTFormatStackTrace` function from `RCTFormatError`. Changelog: [Internal] Reviewed By: shergin Differential Revision: D18114387 fbshipit-source-id: 4466f52d75d9da3a257cd1cc7067492a0c19a7d5 --- React/Base/RCTAssert.h | 5 +++++ React/Base/RCTAssert.m | 15 ++++++++++----- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/React/Base/RCTAssert.h b/React/Base/RCTAssert.h index 9abc5a0c426..34b49e1af4b 100644 --- a/React/Base/RCTAssert.h +++ b/React/Base/RCTAssert.h @@ -135,6 +135,11 @@ RCT_EXTERN NSString *RCTCurrentThreadName(void); */ RCT_EXTERN NSString *RCTFormatError(NSString *message, NSArray *> *stacktrace, NSUInteger maxMessageLength); +/** + * Formats a JS stack trace for logging. + */ +RCT_EXTERN NSString *RCTFormatStackTrace(NSArray *> *stackTrace); + /** * Convenience macro to assert which thread is currently running (DEBUG mode only) */ diff --git a/React/Base/RCTAssert.m b/React/Base/RCTAssert.m index 02d8bf0df1e..3a50fb913f4 100644 --- a/React/Base/RCTAssert.m +++ b/React/Base/RCTAssert.m @@ -166,9 +166,14 @@ NSString *RCTFormatError(NSString *message, NSArray message = [[message substringToIndex:maxMessageLength] stringByAppendingString:@"..."]; } - NSMutableString *prettyStack = [NSMutableString string]; + NSString *prettyStack = RCTFormatStackTrace(stackTrace); + + return [NSString stringWithFormat:@"%@%@%@", message, prettyStack ? @", stack:\n" : @"", prettyStack ? prettyStack : @""]; +} + +NSString *RCTFormatStackTrace(NSArray *> *stackTrace) { if (stackTrace) { - [prettyStack appendString:@", stack:\n"]; + NSMutableString *prettyStack = [NSMutableString string]; NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"\\b((?:seg-\\d+(?:_\\d+)?|\\d+)\\.js)" options:NSRegularExpressionCaseInsensitive @@ -184,9 +189,10 @@ NSString *RCTFormatError(NSString *message, NSArray [prettyStack appendFormat:@"%@@%@%@:%@\n", frame[@"methodName"], fileName, frame[@"lineNumber"], frame[@"column"]]; } - } - return [NSString stringWithFormat:@"%@%@", message, prettyStack]; + return prettyStack; + } + return nil; } void RCTFatalException(NSException *exception) @@ -216,4 +222,3 @@ RCTFatalExceptionHandler RCTGetFatalExceptionHandler(void) { return RCTCurrentFatalExceptionHandler; } -