@@ -3,6 +3,7 @@ use std::path::{Path, PathBuf};
3
3
4
4
use rustc_ast:: { ast, attr} ;
5
5
use rustc_errors:: Diag ;
6
+ use rustc_parse:: lexer:: StripTokens ;
6
7
use rustc_parse:: parser:: Parser as RawParser ;
7
8
use rustc_parse:: { exp, new_parser_from_file, new_parser_from_source_str, unwrap_or_emit_fatal} ;
8
9
use rustc_span:: { Span , sym} ;
@@ -64,11 +65,14 @@ impl<'a> ParserBuilder<'a> {
64
65
input : Input ,
65
66
) -> Result < RawParser < ' a > , Vec < Diag < ' a > > > {
66
67
match input {
67
- Input :: File ( ref file) => new_parser_from_file ( psess, file, None ) ,
68
+ Input :: File ( ref file) => {
69
+ new_parser_from_file ( psess, file, StripTokens :: ShebangAndFrontmatter , None )
70
+ }
68
71
Input :: Text ( text) => new_parser_from_source_str (
69
72
psess,
70
73
rustc_span:: FileName :: Custom ( "stdin" . to_owned ( ) ) ,
71
74
text,
75
+ StripTokens :: ShebangAndFrontmatter ,
72
76
) ,
73
77
}
74
78
}
@@ -104,8 +108,12 @@ impl<'a> Parser<'a> {
104
108
span : Span ,
105
109
) -> Result < ( ast:: AttrVec , ThinVec < Box < ast:: Item > > , Span ) , ParserError > {
106
110
let result = catch_unwind ( AssertUnwindSafe ( || {
107
- let mut parser =
108
- unwrap_or_emit_fatal ( new_parser_from_file ( psess. inner ( ) , path, Some ( span) ) ) ;
111
+ let mut parser = unwrap_or_emit_fatal ( new_parser_from_file (
112
+ psess. inner ( ) ,
113
+ path,
114
+ StripTokens :: ShebangAndFrontmatter ,
115
+ Some ( span) ,
116
+ ) ) ;
109
117
match parser. parse_mod ( exp ! ( Eof ) ) {
110
118
Ok ( ( a, i, spans) ) => Some ( ( a, i, spans. inner_span ) ) ,
111
119
Err ( e) => {
0 commit comments