Skip to content

Commit 48224c1

Browse files
committed
docs(embedded): Note the shebang deviation
rustc considers the following valid and without a shebang: ```rust // Hello [allow(dead_code)] fn main() { println!("Hello, world!"); } ``` and ```rustc [allow(dead_code)] fn main() { println!("Hello, world!"); } ``` In both cases, we consider it to have a shebang. This commit documents that intention. We could add our own heuristics (e.g. `#!` with only whitespace is not a shebang) but we should either be a subset or intentionally different than rustc (e.g. require a non `[`-prefixes interpreter) rather than do both. This will be reflected in the tracking issue which will handle the final decision for the team on this matter. Fixes #15170
1 parent b64750d commit 48224c1

File tree

1 file changed

+3
-0
lines changed

1 file changed

+3
-0
lines changed

src/cargo/util/toml/embedded.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,9 @@ impl<'s> ScriptSource<'s> {
147147
if let Some(rest) = source.content.strip_prefix("#!") {
148148
// Ok, this is a shebang but if the next non-whitespace token is `[`,
149149
// then it may be valid Rust code, so consider it Rust code.
150+
//
151+
// NOTE: rustc considers line and block comments to be whitespace but to avoid
152+
// any more awareness of Rust grammar, we are excluding it.
150153
if rest.trim_start().starts_with('[') {
151154
return Ok(source);
152155
}

0 commit comments

Comments
 (0)