Explicit type for "$()" hack in parse_util_locate_cmdsub

(cherry picked from commit 8abab0e2cc)
This commit is contained in:
Johannes Altmanninger
2025-05-02 06:38:20 +02:00
parent 27504658ce
commit 35849c57dc

View File

@@ -218,6 +218,10 @@ fn parse_util_locate_cmdsub(
let mut last_dollar = None;
let mut paran_begin = None;
let mut paran_end = None;
enum Quote {
Real(char),
VirtualDouble,
}
fn process_opening_quote(
input: &[char],
inout_is_quoted: &mut Option<&mut bool>,
@@ -225,8 +229,12 @@ fn process_opening_quote(
quoted_cmdsubs: &mut Vec<i32>,
pos: usize,
last_dollar: &mut Option<usize>,
quote: char,
quote: Quote,
) -> Option<usize> {
let quote = match quote {
Quote::Real(q) => q,
Quote::VirtualDouble => '"',
};
let q_end = quote_end(input.into(), pos, quote)?;
// Found a valid closing quote.
if input[q_end] == '$' {
@@ -256,7 +264,7 @@ fn process_opening_quote(
&mut quoted_cmdsubs,
pos,
&mut last_dollar,
'"',
Quote::VirtualDouble,
)
.unwrap_or(input.len());
}
@@ -272,7 +280,7 @@ fn process_opening_quote(
&mut quoted_cmdsubs,
pos,
&mut last_dollar,
c,
Quote::Real(c),
) {
Some(q_end) => pos = q_end,
None => break,
@@ -317,7 +325,7 @@ fn process_opening_quote(
&mut quoted_cmdsubs,
pos,
&mut last_dollar,
'"',
Quote::VirtualDouble,
) {
Some(q_end) => pos = q_end,
None => break,