Skip to content

Commit 8e2cc5e

Browse files
cjihrigaddaleax
authored andcommitted
report: refactor triggerReport()
This commit fixes the triggerReport() argument validation. The existing test is also updated, as it was not passing the Error object to triggerReport(). PR-URL: #26268 Reviewed-By: Richard Lau <[email protected]> Reviewed-By: Ruben Bridgewater <[email protected]> Reviewed-By: James M Snell <[email protected]>
1 parent b0c310d commit 8e2cc5e

File tree

3 files changed

+17
-20
lines changed

3 files changed

+17
-20
lines changed

lib/internal/process/report.js

+11-13
Original file line numberDiff line numberDiff line change
@@ -75,20 +75,18 @@ const report = {
7575
},
7676
triggerReport(file, err) {
7777
emitExperimentalWarning('report');
78-
if (err == null) {
79-
if (file == null) {
80-
return nr.triggerReport(new ERR_SYNTHETIC().stack);
81-
}
82-
if (typeof file !== 'string')
83-
throw new ERR_INVALID_ARG_TYPE('file', 'String', file);
84-
return nr.triggerReport(file, new ERR_SYNTHETIC().stack);
85-
}
86-
if (typeof err !== 'object')
87-
throw new ERR_INVALID_ARG_TYPE('err', 'Object', err);
88-
if (file == null)
89-
return nr.triggerReport(err.stack);
90-
if (typeof file !== 'string')
78+
79+
if (typeof file === 'object' && file !== null) {
80+
err = file;
81+
file = undefined;
82+
} else if (file !== undefined && typeof file !== 'string') {
9183
throw new ERR_INVALID_ARG_TYPE('file', 'String', file);
84+
} else if (err === undefined) {
85+
err = new ERR_SYNTHETIC();
86+
} else if (err === null || typeof err !== 'object') {
87+
throw new ERR_INVALID_ARG_TYPE('err', 'Object', err);
88+
}
89+
9290
return nr.triggerReport(file, err.stack);
9391
},
9492
getReport(err) {

src/node_report_module.cc

+4-5
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,11 @@ void TriggerReport(const FunctionCallbackInfo<Value>& info) {
4848
std::string filename;
4949
Local<String> stackstr;
5050

51-
if (info.Length() == 1) {
52-
stackstr = info[0].As<String>();
53-
} else {
51+
CHECK_EQ(info.Length(), 2);
52+
stackstr = info[1].As<String>();
53+
54+
if (info[0]->IsString())
5455
filename = *String::Utf8Value(isolate, info[0]);
55-
stackstr = info[1].As<String>();
56-
}
5756

5857
filename = TriggerNodeReport(
5958
isolate, env, "JavaScript API", __func__, filename, stackstr);

test/node-report/test-api-pass-error.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ const assert = require('assert');
77
if (process.argv[2] === 'child') {
88
try {
99
throw new Error('Testing error handling');
10-
} catch {
11-
process.report.triggerReport();
10+
} catch (err) {
11+
process.report.triggerReport(err);
1212
}
1313
} else {
1414
const helper = require('../common/report.js');

0 commit comments

Comments
 (0)