fix(cli/repl): await Promise.any([])... (#15623)

This commit is contained in:
Jason 2022-09-02 19:38:06 +08:00 committed by GitHub
parent a74b2ecf37
commit 8178665bd1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 40 additions and 7 deletions

View file

@ -861,3 +861,17 @@ fn repl_report_error() {
assert_contains!(out, "1\n2\nundefined\n");
assert!(err.is_empty());
}
#[test]
fn pty_aggregate_error() {
let (out, err) = util::run_and_collect_output(
true,
"repl",
Some(vec!["await Promise.any([])"]),
Some(vec![("NO_COLOR".to_owned(), "1".to_owned())]),
false,
);
assert_contains!(out, "AggregateError");
assert!(err.is_empty());
}

View file

@ -2027,3 +2027,14 @@ Deno.test(function inspectStringAbbreviation() {
'[ "This is a ..." ]',
);
});
Deno.test(async function inspectAggregateError() {
try {
await Promise.any([]);
} catch (err) {
assertEquals(
Deno.inspect(err).trimEnd(),
"AggregateError: All promises were rejected",
);
}
});

View file

@ -165,8 +165,18 @@ impl ReplSession {
exception_details,
} = evaluate_response.value;
if exception_details.is_some() {
Ok(if let Some(exception_details) = exception_details {
self.set_last_thrown_error(&result).await?;
let description = match exception_details.exception {
Some(exception) => exception
.description
.unwrap_or_else(|| "Unknown exception".to_string()),
None => "Unknown exception".to_string(),
};
EvaluationOutput::Error(format!(
"{} {}",
exception_details.text, description
))
} else {
self
.language_server
@ -174,12 +184,8 @@ impl ReplSession {
.await;
self.set_last_eval_result(&result).await?;
}
let value = self.get_eval_value(&result).await?;
Ok(match exception_details {
Some(_) => EvaluationOutput::Error(format!("Uncaught {}", value)),
None => EvaluationOutput::Value(value),
let value = self.get_eval_value(&result).await?;
EvaluationOutput::Value(value)
})
}
Err(err) => {

View file

@ -959,6 +959,8 @@
if (RegExpPrototypeTest(/\s+at/, line)) {
ArrayPrototypeUnshift(stackLines, line);
break;
} else if (typeof line === "undefined") {
break;
}
finalMessage += line;