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); + } + } } }