Skip to content

Commit cc101e7

Browse files
committed
Fix warning
1 parent 6280b58 commit cc101e7

File tree

3 files changed

+21
-6
lines changed

3 files changed

+21
-6
lines changed

src/elements/command/paren.rs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,8 +103,15 @@ impl ParenCommand {
103103
..Default::default()
104104
};
105105

106-
if command::eat_inner_script(feeder, core, "(", vec![")"], &mut ans.script, substitution)? {
107-
ans.text.push('(');
106+
let mut start = "(";
107+
if substitution {
108+
if feeder.starts_with("`") {
109+
start = "`";
110+
}
111+
}
112+
113+
if command::eat_inner_script(feeder, core, start, vec![")"], &mut ans.script, substitution)? {
114+
ans.text.push_str(start);
108115
ans.text.push_str(&ans.script.as_ref().unwrap().get_text());
109116
ans.text.push_str(&feeder.consume(1));
110117

src/elements/io/redirect.rs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,7 @@ impl Redirect {
279279
}
280280

281281
fn show_heredoc_warning(&self, lineno: usize, feeder_lineno: usize, core: &mut ShellCore) {
282-
let msg = format!("warning: here-document at line {} delimited by end-of-file (wanted `{}')", lineno, &self.right.text);
282+
let msg = format!("warning: here-document at line {} delimited by end-of-file (wanted `{}')", lineno, &self.right.text.replace("\\", ""));
283283
let _ = core.db.set_param("LINENO", &feeder_lineno.to_string(), None);
284284
error::print(&msg, core);
285285
}
@@ -297,9 +297,14 @@ impl Redirect {
297297
};
298298

299299
let mut end_nest = end.clone();
300+
let mut back_quote = false;
300301
let end_return = end.clone() + "\n";
301302
match feeder.nest.last().unwrap().0.as_str() {
302303
"(" => end_nest += ")",
304+
"`" => {
305+
back_quote = true;
306+
end_nest += ")";
307+
},
303308
_ => end_nest += "\n",
304309
}
305310

@@ -322,6 +327,9 @@ impl Redirect {
322327

323328
if feeder.starts_with(&end_nest) || feeder.starts_with(&end_return) {
324329
feeder.consume(end.len());
330+
if !back_quote && feeder.starts_with(")") {
331+
self.show_heredoc_warning(lineno, feeder.lineno, core);
332+
}
325333
break;
326334
}else if feeder.starts_with(&(end.clone())) {
327335
feeder.consume(end.len());

src/elements/subword/command_sub.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -115,13 +115,13 @@ impl CommandSubstitution {
115115

116116
ans.text += &feeder.consume(1);
117117
let mut paren = ans.text.clone();
118-
paren.remove(0);
119-
paren.insert(0, '(');
118+
// paren.remove(0);
119+
// paren.insert(0, '(');
120120
paren.pop();
121121
paren.push(')');
122122

123123
let mut f = Feeder::new(&paren);
124-
if let Some(s) = ParenCommand::parse(&mut f, core, false)? {
124+
if let Some(s) = ParenCommand::parse(&mut f, core, true)? {
125125
ans.command = s;
126126
return Ok(Some(ans));
127127
}

0 commit comments

Comments
 (0)