Make parser.libdata.is_event a bool instead of an int

Contrary to the comment, this can and should be a bool.
This commit is contained in:
Peter Ammon
2025-03-02 11:20:45 -08:00
parent 7cc72f1306
commit 0113db3ff7
3 changed files with 8 additions and 15 deletions

View File

@@ -460,16 +460,10 @@ pub fn get_function_handlers(name: &wstr) -> EventHandlerList {
/// event handler, we make sure to optimize the 'no matches' path. This means that nothing is
/// allocated/initialized unless needed.
fn fire_internal(parser: &Parser, event: &Event) {
assert!(
parser.libdata().is_event >= 0,
"is_event should not be negative"
);
// Suppress fish_trace during events.
let is_event = parser.libdata().is_event;
let _inc_event = scoped_push_replacer(
let _set_event = scoped_push_replacer(
|new_value| std::mem::replace(&mut parser.libdata_mut().is_event, new_value),
is_event + 1,
true,
);
let _suppress_trace = scoped_push_replacer(
|new_value| std::mem::replace(&mut parser.libdata_mut().suppress_fish_trace, new_value),
@@ -539,7 +533,7 @@ pub fn fire_delayed(parser: &Parser) {
let ld = &parser.libdata();
// Do not invoke new event handlers from within event handlers.
if ld.is_event != 0 {
if ld.is_event {
return;
};
}

View File

@@ -1625,8 +1625,8 @@ fn run_1_job(
let parser = ctx.parser();
let ld = &parser.libdata();
props.skip_notification =
ld.is_subshell || parser.is_block() || ld.is_event != 0 || !parser.is_interactive();
props.from_event_handler = ld.is_event != 0;
ld.is_subshell || parser.is_block() || ld.is_event || !parser.is_interactive();
props.from_event_handler = ld.is_event;
}
let mut job = Job::new(props, self.node_source_owned(job_node));
@@ -1887,7 +1887,7 @@ fn setup_group(&self, ctx: &OperationContext<'_>, j: &mut Job) {
} else {
// This is a "real job" that gets its own pgroup.
j.processes_mut()[0].leads_pgrp = true;
let wants_terminal = ctx.parser().libdata().is_event == 0;
let wants_terminal = !ctx.parser().libdata().is_event;
j.group = Some(JobGroup::create_with_job_control(
j.command().to_owned(),
wants_terminal,

View File

@@ -269,9 +269,8 @@ pub struct LibraryData {
/// Whether we are running a subshell command.
pub is_subshell: bool,
/// Whether we are running an event handler. This is not a bool because we keep count of the
/// event nesting level.
pub is_event: i32,
/// Whether we are running an event handler.
pub is_event: bool,
/// Whether we are currently interactive.
pub is_interactive: bool,