@@ -28,18 +28,18 @@ use rustc_passes::{self, hir_stats, layout_test};
28
28
use rustc_plugin_impl as plugin;
29
29
use rustc_query_impl:: Queries as TcxQueries ;
30
30
use rustc_resolve:: { Resolver , ResolverArenas } ;
31
+ use rustc_serialize:: json;
31
32
use rustc_session:: config:: { CrateType , Input , OutputFilenames , OutputType , PpMode , PpSourceMode } ;
32
33
use rustc_session:: lint;
33
34
use rustc_session:: output:: { filename_for_input, filename_for_metadata} ;
34
35
use rustc_session:: search_paths:: PathKind ;
35
36
use rustc_session:: Session ;
36
37
use rustc_span:: symbol:: { Ident , Symbol } ;
38
+ use rustc_span:: FileName ;
37
39
use rustc_trait_selection:: traits;
38
40
use rustc_typeck as typeck;
39
- use tracing:: { info, warn} ;
40
-
41
- use rustc_serialize:: json;
42
41
use tempfile:: Builder as TempFileBuilder ;
42
+ use tracing:: { info, warn} ;
43
43
44
44
use std:: any:: Any ;
45
45
use std:: cell:: RefCell ;
@@ -594,6 +594,16 @@ fn write_out_deps(
594
594
. map ( |fmap| escape_dep_filename ( & fmap. name . prefer_local ( ) . to_string ( ) ) )
595
595
. collect ( ) ;
596
596
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
+
597
607
if let Some ( ref backend) = sess. opts . debugging_opts . codegen_backend {
598
608
files. push ( backend. to_string ( ) ) ;
599
609
}
0 commit comments