@@ -17,7 +17,7 @@ use crate::{
1717 hygiene:: span_with_def_site_ctxt,
1818 name, quote,
1919 tt:: { self , DelimSpan } ,
20- EagerCallInfo , ExpandError , ExpandResult , HirFileIdExt , MacroCallId , MacroCallLoc ,
20+ ExpandError , ExpandResult , HirFileIdExt , MacroCallId , MacroCallLoc ,
2121} ;
2222
2323macro_rules! register_builtin {
@@ -575,36 +575,32 @@ fn parse_string(tt: &tt::Subtree) -> Result<String, ExpandError> {
575575fn include_expand (
576576 db : & dyn ExpandDatabase ,
577577 arg_id : MacroCallId ,
578- _tt : & tt:: Subtree ,
578+ tt : & tt:: Subtree ,
579579 span : SpanData ,
580580) -> ExpandResult < tt:: Subtree > {
581- match db. include_expand ( arg_id) {
582- Ok ( ( res, _) ) => ExpandResult :: ok ( res. as_ref ( ) . clone ( ) ) ,
583- Err ( e) => ExpandResult :: new ( tt:: Subtree :: empty ( DelimSpan { open : span, close : span } ) , e) ,
584- }
585- }
586-
587- // FIXME: Check if this is still needed now after the token map rewrite
588- pub ( crate ) fn include_arg_to_tt (
589- db : & dyn ExpandDatabase ,
590- arg_id : MacroCallId ,
591- ) -> Result < ( triomphe:: Arc < tt:: Subtree > , FileId ) , ExpandError > {
592- let loc = db. lookup_intern_macro_call ( arg_id) ;
593- let Some ( EagerCallInfo { arg, arg_id, .. } ) = loc. eager . as_deref ( ) else {
594- panic ! ( "include_arg_to_tt called on non include macro call: {:?}" , & loc. eager) ;
581+ let path = match parse_string ( tt) {
582+ Ok ( it) => it,
583+ Err ( e) => {
584+ return ExpandResult :: new ( tt:: Subtree :: empty ( DelimSpan { open : span, close : span } ) , e)
585+ }
595586 } ;
596- let path = parse_string ( & arg) ?;
597- let file_id = relative_file ( db, * arg_id, & path, false ) ?;
598-
599- // why are we not going through a SyntaxNode here?
600- let subtree = parse_to_token_tree (
587+ let file_id = match relative_file ( db, arg_id, & path, false ) {
588+ Ok ( file_id) => file_id,
589+ Err ( e) => {
590+ return ExpandResult :: new ( tt:: Subtree :: empty ( DelimSpan { open : span, close : span } ) , e) ;
591+ }
592+ } ;
593+ match parse_to_token_tree (
601594 SpanAnchor { file_id, ast_id : ROOT_ERASED_FILE_AST_ID } ,
602- // FIXME
603595 SyntaxContextId :: ROOT ,
604596 & db. file_text ( file_id) ,
605- )
606- . ok_or ( mbe:: ExpandError :: ConversionError ) ?;
607- Ok ( ( triomphe:: Arc :: new ( subtree) , file_id) )
597+ ) {
598+ Some ( it) => ExpandResult :: ok ( it) ,
599+ None => ExpandResult :: new (
600+ tt:: Subtree :: empty ( DelimSpan { open : span, close : span } ) ,
601+ ExpandError :: other ( "failed to parse included file" ) ,
602+ ) ,
603+ }
608604}
609605
610606fn include_bytes_expand (
@@ -613,9 +609,12 @@ fn include_bytes_expand(
613609 tt : & tt:: Subtree ,
614610 span : SpanData ,
615611) -> ExpandResult < tt:: Subtree > {
616- if let Err ( e) = parse_string ( tt) {
617- return ExpandResult :: new ( tt:: Subtree :: empty ( DelimSpan { open : span, close : span } ) , e) ;
618- }
612+ let _path = match parse_string ( tt) {
613+ Ok ( it) => it,
614+ Err ( e) => {
615+ return ExpandResult :: new ( tt:: Subtree :: empty ( DelimSpan { open : span, close : span } ) , e)
616+ }
617+ } ;
619618
620619 // FIXME: actually read the file here if the user asked for macro expansion
621620 let res = tt:: Subtree {
0 commit comments