@@ -28,18 +28,18 @@ use rustc_passes::{self, hir_stats, layout_test};
2828use rustc_plugin_impl as plugin;
2929use rustc_query_impl:: Queries as TcxQueries ;
3030use rustc_resolve:: { Resolver , ResolverArenas } ;
31+ use rustc_serialize:: json;
3132use rustc_session:: config:: { CrateType , Input , OutputFilenames , OutputType , PpMode , PpSourceMode } ;
3233use rustc_session:: lint;
3334use rustc_session:: output:: { filename_for_input, filename_for_metadata} ;
3435use rustc_session:: search_paths:: PathKind ;
3536use rustc_session:: Session ;
3637use rustc_span:: symbol:: { Ident , Symbol } ;
38+ use rustc_span:: FileName ;
3739use rustc_trait_selection:: traits;
3840use rustc_typeck as typeck;
39- use tracing:: { info, warn} ;
40-
41- use rustc_serialize:: json;
4241use tempfile:: Builder as TempFileBuilder ;
42+ use tracing:: { info, warn} ;
4343
4444use std:: any:: Any ;
4545use std:: cell:: RefCell ;
@@ -594,6 +594,16 @@ fn write_out_deps(
594594 . map ( |fmap| escape_dep_filename ( & fmap. name . prefer_local ( ) . to_string ( ) ) )
595595 . collect ( ) ;
596596
597+ // Account for explicitly marked-to-track files
598+ // (e.g. accessed in proc macros).
599+ let file_depinfo = sess. parse_sess . file_depinfo . borrow ( ) ;
600+ let extra_tracked_files = file_depinfo. iter ( ) . map ( |path_sym| {
601+ let path = PathBuf :: from ( & * path_sym. as_str ( ) ) ;
602+ let file = FileName :: from ( path) ;
603+ escape_dep_filename ( & file. prefer_local ( ) . to_string ( ) )
604+ } ) ;
605+ files. extend ( extra_tracked_files) ;
606+
597607 if let Some ( ref backend) = sess. opts . debugging_opts . codegen_backend {
598608 files. push ( backend. to_string ( ) ) ;
599609 }
0 commit comments