@@ -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 ) ,
@@ -971,6 +974,23 @@ pub fn print_after_hir_lowering<'tcx, 'a: 'tcx>(sess: &'a Session,
971
974
} )
972
975
}
973
976
977
+ ( PpmHirTree ( s) , None ) => {
978
+ let out: & mut Write = & mut out;
979
+ s. call_with_pp_support_hir ( sess,
980
+ cstore,
981
+ hir_map,
982
+ analysis,
983
+ resolutions,
984
+ arena,
985
+ arenas,
986
+ output_filenames,
987
+ crate_name,
988
+ move |_annotation, krate| {
989
+ debug ! ( "pretty printing source code {:?}" , s) ;
990
+ write ! ( out, "{:#?}" , krate)
991
+ } )
992
+ }
993
+
974
994
( PpmHir ( s) , Some ( uii) ) => {
975
995
let out: & mut Write = & mut out;
976
996
s. call_with_pp_support_hir ( sess,
@@ -1005,6 +1025,28 @@ pub fn print_after_hir_lowering<'tcx, 'a: 'tcx>(sess: &'a Session,
1005
1025
pp_state. s . eof ( )
1006
1026
} )
1007
1027
}
1028
+
1029
+ ( PpmHirTree ( s) , Some ( uii) ) => {
1030
+ let out: & mut Write = & mut out;
1031
+ s. call_with_pp_support_hir ( sess,
1032
+ cstore,
1033
+ hir_map,
1034
+ analysis,
1035
+ resolutions,
1036
+ arena,
1037
+ arenas,
1038
+ output_filenames,
1039
+ crate_name,
1040
+ move |_annotation, _krate| {
1041
+ debug ! ( "pretty printing source code {:?}" , s) ;
1042
+ for node_id in uii. all_matching_node_ids ( hir_map) {
1043
+ let node = hir_map. get ( node_id) ;
1044
+ write ! ( out, "{:#?}" , node) ?;
1045
+ }
1046
+ Ok ( ( ) )
1047
+ } )
1048
+ }
1049
+
1008
1050
_ => unreachable ! ( ) ,
1009
1051
}
1010
1052
. unwrap ( ) ;
0 commit comments