@@ -62,7 +62,20 @@ pub fn new_parser_from_source_str(
6262    source :  String , 
6363)  -> Result < Parser < ' _ > ,  Vec < Diag < ' _ > > >  { 
6464    let  source_file = psess. source_map ( ) . new_source_file ( name,  source) ; 
65-     new_parser_from_source_file ( psess,  source_file) 
65+     new_parser_from_source_file ( psess,  source_file,  FrontmatterAllowed :: Yes ) 
66+ } 
67+ 
68+ /// Creates a new parser from a simple (no frontmatter) source string. 
69+ /// 
70+ /// On failure, the errors must be consumed via `unwrap_or_emit_fatal`, `emit`, `cancel`, 
71+ /// etc., otherwise a panic will occur when they are dropped. 
72+ pub  fn  new_parser_from_simple_source_str ( 
73+     psess :  & ParseSess , 
74+     name :  FileName , 
75+     source :  String , 
76+ )  -> Result < Parser < ' _ > ,  Vec < Diag < ' _ > > >  { 
77+     let  source_file = psess. source_map ( ) . new_source_file ( name,  source) ; 
78+     new_parser_from_source_file ( psess,  source_file,  FrontmatterAllowed :: No ) 
6679} 
6780
6881/// Creates a new parser from a filename. On failure, the errors must be consumed via 
@@ -96,7 +109,7 @@ pub fn new_parser_from_file<'a>(
96109        } 
97110        err. emit ( ) ; 
98111    } ) ; 
99-     new_parser_from_source_file ( psess,  source_file) 
112+     new_parser_from_source_file ( psess,  source_file,   FrontmatterAllowed :: Yes ) 
100113} 
101114
102115pub  fn  utf8_error < E :  EmissionGuarantee > ( 
@@ -147,9 +160,10 @@ pub fn utf8_error<E: EmissionGuarantee>(
147160fn  new_parser_from_source_file ( 
148161    psess :  & ParseSess , 
149162    source_file :  Arc < SourceFile > , 
163+     frontmatter_allowed :  FrontmatterAllowed , 
150164)  -> Result < Parser < ' _ > ,  Vec < Diag < ' _ > > >  { 
151165    let  end_pos = source_file. end_position ( ) ; 
152-     let  stream = source_file_to_stream ( psess,  source_file,  None ,  FrontmatterAllowed :: Yes ) ?; 
166+     let  stream = source_file_to_stream ( psess,  source_file,  None ,  frontmatter_allowed ) ?; 
153167    let  mut  parser = Parser :: new ( psess,  stream,  None ) ; 
154168    if  parser. token  == token:: Eof  { 
155169        parser. token . span  = Span :: new ( end_pos,  end_pos,  parser. token . span . ctxt ( ) ,  None ) ; 
0 commit comments