@@ -62,7 +62,20 @@ pub fn new_parser_from_source_str(
62
62
source : String ,
63
63
) -> Result < Parser < ' _ > , Vec < Diag < ' _ > > > {
64
64
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 )
66
79
}
67
80
68
81
/// 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>(
96
109
}
97
110
err. emit ( ) ;
98
111
} ) ;
99
- new_parser_from_source_file ( psess, source_file)
112
+ new_parser_from_source_file ( psess, source_file, FrontmatterAllowed :: Yes )
100
113
}
101
114
102
115
pub fn utf8_error < E : EmissionGuarantee > (
@@ -147,9 +160,10 @@ pub fn utf8_error<E: EmissionGuarantee>(
147
160
fn new_parser_from_source_file (
148
161
psess : & ParseSess ,
149
162
source_file : Arc < SourceFile > ,
163
+ frontmatter_allowed : FrontmatterAllowed ,
150
164
) -> Result < Parser < ' _ > , Vec < Diag < ' _ > > > {
151
165
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 ) ?;
153
167
let mut parser = Parser :: new ( psess, stream, None ) ;
154
168
if parser. token == token:: Eof {
155
169
parser. token . span = Span :: new ( end_pos, end_pos, parser. token . span . ctxt ( ) , None ) ;
0 commit comments