Skip to content

Commit 45f3ae3

Browse files
committed
fix(console): array prints on single line same as current runtime
1 parent 3349ca9 commit 45f3ae3

File tree

1 file changed

+31
-3
lines changed

1 file changed

+31
-3
lines changed

NativeScript/runtime/modules/console/Console.cpp

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -84,9 +84,37 @@ std::string buildStringFromArg(napi_env env, napi_value val) {
8484
napi_coerce_to_string(env, val, &funcString);
8585
return napi_util::get_string_value(env, funcString);
8686
} else if (napi_util::is_array(env, val)) {
87-
napi_value global;
88-
napi_get_global(env, &global);
89-
return JsonStringifyObject(env, val, false);
87+
napi_value cachedSelf = val;
88+
89+
// Get array length
90+
uint32_t arrayLength;
91+
napi_get_array_length(env, val, &arrayLength);
92+
93+
std::stringstream arrayStr;
94+
arrayStr << "[";
95+
96+
for (uint32_t i = 0; i < arrayLength; i++) {
97+
napi_value propertyValue;
98+
napi_get_element(env, val, i, &propertyValue);
99+
100+
// Check for circular reference
101+
bool isStrictEqual = false;
102+
napi_strict_equals(env, propertyValue, cachedSelf, &isStrictEqual);
103+
104+
if (isStrictEqual) {
105+
arrayStr << "[Circular]";
106+
} else {
107+
std::string elementString = buildStringFromArg(env, propertyValue);
108+
arrayStr << elementString;
109+
}
110+
111+
if (i != arrayLength - 1) {
112+
arrayStr << ", ";
113+
}
114+
}
115+
116+
arrayStr << "]";
117+
return arrayStr.str();
90118
} else if (type == napi_object) {
91119
return transformJSObject(env, val);
92120
} else if (type == napi_symbol) {

0 commit comments

Comments
 (0)