From f1cea3ce21eb896b0849eca0a8fd9ea4e03ab35f Mon Sep 17 00:00:00 2001 From: Margaret Meyerhofer Date: Tue, 22 May 2012 17:27:20 -0700 Subject: [PATCH] Changed the lexer to accept #! comments on the first line. --- src/librustsyntax/codemap.rs | 1 + src/librustsyntax/parse/lexer.rs | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/src/librustsyntax/codemap.rs b/src/librustsyntax/codemap.rs index 976a5ee23eb4..808fb2dffe09 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 e486355501f5..91013ca9a760 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); + } + } } }