about summary refs log tree commit diff
path: root/src/librustsyntax
diff options
context:
space:
mode:
authorMargaret Meyerhofer <mmeyerho@andrew>2012-05-22 17:27:20 -0700
committerMargaret Meyerhofer <mmeyerho@andrew>2012-05-22 17:27:20 -0700
commitf1cea3ce21eb896b0849eca0a8fd9ea4e03ab35f (patch)
treed0d7277f0666b7d5e9b864d34b861df06a9aa615 /src/librustsyntax
parent248e439638dbabf822bf9017eb99b44f0e1a0370 (diff)
downloadrust-f1cea3ce21eb896b0849eca0a8fd9ea4e03ab35f.tar.gz
rust-f1cea3ce21eb896b0849eca0a8fd9ea4e03ab35f.zip
Changed the lexer to accept #! comments on the first line.
Diffstat (limited to 'src/librustsyntax')
-rw-r--r--src/librustsyntax/codemap.rs1
-rw-r--r--src/librustsyntax/parse/lexer.rs11
2 files changed, 12 insertions, 0 deletions
diff --git a/src/librustsyntax/codemap.rs b/src/librustsyntax/codemap.rs
index 976a5ee23eb..808fb2dffe0 100644
--- a/src/librustsyntax/codemap.rs
+++ b/src/librustsyntax/codemap.rs
@@ -12,6 +12,7 @@ export new_filemap;
 export new_filemap_w_substr;
 export mk_substr_filename;
 export lookup_char_pos;
+export lookup_char_pos_adj;
 export adjust_span;
 export span_to_str;
 export span_to_filename;
diff --git a/src/librustsyntax/parse/lexer.rs b/src/librustsyntax/parse/lexer.rs
index e486355501f..91013ca9a76 100644
--- a/src/librustsyntax/parse/lexer.rs
+++ b/src/librustsyntax/parse/lexer.rs
@@ -119,6 +119,17 @@ fn consume_any_line_comment(rdr: reader) {
           '*' { rdr.bump(); rdr.bump(); ret consume_block_comment(rdr); }
           _ { ret; }
         }
+    } else if rdr.curr == '#' {
+        if rdr.next() == '!' {
+            let cmap = codemap::new_codemap();
+            (*cmap).files.push(rdr.filemap);
+            let mut loc = codemap::lookup_char_pos_adj(cmap, rdr.chpos);
+            if loc.line == 1u && loc.col == 0u {
+                while rdr.curr != '\n' && !rdr.is_eof() { rdr.bump(); }
+                loc = codemap::lookup_char_pos_adj(cmap, rdr.chpos);
+                ret consume_whitespace_and_comments(rdr);
+            }
+        }
     }
 }