Fix return setting last exit code (#14120)

# Description

Fixes #14113 and #14112.

# Tests + Formatting

Added a test.
This commit is contained in:
Ian Manske
2024-10-17 20:05:58 -07:00
committed by GitHub
parent 28b6db115a
commit e911ff4d67
5 changed files with 16 additions and 7 deletions

View File

@ -1470,8 +1470,11 @@ impl ShellError {
Some(Spanned { item, span })
}
pub fn exit_code(&self) -> i32 {
self.external_exit_code().map(|e| e.item).unwrap_or(1)
pub fn exit_code(&self) -> Option<i32> {
match self {
Self::Return { .. } | Self::Break { .. } | Self::Continue { .. } => None,
_ => self.external_exit_code().map(|e| e.item).or(Some(1)),
}
}
pub fn into_value(self, span: Span) -> Value {