about summary refs log tree commit diff
path: root/compiler/rustc_parse
diff options
context:
space:
mode:
authorNicholas Nethercote <n.nethercote@gmail.com>2022-07-27 12:15:35 +1000
committerNicholas Nethercote <n.nethercote@gmail.com>2022-08-01 08:11:15 +1000
commit55185992d6f4ef3c01aaab545488863d21232d8d (patch)
tree546df1099e8cbfd0bda1b2a45fd8cfab484d0888 /compiler/rustc_parse
parent038f9e6bef9c8fcf122d93a8a33ac546f5606eb3 (diff)
downloadrust-55185992d6f4ef3c01aaab545488863d21232d8d.tar.gz
rust-55185992d6f4ef3c01aaab545488863d21232d8d.zip
Improve shebang handling.
Avoid doing stuff until it's necessary.
Diffstat (limited to 'compiler/rustc_parse')
-rw-r--r--compiler/rustc_parse/src/lexer/mod.rs13
1 files changed, 5 insertions, 8 deletions
diff --git a/compiler/rustc_parse/src/lexer/mod.rs b/compiler/rustc_parse/src/lexer/mod.rs
index e9701ec2d7f..90df8dbd445 100644
--- a/compiler/rustc_parse/src/lexer/mod.rs
+++ b/compiler/rustc_parse/src/lexer/mod.rs
@@ -64,14 +64,11 @@ impl<'a> StringReader<'a> {
         let mut spacing = Spacing::Joint;
 
         // Skip `#!` at the start of the file
-        let start_src_index = self.src_index(self.pos);
-        let text: &str = &self.src[start_src_index..self.end_src_index];
-        let is_beginning_of_file = self.pos == self.start_pos;
-        if is_beginning_of_file {
-            if let Some(shebang_len) = rustc_lexer::strip_shebang(text) {
-                self.pos = self.pos + BytePos::from_usize(shebang_len);
-                spacing = Spacing::Alone;
-            }
+        if self.pos == self.start_pos
+            && let Some(shebang_len) = rustc_lexer::strip_shebang(self.src)
+        {
+            self.pos = self.pos + BytePos::from_usize(shebang_len);
+            spacing = Spacing::Alone;
         }
 
         // Skip trivial (whitespace & comments) tokens