@@ -77,6 +77,7 @@ pub enum PpFlowGraphMode {
77
77
pub enum PpMode {
78
78
PpmSource ( PpSourceMode ) ,
79
79
PpmHir ( PpSourceMode ) ,
80
+ PpmHirTree ( PpSourceMode ) ,
80
81
PpmFlowGraph ( PpFlowGraphMode ) ,
81
82
PpmMir ,
82
83
PpmMirCFG ,
@@ -93,6 +94,7 @@ impl PpMode {
93
94
PpmSource ( PpmExpandedIdentified ) |
94
95
PpmSource ( PpmExpandedHygiene ) |
95
96
PpmHir ( _) |
97
+ PpmHirTree ( _) |
96
98
PpmMir |
97
99
PpmMirCFG |
98
100
PpmFlowGraph ( _) => true ,
@@ -125,6 +127,7 @@ pub fn parse_pretty(sess: &Session,
125
127
( "hir" , true ) => PpmHir ( PpmNormal ) ,
126
128
( "hir,identified" , true ) => PpmHir ( PpmIdentified ) ,
127
129
( "hir,typed" , true ) => PpmHir ( PpmTyped ) ,
130
+ ( "hir-tree" , true ) => PpmHirTree ( PpmNormal ) ,
128
131
( "mir" , true ) => PpmMir ,
129
132
( "mir-cfg" , true ) => PpmMirCFG ,
130
133
( "flowgraph" , true ) => PpmFlowGraph ( PpFlowGraphMode :: Default ) ,
@@ -969,6 +972,23 @@ pub fn print_after_hir_lowering<'tcx, 'a: 'tcx>(sess: &'a Session,
969
972
} )
970
973
}
971
974
975
+ ( PpmHirTree ( s) , None ) => {
976
+ let out: & mut Write = & mut out;
977
+ s. call_with_pp_support_hir ( sess,
978
+ cstore,
979
+ hir_map,
980
+ analysis,
981
+ resolutions,
982
+ arena,
983
+ arenas,
984
+ output_filenames,
985
+ crate_name,
986
+ move |_annotation, krate| {
987
+ debug ! ( "pretty printing source code {:?}" , s) ;
988
+ write ! ( out, "{:#?}" , krate)
989
+ } )
990
+ }
991
+
972
992
( PpmHir ( s) , Some ( uii) ) => {
973
993
let out: & mut Write = & mut out;
974
994
s. call_with_pp_support_hir ( sess,
@@ -1003,6 +1023,28 @@ pub fn print_after_hir_lowering<'tcx, 'a: 'tcx>(sess: &'a Session,
1003
1023
pp_state. s . eof ( )
1004
1024
} )
1005
1025
}
1026
+
1027
+ ( PpmHirTree ( s) , Some ( uii) ) => {
1028
+ let out: & mut Write = & mut out;
1029
+ s. call_with_pp_support_hir ( sess,
1030
+ cstore,
1031
+ hir_map,
1032
+ analysis,
1033
+ resolutions,
1034
+ arena,
1035
+ arenas,
1036
+ output_filenames,
1037
+ crate_name,
1038
+ move |_annotation, _krate| {
1039
+ debug ! ( "pretty printing source code {:?}" , s) ;
1040
+ for node_id in uii. all_matching_node_ids ( hir_map) {
1041
+ let node = hir_map. get ( node_id) ;
1042
+ write ! ( out, "{:#?}" , node) ?;
1043
+ }
1044
+ Ok ( ( ) )
1045
+ } )
1046
+ }
1047
+
1006
1048
_ => unreachable ! ( ) ,
1007
1049
}
1008
1050
. unwrap ( ) ;
0 commit comments