@@ -5,6 +5,7 @@ use std::rc::Rc;
55use std:: sync:: Arc ;
66
77use rustc_ast as ast;
8+ use rustc_ast:: token:: TokenKind ;
89use rustc_ast:: tokenstream:: TokenStream ;
910use rustc_ast:: { join_path_idents, token} ;
1011use rustc_ast_pretty:: pprust;
@@ -18,7 +19,7 @@ use rustc_parse::{new_parser_from_file, unwrap_or_emit_fatal, utf8_error};
1819use rustc_session:: lint:: builtin:: INCOMPLETE_INCLUDE ;
1920use rustc_session:: parse:: ParseSess ;
2021use rustc_span:: source_map:: SourceMap ;
21- use rustc_span:: { ByteSymbol , Pos , Span , Symbol } ;
22+ use rustc_span:: { ByteSymbol , ErrorGuaranteed , Pos , Span , Symbol , sym } ;
2223use smallvec:: SmallVec ;
2324
2425use crate :: errors;
@@ -31,37 +32,43 @@ pub(crate) fn expand_line(
3132 cx : & mut ExtCtxt < ' _ > ,
3233 sp : Span ,
3334 tts : TokenStream ,
34- ) -> MacroExpanderResult < ' static > {
35+ ) -> Result < TokenStream , ErrorGuaranteed > {
3536 let sp = cx. with_def_site_ctxt ( sp) ;
3637 check_zero_tts ( cx, sp, tts, "line!" ) ;
3738
3839 let topmost = cx. expansion_cause ( ) . unwrap_or ( sp) ;
3940 let loc = cx. source_map ( ) . lookup_char_pos ( topmost. lo ( ) ) ;
4041
41- ExpandResult :: Ready ( MacEager :: expr ( cx. expr_u32 ( topmost, loc. line as u32 ) ) )
42+ Ok ( TokenStream :: token_alone (
43+ TokenKind :: lit ( token:: Integer , sym:: integer ( loc. line ) , Some ( sym:: u32) ) ,
44+ sp,
45+ ) )
4246}
4347
4448/// Expand `column!()` to the current column number.
4549pub ( crate ) fn expand_column (
4650 cx : & mut ExtCtxt < ' _ > ,
4751 sp : Span ,
4852 tts : TokenStream ,
49- ) -> MacroExpanderResult < ' static > {
53+ ) -> Result < TokenStream , ErrorGuaranteed > {
5054 let sp = cx. with_def_site_ctxt ( sp) ;
5155 check_zero_tts ( cx, sp, tts, "column!" ) ;
5256
5357 let topmost = cx. expansion_cause ( ) . unwrap_or ( sp) ;
5458 let loc = cx. source_map ( ) . lookup_char_pos ( topmost. lo ( ) ) ;
5559
56- ExpandResult :: Ready ( MacEager :: expr ( cx. expr_u32 ( topmost, loc. col . to_usize ( ) as u32 + 1 ) ) )
60+ Ok ( TokenStream :: token_alone (
61+ TokenKind :: lit ( token:: Integer , sym:: integer ( loc. col . to_usize ( ) + 1 ) , Some ( sym:: u32) ) ,
62+ sp,
63+ ) )
5764}
5865
5966/// Expand `file!()` to the current filename.
6067pub ( crate ) fn expand_file (
6168 cx : & mut ExtCtxt < ' _ > ,
6269 sp : Span ,
6370 tts : TokenStream ,
64- ) -> MacroExpanderResult < ' static > {
71+ ) -> Result < TokenStream , ErrorGuaranteed > {
6572 let sp = cx. with_def_site_ctxt ( sp) ;
6673 check_zero_tts ( cx, sp, tts, "file!" ) ;
6774
@@ -70,37 +77,43 @@ pub(crate) fn expand_file(
7077
7178 use rustc_session:: RemapFileNameExt ;
7279 use rustc_session:: config:: RemapPathScopeComponents ;
73- ExpandResult :: Ready ( MacEager :: expr ( cx. expr_str (
74- topmost,
75- Symbol :: intern (
76- & loc. file . name . for_scope ( cx. sess , RemapPathScopeComponents :: MACRO ) . to_string_lossy ( ) ,
80+ Ok ( TokenStream :: token_alone (
81+ TokenKind :: lit (
82+ token:: RawStr ,
83+ Symbol :: intern (
84+ & loc. file
85+ . name
86+ . for_scope ( cx. sess , RemapPathScopeComponents :: MACRO )
87+ . to_string_lossy ( ) ,
88+ ) ,
89+ None ,
7790 ) ,
78- ) ) )
91+ sp,
92+ ) )
7993}
8094
8195/// Expand `stringify!($input)`.
8296pub ( crate ) fn expand_stringify (
8397 cx : & mut ExtCtxt < ' _ > ,
8498 sp : Span ,
8599 tts : TokenStream ,
86- ) -> MacroExpanderResult < ' static > {
100+ ) -> Result < TokenStream , ErrorGuaranteed > {
87101 let sp = cx. with_def_site_ctxt ( sp) ;
88102 let s = pprust:: tts_to_string ( & tts) ;
89- ExpandResult :: Ready ( MacEager :: expr ( cx . expr_str ( sp , Symbol :: intern ( & s) ) ) )
103+ Ok ( TokenStream :: token_alone ( TokenKind :: lit ( token :: RawStr , Symbol :: intern ( & s) , None ) , sp ) )
90104}
91105
92106/// Expand `module_path!()` to (a textual representation of) the current module path.
93107pub ( crate ) fn expand_mod (
94108 cx : & mut ExtCtxt < ' _ > ,
95109 sp : Span ,
96110 tts : TokenStream ,
97- ) -> MacroExpanderResult < ' static > {
111+ ) -> Result < TokenStream , ErrorGuaranteed > {
98112 let sp = cx. with_def_site_ctxt ( sp) ;
99113 check_zero_tts ( cx, sp, tts, "module_path!" ) ;
100114 let mod_path = & cx. current_expansion . module . mod_path ;
101115 let string = join_path_idents ( mod_path) ;
102-
103- ExpandResult :: Ready ( MacEager :: expr ( cx. expr_str ( sp, Symbol :: intern ( & string) ) ) )
116+ Ok ( TokenStream :: token_alone ( TokenKind :: lit ( token:: RawStr , Symbol :: intern ( & string) , None ) , sp) )
104117}
105118
106119/// Expand `include!($input)`.
0 commit comments