1use std::fmt::{self, Write};
2
3use rustc_middle::thir::*;
4use rustc_middle::ty;
5use rustc_middle::ty::TyCtxt;
6use rustc_span::def_id::LocalDefId;
7
8pub fn thir_tree(tcx: TyCtxt<'_>, owner_def: LocalDefId) -> String {
10 match super::cx::thir_body(tcx, owner_def) {
11 Ok((thir, expr)) => {
12 let thir = thir.steal();
13 let mut printer = ThirPrinter::new(&thir);
14 printer.print(expr);
15 printer.into_buffer()
16 }
17 Err(_) => "error".into(),
18 }
19}
20
21pub fn thir_flat(tcx: TyCtxt<'_>, owner_def: LocalDefId) -> String {
23 match super::cx::thir_body(tcx, owner_def) {
24 Ok((thir, _)) => ::alloc::__export::must_use({
::alloc::fmt::format(format_args!("{0:#?}", thir.steal()))
})format!("{:#?}", thir.steal()),
25 Err(_) => "error".into(),
26 }
27}
28
29struct ThirPrinter<'a, 'tcx> {
30 thir: &'a Thir<'tcx>,
31 fmt: String,
32}
33
34const INDENT: &str = " ";
35
36macro_rules! print_indented {
37 ($writer:ident, $s:expr, $indent_lvl:expr) => {
38 $writer.indent($indent_lvl);
39 writeln!($writer, "{}", $s).expect("unable to write to ThirPrinter");
40 };
41}
42
43impl<'a, 'tcx> Write for ThirPrinter<'a, 'tcx> {
44 fn write_str(&mut self, s: &str) -> fmt::Result {
45 self.fmt.push_str(s);
46 Ok(())
47 }
48}
49
50impl<'a, 'tcx> ThirPrinter<'a, 'tcx> {
51 fn new(thir: &'a Thir<'tcx>) -> Self {
52 Self { thir, fmt: String::new() }
53 }
54
55 fn indent(&mut self, level: usize) {
56 for _ in 0..level {
57 self.fmt.push_str(INDENT);
58 }
59 }
60
61 fn print(&mut self, body_expr: ExprId) {
62 self.indent(0);
self.write_fmt(format_args!("{0}\n",
"params: [")).expect("unable to write to ThirPrinter");print_indented!(self, "params: [", 0);
63 for param in self.thir.params.iter() {
64 self.print_param(param, 1);
65 }
66 self.indent(0);
self.write_fmt(format_args!("{0}\n",
"]")).expect("unable to write to ThirPrinter");print_indented!(self, "]", 0);
67
68 self.indent(0);
self.write_fmt(format_args!("{0}\n",
"body:")).expect("unable to write to ThirPrinter");print_indented!(self, "body:", 0);
69 self.print_expr(body_expr, 1);
70 }
71
72 fn into_buffer(self) -> String {
73 self.fmt
74 }
75
76 fn print_list<T>(
77 &mut self,
78 label: &str,
79 list: &[T],
80 depth_lvl: usize,
81 print_fn: impl Fn(&mut Self, &T, usize),
82 ) {
83 if list.is_empty() {
84 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
format_args!("{0}: []",
label))).expect("unable to write to ThirPrinter");print_indented!(self, format_args!("{label}: []"), depth_lvl);
85 } else {
86 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
format_args!("{0}: [",
label))).expect("unable to write to ThirPrinter");print_indented!(self, format_args!("{label}: ["), depth_lvl);
87 for item in list {
88 print_fn(self, item, depth_lvl + 1)
89 }
90 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"]")).expect("unable to write to ThirPrinter");print_indented!(self, "]", depth_lvl);
91 }
92 }
93
94 fn print_param(&mut self, param: &Param<'tcx>, depth_lvl: usize) {
95 let Param { pat, ty, ty_span, self_kind, hir_id } = param;
96
97 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"Param {")).expect("unable to write to ThirPrinter");print_indented!(self, "Param {", depth_lvl);
98 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("ty: {0:?}", ty))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("ty: {:?}", ty), depth_lvl + 1);
99 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("ty_span: {0:?}",
ty_span))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("ty_span: {:?}", ty_span), depth_lvl + 1);
100 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("self_kind: {0:?}",
self_kind))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("self_kind: {:?}", self_kind), depth_lvl + 1);
101 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("hir_id: {0:?}", hir_id))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("hir_id: {:?}", hir_id), depth_lvl + 1);
102
103 if let Some(pat) = pat {
104 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"param: Some( ")).expect("unable to write to ThirPrinter");print_indented!(self, "param: Some( ", depth_lvl + 1);
105 self.print_pat(pat, depth_lvl + 2);
106 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
")")).expect("unable to write to ThirPrinter");print_indented!(self, ")", depth_lvl + 1);
107 } else {
108 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"param: None")).expect("unable to write to ThirPrinter");print_indented!(self, "param: None", depth_lvl + 1);
109 }
110
111 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
112 }
113
114 fn print_block(&mut self, block_id: BlockId, depth_lvl: usize) {
115 let Block { targeted_by_break, span, region_scope, stmts, expr, safety_mode } =
116 &self.thir.blocks[block_id];
117
118 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"Block {")).expect("unable to write to ThirPrinter");print_indented!(self, "Block {", depth_lvl);
119 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("targeted_by_break: {0}",
targeted_by_break))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("targeted_by_break: {}", targeted_by_break), depth_lvl + 1);
120 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("span: {0:?}", span))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("span: {:?}", span), depth_lvl + 1);
121 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("region_scope: {0:?}",
region_scope))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("region_scope: {:?}", region_scope), depth_lvl + 1);
122 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("safety_mode: {0:?}",
safety_mode))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("safety_mode: {:?}", safety_mode), depth_lvl + 1);
123
124 if stmts.len() > 0 {
125 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"stmts: [")).expect("unable to write to ThirPrinter");print_indented!(self, "stmts: [", depth_lvl + 1);
126 for stmt in stmts.iter() {
127 self.print_stmt(*stmt, depth_lvl + 2);
128 }
129 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"]")).expect("unable to write to ThirPrinter");print_indented!(self, "]", depth_lvl + 1);
130 } else {
131 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"stmts: []")).expect("unable to write to ThirPrinter");print_indented!(self, "stmts: []", depth_lvl + 1);
132 }
133
134 if let Some(expr_id) = expr {
135 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"expr:")).expect("unable to write to ThirPrinter");print_indented!(self, "expr:", depth_lvl + 1);
136 self.print_expr(*expr_id, depth_lvl + 2);
137 } else {
138 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"expr: []")).expect("unable to write to ThirPrinter");print_indented!(self, "expr: []", depth_lvl + 1);
139 }
140
141 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
142 }
143
144 fn print_stmt(&mut self, stmt_id: StmtId, depth_lvl: usize) {
145 let Stmt { kind } = &self.thir.stmts[stmt_id];
146
147 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"Stmt {")).expect("unable to write to ThirPrinter");print_indented!(self, "Stmt {", depth_lvl);
148
149 match kind {
150 StmtKind::Expr { scope, expr } => {
151 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"kind: Expr {")).expect("unable to write to ThirPrinter");print_indented!(self, "kind: Expr {", depth_lvl + 1);
152 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("scope: {0:?}", scope))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("scope: {:?}", scope), depth_lvl + 2);
153 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
"expr:")).expect("unable to write to ThirPrinter");print_indented!(self, "expr:", depth_lvl + 2);
154 self.print_expr(*expr, depth_lvl + 3);
155 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl + 1);
156 }
157 StmtKind::Let {
158 remainder_scope,
159 init_scope,
160 pattern,
161 initializer,
162 else_block,
163 hir_id,
164 span,
165 } => {
166 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"kind: Let {")).expect("unable to write to ThirPrinter");print_indented!(self, "kind: Let {", depth_lvl + 1);
167 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("remainder_scope: {0:?}",
remainder_scope))
}))).expect("unable to write to ThirPrinter");print_indented!(
168 self,
169 format!("remainder_scope: {:?}", remainder_scope),
170 depth_lvl + 2
171 );
172 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("init_scope: {0:?}",
init_scope))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("init_scope: {:?}", init_scope), depth_lvl + 2);
173
174 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
"pattern: ")).expect("unable to write to ThirPrinter");print_indented!(self, "pattern: ", depth_lvl + 2);
175 self.print_pat(pattern, depth_lvl + 3);
176 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
",")).expect("unable to write to ThirPrinter");print_indented!(self, ",", depth_lvl + 2);
177
178 if let Some(init) = initializer {
179 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
"initializer: Some(")).expect("unable to write to ThirPrinter");print_indented!(self, "initializer: Some(", depth_lvl + 2);
180 self.print_expr(*init, depth_lvl + 3);
181 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
")")).expect("unable to write to ThirPrinter");print_indented!(self, ")", depth_lvl + 2);
182 } else {
183 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
"initializer: None")).expect("unable to write to ThirPrinter");print_indented!(self, "initializer: None", depth_lvl + 2);
184 }
185
186 if let Some(else_block) = else_block {
187 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
"else_block: Some(")).expect("unable to write to ThirPrinter");print_indented!(self, "else_block: Some(", depth_lvl + 2);
188 self.print_block(*else_block, depth_lvl + 3);
189 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
")")).expect("unable to write to ThirPrinter");print_indented!(self, ")", depth_lvl + 2);
190 } else {
191 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
"else_block: None")).expect("unable to write to ThirPrinter");print_indented!(self, "else_block: None", depth_lvl + 2);
192 }
193
194 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("hir_id: {0:?}", hir_id))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("hir_id: {:?}", hir_id), depth_lvl + 2);
195 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("span: {0:?}", span))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("span: {:?}", span), depth_lvl + 2);
196 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl + 1);
197 }
198 }
199
200 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
201 }
202
203 fn print_expr(&mut self, expr: ExprId, depth_lvl: usize) {
204 let Expr { ty, temp_scope_id, span, kind } = &self.thir[expr];
205 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"Expr {")).expect("unable to write to ThirPrinter");print_indented!(self, "Expr {", depth_lvl);
206 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("ty: {0:?}", ty))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("ty: {:?}", ty), depth_lvl + 1);
207 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("temp_scope_id: {0:?}",
temp_scope_id))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("temp_scope_id: {:?}", temp_scope_id), depth_lvl + 1);
208 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("span: {0:?}", span))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("span: {:?}", span), depth_lvl + 1);
209 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"kind: ")).expect("unable to write to ThirPrinter");print_indented!(self, "kind: ", depth_lvl + 1);
210 self.print_expr_kind(kind, depth_lvl + 2);
211 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
212 }
213
214 fn print_expr_kind(&mut self, expr_kind: &ExprKind<'tcx>, depth_lvl: usize) {
215 use rustc_middle::thir::ExprKind::*;
216
217 match expr_kind {
218 Scope { region_scope, value, hir_id } => {
219 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"Scope {")).expect("unable to write to ThirPrinter");print_indented!(self, "Scope {", depth_lvl);
220 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("region_scope: {0:?}",
region_scope))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("region_scope: {:?}", region_scope), depth_lvl + 1);
221 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("hir_id: {0:?}", hir_id))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("hir_id: {:?}", hir_id), depth_lvl + 1);
222 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"value:")).expect("unable to write to ThirPrinter");print_indented!(self, "value:", depth_lvl + 1);
223 self.print_expr(*value, depth_lvl + 2);
224 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
225 }
226 If { if_then_scope, cond, then, else_opt } => {
227 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"If {")).expect("unable to write to ThirPrinter");print_indented!(self, "If {", depth_lvl);
228 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("if_then_scope: {0:?}",
if_then_scope))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("if_then_scope: {:?}", if_then_scope), depth_lvl + 1);
229 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"cond:")).expect("unable to write to ThirPrinter");print_indented!(self, "cond:", depth_lvl + 1);
230 self.print_expr(*cond, depth_lvl + 2);
231 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"then:")).expect("unable to write to ThirPrinter");print_indented!(self, "then:", depth_lvl + 1);
232 self.print_expr(*then, depth_lvl + 2);
233
234 if let Some(else_expr) = else_opt {
235 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"else:")).expect("unable to write to ThirPrinter");print_indented!(self, "else:", depth_lvl + 1);
236 self.print_expr(*else_expr, depth_lvl + 2);
237 }
238
239 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
240 }
241 Call { fun, args, ty, from_hir_call, fn_span } => {
242 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"Call {")).expect("unable to write to ThirPrinter");print_indented!(self, "Call {", depth_lvl);
243 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("ty: {0:?}", ty))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("ty: {:?}", ty), depth_lvl + 1);
244 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("from_hir_call: {0}",
from_hir_call))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("from_hir_call: {}", from_hir_call), depth_lvl + 1);
245 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("fn_span: {0:?}",
fn_span))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("fn_span: {:?}", fn_span), depth_lvl + 1);
246 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"fun:")).expect("unable to write to ThirPrinter");print_indented!(self, "fun:", depth_lvl + 1);
247 self.print_expr(*fun, depth_lvl + 2);
248
249 if args.len() > 0 {
250 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"args: [")).expect("unable to write to ThirPrinter");print_indented!(self, "args: [", depth_lvl + 1);
251 for arg in args.iter() {
252 self.print_expr(*arg, depth_lvl + 2);
253 }
254 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"]")).expect("unable to write to ThirPrinter");print_indented!(self, "]", depth_lvl + 1);
255 } else {
256 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"args: []")).expect("unable to write to ThirPrinter");print_indented!(self, "args: []", depth_lvl + 1);
257 }
258
259 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
260 }
261 ByUse { expr, span } => {
262 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"ByUse {")).expect("unable to write to ThirPrinter");print_indented!(self, "ByUse {", depth_lvl);
263 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"expr:")).expect("unable to write to ThirPrinter");print_indented!(self, "expr:", depth_lvl + 1);
264 self.print_expr(*expr, depth_lvl + 2);
265 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("span: {0:?}", span))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("span: {:?}", span), depth_lvl + 1);
266 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
267 }
268 Deref { arg } => {
269 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"Deref {")).expect("unable to write to ThirPrinter");print_indented!(self, "Deref {", depth_lvl);
270 self.print_expr(*arg, depth_lvl + 1);
271 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
272 }
273 Binary { op, lhs, rhs } => {
274 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"Binary {")).expect("unable to write to ThirPrinter");print_indented!(self, "Binary {", depth_lvl);
275 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("op: {0:?}", op))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("op: {:?}", op), depth_lvl + 1);
276 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"lhs:")).expect("unable to write to ThirPrinter");print_indented!(self, "lhs:", depth_lvl + 1);
277 self.print_expr(*lhs, depth_lvl + 2);
278 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"rhs:")).expect("unable to write to ThirPrinter");print_indented!(self, "rhs:", depth_lvl + 1);
279 self.print_expr(*rhs, depth_lvl + 2);
280 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
281 }
282 LogicalOp { op, lhs, rhs } => {
283 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"LogicalOp {")).expect("unable to write to ThirPrinter");print_indented!(self, "LogicalOp {", depth_lvl);
284 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("op: {0:?}", op))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("op: {:?}", op), depth_lvl + 1);
285 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"lhs:")).expect("unable to write to ThirPrinter");print_indented!(self, "lhs:", depth_lvl + 1);
286 self.print_expr(*lhs, depth_lvl + 2);
287 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"rhs:")).expect("unable to write to ThirPrinter");print_indented!(self, "rhs:", depth_lvl + 1);
288 self.print_expr(*rhs, depth_lvl + 2);
289 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
290 }
291 Unary { op, arg } => {
292 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"Unary {")).expect("unable to write to ThirPrinter");print_indented!(self, "Unary {", depth_lvl);
293 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("op: {0:?}", op))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("op: {:?}", op), depth_lvl + 1);
294 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"arg:")).expect("unable to write to ThirPrinter");print_indented!(self, "arg:", depth_lvl + 1);
295 self.print_expr(*arg, depth_lvl + 2);
296 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
297 }
298 Cast { source } => {
299 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"Cast {")).expect("unable to write to ThirPrinter");print_indented!(self, "Cast {", depth_lvl);
300 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"source:")).expect("unable to write to ThirPrinter");print_indented!(self, "source:", depth_lvl + 1);
301 self.print_expr(*source, depth_lvl + 2);
302 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
303 }
304 Use { source } => {
305 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"Use {")).expect("unable to write to ThirPrinter");print_indented!(self, "Use {", depth_lvl);
306 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"source:")).expect("unable to write to ThirPrinter");print_indented!(self, "source:", depth_lvl + 1);
307 self.print_expr(*source, depth_lvl + 2);
308 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
309 }
310 NeverToAny { source } => {
311 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"NeverToAny {")).expect("unable to write to ThirPrinter");print_indented!(self, "NeverToAny {", depth_lvl);
312 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"source:")).expect("unable to write to ThirPrinter");print_indented!(self, "source:", depth_lvl + 1);
313 self.print_expr(*source, depth_lvl + 2);
314 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
315 }
316 PointerCoercion { cast, is_from_as_cast, source } => {
317 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"Pointer {")).expect("unable to write to ThirPrinter");print_indented!(self, "Pointer {", depth_lvl);
318 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("cast: {0:?}", cast))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("cast: {:?}", cast), depth_lvl + 1);
319 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("is_from_as_cast: {0:?}",
is_from_as_cast))
}))).expect("unable to write to ThirPrinter");print_indented!(
320 self,
321 format!("is_from_as_cast: {:?}", is_from_as_cast),
322 depth_lvl + 1
323 );
324 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"source:")).expect("unable to write to ThirPrinter");print_indented!(self, "source:", depth_lvl + 1);
325 self.print_expr(*source, depth_lvl + 2);
326 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
327 }
328 Loop { body } => {
329 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"Loop (")).expect("unable to write to ThirPrinter");print_indented!(self, "Loop (", depth_lvl);
330 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"body:")).expect("unable to write to ThirPrinter");print_indented!(self, "body:", depth_lvl + 1);
331 self.print_expr(*body, depth_lvl + 2);
332 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
")")).expect("unable to write to ThirPrinter");print_indented!(self, ")", depth_lvl);
333 }
334 LoopMatch { state, region_scope, match_data } => {
335 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"LoopMatch {")).expect("unable to write to ThirPrinter");print_indented!(self, "LoopMatch {", depth_lvl);
336 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"state:")).expect("unable to write to ThirPrinter");print_indented!(self, "state:", depth_lvl + 1);
337 self.print_expr(*state, depth_lvl + 2);
338 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("region_scope: {0:?}",
region_scope))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("region_scope: {:?}", region_scope), depth_lvl + 1);
339 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"match_data:")).expect("unable to write to ThirPrinter");print_indented!(self, "match_data:", depth_lvl + 1);
340 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
"LoopMatchMatchData {")).expect("unable to write to ThirPrinter");print_indented!(self, "LoopMatchMatchData {", depth_lvl + 2);
341 self.indent(depth_lvl + 3);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("span: {0:?}",
match_data.span))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("span: {:?}", match_data.span), depth_lvl + 3);
342 self.indent(depth_lvl + 3);
self.write_fmt(format_args!("{0}\n",
"scrutinee:")).expect("unable to write to ThirPrinter");print_indented!(self, "scrutinee:", depth_lvl + 3);
343 self.print_expr(match_data.scrutinee, depth_lvl + 4);
344
345 self.indent(depth_lvl + 3);
self.write_fmt(format_args!("{0}\n",
"arms: [")).expect("unable to write to ThirPrinter");print_indented!(self, "arms: [", depth_lvl + 3);
346 for arm_id in match_data.arms.iter() {
347 self.print_arm(*arm_id, depth_lvl + 4);
348 }
349 self.indent(depth_lvl + 3);
self.write_fmt(format_args!("{0}\n",
"]")).expect("unable to write to ThirPrinter");print_indented!(self, "]", depth_lvl + 3);
350 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl + 2);
351 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
352 }
353 Let { expr, pat } => {
354 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"Let {")).expect("unable to write to ThirPrinter");print_indented!(self, "Let {", depth_lvl);
355 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"expr:")).expect("unable to write to ThirPrinter");print_indented!(self, "expr:", depth_lvl + 1);
356 self.print_expr(*expr, depth_lvl + 2);
357 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("pat: {0:?}", pat))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("pat: {:?}", pat), depth_lvl + 1);
358 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
359 }
360 Match { scrutinee, arms, .. } => {
361 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"Match {")).expect("unable to write to ThirPrinter");print_indented!(self, "Match {", depth_lvl);
362 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"scrutinee:")).expect("unable to write to ThirPrinter");print_indented!(self, "scrutinee:", depth_lvl + 1);
363 self.print_expr(*scrutinee, depth_lvl + 2);
364
365 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"arms: [")).expect("unable to write to ThirPrinter");print_indented!(self, "arms: [", depth_lvl + 1);
366 for arm_id in arms.iter() {
367 self.print_arm(*arm_id, depth_lvl + 2);
368 }
369 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"]")).expect("unable to write to ThirPrinter");print_indented!(self, "]", depth_lvl + 1);
370 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
371 }
372 Block { block } => self.print_block(*block, depth_lvl),
373 Assign { lhs, rhs } => {
374 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"Assign {")).expect("unable to write to ThirPrinter");print_indented!(self, "Assign {", depth_lvl);
375 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"lhs:")).expect("unable to write to ThirPrinter");print_indented!(self, "lhs:", depth_lvl + 1);
376 self.print_expr(*lhs, depth_lvl + 2);
377 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"rhs:")).expect("unable to write to ThirPrinter");print_indented!(self, "rhs:", depth_lvl + 1);
378 self.print_expr(*rhs, depth_lvl + 2);
379 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
380 }
381 AssignOp { op, lhs, rhs } => {
382 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"AssignOp {")).expect("unable to write to ThirPrinter");print_indented!(self, "AssignOp {", depth_lvl);
383 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("op: {0:?}", op))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("op: {:?}", op), depth_lvl + 1);
384 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"lhs:")).expect("unable to write to ThirPrinter");print_indented!(self, "lhs:", depth_lvl + 1);
385 self.print_expr(*lhs, depth_lvl + 2);
386 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"rhs:")).expect("unable to write to ThirPrinter");print_indented!(self, "rhs:", depth_lvl + 1);
387 self.print_expr(*rhs, depth_lvl + 2);
388 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
389 }
390 Field { lhs, variant_index, name } => {
391 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"Field {")).expect("unable to write to ThirPrinter");print_indented!(self, "Field {", depth_lvl);
392 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("variant_index: {0:?}",
variant_index))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("variant_index: {:?}", variant_index), depth_lvl + 1);
393 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("name: {0:?}", name))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("name: {:?}", name), depth_lvl + 1);
394 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"lhs:")).expect("unable to write to ThirPrinter");print_indented!(self, "lhs:", depth_lvl + 1);
395 self.print_expr(*lhs, depth_lvl + 2);
396 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
397 }
398 Index { lhs, index } => {
399 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"Index {")).expect("unable to write to ThirPrinter");print_indented!(self, "Index {", depth_lvl);
400 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"lhs:")).expect("unable to write to ThirPrinter");print_indented!(self, "lhs:", depth_lvl + 1);
401 self.print_expr(*lhs, depth_lvl + 2);
402 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"index:")).expect("unable to write to ThirPrinter");print_indented!(self, "index:", depth_lvl + 1);
403 self.print_expr(*index, depth_lvl + 2);
404 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
405 }
406 VarRef { id } => {
407 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"VarRef {")).expect("unable to write to ThirPrinter");print_indented!(self, "VarRef {", depth_lvl);
408 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("id: {0:?}", id))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("id: {:?}", id), depth_lvl + 1);
409 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
410 }
411 UpvarRef { closure_def_id, var_hir_id } => {
412 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"UpvarRef {")).expect("unable to write to ThirPrinter");print_indented!(self, "UpvarRef {", depth_lvl);
413 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("closure_def_id: {0:?}",
closure_def_id))
}))).expect("unable to write to ThirPrinter");print_indented!(
414 self,
415 format!("closure_def_id: {:?}", closure_def_id),
416 depth_lvl + 1
417 );
418 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("var_hir_id: {0:?}",
var_hir_id))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("var_hir_id: {:?}", var_hir_id), depth_lvl + 1);
419 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
420 }
421 Borrow { borrow_kind, arg } => {
422 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"Borrow (")).expect("unable to write to ThirPrinter");print_indented!(self, "Borrow (", depth_lvl);
423 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("borrow_kind: {0:?}",
borrow_kind))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("borrow_kind: {:?}", borrow_kind), depth_lvl + 1);
424 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"arg:")).expect("unable to write to ThirPrinter");print_indented!(self, "arg:", depth_lvl + 1);
425 self.print_expr(*arg, depth_lvl + 2);
426 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
")")).expect("unable to write to ThirPrinter");print_indented!(self, ")", depth_lvl);
427 }
428 RawBorrow { mutability, arg } => {
429 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"RawBorrow {")).expect("unable to write to ThirPrinter");print_indented!(self, "RawBorrow {", depth_lvl);
430 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("mutability: {0:?}",
mutability))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("mutability: {:?}", mutability), depth_lvl + 1);
431 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"arg:")).expect("unable to write to ThirPrinter");print_indented!(self, "arg:", depth_lvl + 1);
432 self.print_expr(*arg, depth_lvl + 2);
433 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
434 }
435 Break { label, value } => {
436 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"Break (")).expect("unable to write to ThirPrinter");print_indented!(self, "Break (", depth_lvl);
437 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("label: {0:?}", label))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("label: {:?}", label), depth_lvl + 1);
438
439 if let Some(value) = value {
440 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"value:")).expect("unable to write to ThirPrinter");print_indented!(self, "value:", depth_lvl + 1);
441 self.print_expr(*value, depth_lvl + 2);
442 }
443
444 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
")")).expect("unable to write to ThirPrinter");print_indented!(self, ")", depth_lvl);
445 }
446 Continue { label } => {
447 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"Continue {")).expect("unable to write to ThirPrinter");print_indented!(self, "Continue {", depth_lvl);
448 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("label: {0:?}", label))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("label: {:?}", label), depth_lvl + 1);
449 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
450 }
451 ConstContinue { label, value } => {
452 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"ConstContinue (")).expect("unable to write to ThirPrinter");print_indented!(self, "ConstContinue (", depth_lvl);
453 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("label: {0:?}", label))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("label: {:?}", label), depth_lvl + 1);
454 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"value:")).expect("unable to write to ThirPrinter");print_indented!(self, "value:", depth_lvl + 1);
455 self.print_expr(*value, depth_lvl + 2);
456 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
")")).expect("unable to write to ThirPrinter");print_indented!(self, ")", depth_lvl);
457 }
458 Return { value } => {
459 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"Return {")).expect("unable to write to ThirPrinter");print_indented!(self, "Return {", depth_lvl);
460 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"value:")).expect("unable to write to ThirPrinter");print_indented!(self, "value:", depth_lvl + 1);
461
462 if let Some(value) = value {
463 self.print_expr(*value, depth_lvl + 2);
464 }
465
466 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
467 }
468 Become { value } => {
469 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"Become {")).expect("unable to write to ThirPrinter");print_indented!(self, "Become {", depth_lvl);
470 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"value:")).expect("unable to write to ThirPrinter");print_indented!(self, "value:", depth_lvl + 1);
471 self.print_expr(*value, depth_lvl + 2);
472 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
473 }
474 ConstBlock { did, args } => {
475 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"ConstBlock {")).expect("unable to write to ThirPrinter");print_indented!(self, "ConstBlock {", depth_lvl);
476 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("did: {0:?}", did))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("did: {:?}", did), depth_lvl + 1);
477 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("args: {0:?}", args))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("args: {:?}", args), depth_lvl + 1);
478 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
479 }
480 Repeat { value, count } => {
481 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"Repeat {")).expect("unable to write to ThirPrinter");print_indented!(self, "Repeat {", depth_lvl);
482 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("count: {0:?}", count))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("count: {:?}", count), depth_lvl + 1);
483 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"value:")).expect("unable to write to ThirPrinter");print_indented!(self, "value:", depth_lvl + 1);
484 self.print_expr(*value, depth_lvl + 2);
485 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
486 }
487 Array { fields } => {
488 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"Array {")).expect("unable to write to ThirPrinter");print_indented!(self, "Array {", depth_lvl);
489 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"fields: [")).expect("unable to write to ThirPrinter");print_indented!(self, "fields: [", depth_lvl + 1);
490 for field_id in fields.iter() {
491 self.print_expr(*field_id, depth_lvl + 2);
492 }
493 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"]")).expect("unable to write to ThirPrinter");print_indented!(self, "]", depth_lvl + 1);
494 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
495 }
496 Tuple { fields } => {
497 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"Tuple {")).expect("unable to write to ThirPrinter");print_indented!(self, "Tuple {", depth_lvl);
498 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"fields: [")).expect("unable to write to ThirPrinter");print_indented!(self, "fields: [", depth_lvl + 1);
499 for field_id in fields.iter() {
500 self.print_expr(*field_id, depth_lvl + 2);
501 }
502 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"]")).expect("unable to write to ThirPrinter");print_indented!(self, "]", depth_lvl + 1);
503 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
504 }
505 Adt(adt_expr) => {
506 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"Adt {")).expect("unable to write to ThirPrinter");print_indented!(self, "Adt {", depth_lvl);
507 self.print_adt_expr(&**adt_expr, depth_lvl + 1);
508 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
509 }
510 PlaceTypeAscription { source, user_ty, user_ty_span } => {
511 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"PlaceTypeAscription {")).expect("unable to write to ThirPrinter");print_indented!(self, "PlaceTypeAscription {", depth_lvl);
512 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("user_ty: {0:?}",
user_ty))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("user_ty: {:?}", user_ty), depth_lvl + 1);
513 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("user_ty_span: {0:?}",
user_ty_span))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("user_ty_span: {:?}", user_ty_span), depth_lvl + 1);
514 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"source:")).expect("unable to write to ThirPrinter");print_indented!(self, "source:", depth_lvl + 1);
515 self.print_expr(*source, depth_lvl + 2);
516 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
517 }
518 ValueTypeAscription { source, user_ty, user_ty_span } => {
519 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"ValueTypeAscription {")).expect("unable to write to ThirPrinter");print_indented!(self, "ValueTypeAscription {", depth_lvl);
520 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("user_ty: {0:?}",
user_ty))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("user_ty: {:?}", user_ty), depth_lvl + 1);
521 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("user_ty_span: {0:?}",
user_ty_span))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("user_ty_span: {:?}", user_ty_span), depth_lvl + 1);
522 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"source:")).expect("unable to write to ThirPrinter");print_indented!(self, "source:", depth_lvl + 1);
523 self.print_expr(*source, depth_lvl + 2);
524 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
525 }
526 PlaceUnwrapUnsafeBinder { source } => {
527 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"PlaceUnwrapUnsafeBinder {")).expect("unable to write to ThirPrinter");print_indented!(self, "PlaceUnwrapUnsafeBinder {", depth_lvl);
528 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"source:")).expect("unable to write to ThirPrinter");print_indented!(self, "source:", depth_lvl + 1);
529 self.print_expr(*source, depth_lvl + 2);
530 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
531 }
532 ValueUnwrapUnsafeBinder { source } => {
533 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"ValueUnwrapUnsafeBinder {")).expect("unable to write to ThirPrinter");print_indented!(self, "ValueUnwrapUnsafeBinder {", depth_lvl);
534 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"source:")).expect("unable to write to ThirPrinter");print_indented!(self, "source:", depth_lvl + 1);
535 self.print_expr(*source, depth_lvl + 2);
536 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
537 }
538 WrapUnsafeBinder { source } => {
539 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"WrapUnsafeBinder {")).expect("unable to write to ThirPrinter");print_indented!(self, "WrapUnsafeBinder {", depth_lvl);
540 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"source:")).expect("unable to write to ThirPrinter");print_indented!(self, "source:", depth_lvl + 1);
541 self.print_expr(*source, depth_lvl + 2);
542 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
543 }
544 Closure(closure_expr) => {
545 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"Closure {")).expect("unable to write to ThirPrinter");print_indented!(self, "Closure {", depth_lvl);
546 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"closure_expr:")).expect("unable to write to ThirPrinter");print_indented!(self, "closure_expr:", depth_lvl + 1);
547 self.print_closure_expr(&**closure_expr, depth_lvl + 2);
548 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
549 }
550 Literal { lit, neg } => {
551 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("Literal( lit: {0:?}, neg: {1:?})\n",
lit, neg))
}))).expect("unable to write to ThirPrinter");print_indented!(
552 self,
553 format!("Literal( lit: {:?}, neg: {:?})\n", lit, neg),
554 depth_lvl
555 );
556 }
557 NonHirLiteral { lit, user_ty } => {
558 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"NonHirLiteral {")).expect("unable to write to ThirPrinter");print_indented!(self, "NonHirLiteral {", depth_lvl);
559 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("lit: {0:?}", lit))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("lit: {:?}", lit), depth_lvl + 1);
560 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("user_ty: {0:?}",
user_ty))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("user_ty: {:?}", user_ty), depth_lvl + 1);
561 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
562 }
563 ZstLiteral { user_ty } => {
564 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("ZstLiteral(user_ty: {0:?})",
user_ty))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("ZstLiteral(user_ty: {:?})", user_ty), depth_lvl);
565 }
566 NamedConst { def_id, args, user_ty } => {
567 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"NamedConst {")).expect("unable to write to ThirPrinter");print_indented!(self, "NamedConst {", depth_lvl);
568 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("def_id: {0:?}", def_id))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("def_id: {:?}", def_id), depth_lvl + 1);
569 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("user_ty: {0:?}",
user_ty))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("user_ty: {:?}", user_ty), depth_lvl + 1);
570 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("args: {0:?}", args))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("args: {:?}", args), depth_lvl + 1);
571 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
572 }
573 ConstParam { param, def_id } => {
574 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"ConstParam {")).expect("unable to write to ThirPrinter");print_indented!(self, "ConstParam {", depth_lvl);
575 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("def_id: {0:?}", def_id))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("def_id: {:?}", def_id), depth_lvl + 1);
576 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("param: {0:?}", param))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("param: {:?}", param), depth_lvl + 1);
577 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
578 }
579 StaticRef { alloc_id, ty, def_id } => {
580 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"StaticRef {")).expect("unable to write to ThirPrinter");print_indented!(self, "StaticRef {", depth_lvl);
581 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("def_id: {0:?}", def_id))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("def_id: {:?}", def_id), depth_lvl + 1);
582 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("ty: {0:?}", ty))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("ty: {:?}", ty), depth_lvl + 1);
583 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("alloc_id: {0:?}",
alloc_id))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("alloc_id: {:?}", alloc_id), depth_lvl + 1);
584 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
585 }
586 InlineAsm(expr) => {
587 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"InlineAsm {")).expect("unable to write to ThirPrinter");print_indented!(self, "InlineAsm {", depth_lvl);
588 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"expr:")).expect("unable to write to ThirPrinter");print_indented!(self, "expr:", depth_lvl + 1);
589 self.print_inline_asm_expr(&**expr, depth_lvl + 2);
590 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
591 }
592 ThreadLocalRef(def_id) => {
593 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"ThreadLocalRef {")).expect("unable to write to ThirPrinter");print_indented!(self, "ThreadLocalRef {", depth_lvl);
594 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("def_id: {0:?}", def_id))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("def_id: {:?}", def_id), depth_lvl + 1);
595 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
596 }
597 Yield { value } => {
598 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"Yield {")).expect("unable to write to ThirPrinter");print_indented!(self, "Yield {", depth_lvl);
599 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"value:")).expect("unable to write to ThirPrinter");print_indented!(self, "value:", depth_lvl + 1);
600 self.print_expr(*value, depth_lvl + 2);
601 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
602 }
603 }
604 }
605
606 fn print_adt_expr(&mut self, adt_expr: &AdtExpr<'tcx>, depth_lvl: usize) {
607 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"adt_def:")).expect("unable to write to ThirPrinter");print_indented!(self, "adt_def:", depth_lvl);
608 self.print_adt_def(adt_expr.adt_def, depth_lvl + 1);
609 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("variant_index: {0:?}",
adt_expr.variant_index))
}))).expect("unable to write to ThirPrinter");print_indented!(
610 self,
611 format!("variant_index: {:?}", adt_expr.variant_index),
612 depth_lvl + 1
613 );
614 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("args: {0:?}",
adt_expr.args))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("args: {:?}", adt_expr.args), depth_lvl + 1);
615 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("user_ty: {0:?}",
adt_expr.user_ty))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("user_ty: {:?}", adt_expr.user_ty), depth_lvl + 1);
616
617 for field_expr in adt_expr.fields.iter() {
618 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("field {0}:",
field_expr.name.as_u32()))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("field {}:", field_expr.name.as_u32()), depth_lvl + 1);
619 self.print_expr(field_expr.expr, depth_lvl + 2);
620 }
621
622 match adt_expr.base {
623 AdtExprBase::Base(ref base) => {
624 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"base:")).expect("unable to write to ThirPrinter");print_indented!(self, "base:", depth_lvl + 1);
625 self.print_fru_info(base, depth_lvl + 2);
626 }
627 AdtExprBase::DefaultFields(_) => {
628 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"base: {{ defaulted fields }}")).expect("unable to write to ThirPrinter");print_indented!(self, "base: {{ defaulted fields }}", depth_lvl + 1);
629 }
630 AdtExprBase::None => {
631 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"base: None")).expect("unable to write to ThirPrinter");print_indented!(self, "base: None", depth_lvl + 1);
632 }
633 }
634 }
635
636 fn print_adt_def(&mut self, adt_def: ty::AdtDef<'tcx>, depth_lvl: usize) {
637 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"AdtDef {")).expect("unable to write to ThirPrinter");print_indented!(self, "AdtDef {", depth_lvl);
638 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("did: {0:?}",
adt_def.did()))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("did: {:?}", adt_def.did()), depth_lvl + 1);
639 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("variants: {0:?}",
adt_def.variants()))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("variants: {:?}", adt_def.variants()), depth_lvl + 1);
640 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("flags: {0:?}",
adt_def.flags()))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("flags: {:?}", adt_def.flags()), depth_lvl + 1);
641 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("repr: {0:?}",
adt_def.repr()))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("repr: {:?}", adt_def.repr()), depth_lvl + 1);
642 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
643 }
644
645 fn print_fru_info(&mut self, fru_info: &FruInfo<'tcx>, depth_lvl: usize) {
646 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"FruInfo {")).expect("unable to write to ThirPrinter");print_indented!(self, "FruInfo {", depth_lvl);
647 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"base: ")).expect("unable to write to ThirPrinter");print_indented!(self, "base: ", depth_lvl + 1);
648 self.print_expr(fru_info.base, depth_lvl + 2);
649 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"field_types: [")).expect("unable to write to ThirPrinter");print_indented!(self, "field_types: [", depth_lvl + 1);
650 for ty in fru_info.field_types.iter() {
651 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("ty: {0:?}", ty))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("ty: {:?}", ty), depth_lvl + 2);
652 }
653 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"]")).expect("unable to write to ThirPrinter");print_indented!(self, "]", depth_lvl + 1);
654 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
655 }
656
657 fn print_arm(&mut self, arm_id: ArmId, depth_lvl: usize) {
658 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"Arm {")).expect("unable to write to ThirPrinter");print_indented!(self, "Arm {", depth_lvl);
659
660 let arm = &self.thir.arms[arm_id];
661 let Arm { pattern, guard, body, hir_id, scope, span } = arm;
662
663 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"pattern: ")).expect("unable to write to ThirPrinter");print_indented!(self, "pattern: ", depth_lvl + 1);
664 self.print_pat(pattern, depth_lvl + 2);
665
666 if let Some(guard) = *guard {
667 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"guard: ")).expect("unable to write to ThirPrinter");print_indented!(self, "guard: ", depth_lvl + 1);
668 self.print_expr(guard, depth_lvl + 2);
669 } else {
670 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"guard: None")).expect("unable to write to ThirPrinter");print_indented!(self, "guard: None", depth_lvl + 1);
671 }
672
673 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"body: ")).expect("unable to write to ThirPrinter");print_indented!(self, "body: ", depth_lvl + 1);
674 self.print_expr(*body, depth_lvl + 2);
675 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("hir_id: {0:?}", hir_id))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("hir_id: {:?}", hir_id), depth_lvl + 1);
676 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("scope: {0:?}", scope))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("scope: {:?}", scope), depth_lvl + 1);
677 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("span: {0:?}", span))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("span: {:?}", span), depth_lvl + 1);
678 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
679 }
680
681 fn print_pat(&mut self, pat: &Pat<'tcx>, depth_lvl: usize) {
682 let &Pat { ty, span, ref kind, ref extra } = pat;
683
684 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"Pat {")).expect("unable to write to ThirPrinter");print_indented!(self, "Pat {", depth_lvl);
685 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("ty: {0:?}", ty))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("ty: {:?}", ty), depth_lvl + 1);
686 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("span: {0:?}", span))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("span: {:?}", span), depth_lvl + 1);
687 self.print_pat_extra(extra.as_deref(), depth_lvl + 1);
688 self.print_pat_kind(kind, depth_lvl + 1);
689 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
690 }
691
692 fn print_pat_extra(&mut self, extra: Option<&PatExtra<'tcx>>, depth_lvl: usize) {
693 let Some(extra) = extra else {
694 return;
696 };
697
698 let PatExtra { expanded_const, ascriptions } = extra;
699
700 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"extra: PatExtra {")).expect("unable to write to ThirPrinter");print_indented!(self, "extra: PatExtra {", depth_lvl);
701 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
format_args!("expanded_const: {0:?}",
expanded_const))).expect("unable to write to ThirPrinter");print_indented!(self, format_args!("expanded_const: {expanded_const:?}"), depth_lvl + 1);
702 self.print_list(
703 "ascriptions",
704 ascriptions,
705 depth_lvl + 1,
706 |this, ascription, depth_lvl| {
707 this.indent(depth_lvl);
this.write_fmt(format_args!("{0}\n",
format_args!("{0:?}",
ascription))).expect("unable to write to ThirPrinter");print_indented!(this, format_args!("{ascription:?}"), depth_lvl);
708 },
709 );
710 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
711 }
712
713 fn print_pat_kind(&mut self, pat_kind: &PatKind<'tcx>, depth_lvl: usize) {
714 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"kind: PatKind {")).expect("unable to write to ThirPrinter");print_indented!(self, "kind: PatKind {", depth_lvl);
715
716 match pat_kind {
717 PatKind::Missing => {
718 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"Missing")).expect("unable to write to ThirPrinter");print_indented!(self, "Missing", depth_lvl + 1);
719 }
720 PatKind::Wild => {
721 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"Wild")).expect("unable to write to ThirPrinter");print_indented!(self, "Wild", depth_lvl + 1);
722 }
723 PatKind::Never => {
724 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"Never")).expect("unable to write to ThirPrinter");print_indented!(self, "Never", depth_lvl + 1);
725 }
726 PatKind::Binding { name, mode, var, ty, subpattern, is_primary, is_shorthand } => {
727 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"Binding {")).expect("unable to write to ThirPrinter");print_indented!(self, "Binding {", depth_lvl + 1);
728 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("name: {0:?}", name))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("name: {:?}", name), depth_lvl + 2);
729 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("mode: {0:?}", mode))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("mode: {:?}", mode), depth_lvl + 2);
730 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("var: {0:?}", var))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("var: {:?}", var), depth_lvl + 2);
731 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("ty: {0:?}", ty))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("ty: {:?}", ty), depth_lvl + 2);
732 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("is_primary: {0:?}",
is_primary))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("is_primary: {:?}", is_primary), depth_lvl + 2);
733 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("is_shorthand: {0:?}",
is_shorthand))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("is_shorthand: {:?}", is_shorthand), depth_lvl + 2);
734
735 if let Some(subpattern) = subpattern {
736 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
"subpattern: Some( ")).expect("unable to write to ThirPrinter");print_indented!(self, "subpattern: Some( ", depth_lvl + 2);
737 self.print_pat(subpattern, depth_lvl + 3);
738 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
")")).expect("unable to write to ThirPrinter");print_indented!(self, ")", depth_lvl + 2);
739 } else {
740 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
"subpattern: None")).expect("unable to write to ThirPrinter");print_indented!(self, "subpattern: None", depth_lvl + 2);
741 }
742
743 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl + 1);
744 }
745 PatKind::Variant { adt_def, args, variant_index, subpatterns } => {
746 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"Variant {")).expect("unable to write to ThirPrinter");print_indented!(self, "Variant {", depth_lvl + 1);
747 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
"adt_def: ")).expect("unable to write to ThirPrinter");print_indented!(self, "adt_def: ", depth_lvl + 2);
748 self.print_adt_def(*adt_def, depth_lvl + 3);
749 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("args: {0:?}", args))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("args: {:?}", args), depth_lvl + 2);
750 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("variant_index: {0:?}",
variant_index))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("variant_index: {:?}", variant_index), depth_lvl + 2);
751
752 if subpatterns.len() > 0 {
753 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
"subpatterns: [")).expect("unable to write to ThirPrinter");print_indented!(self, "subpatterns: [", depth_lvl + 2);
754 for field_pat in subpatterns.iter() {
755 self.print_pat(&field_pat.pattern, depth_lvl + 3);
756 }
757 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
"]")).expect("unable to write to ThirPrinter");print_indented!(self, "]", depth_lvl + 2);
758 } else {
759 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
"subpatterns: []")).expect("unable to write to ThirPrinter");print_indented!(self, "subpatterns: []", depth_lvl + 2);
760 }
761
762 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl + 1);
763 }
764 PatKind::Leaf { subpatterns } => {
765 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"Leaf { ")).expect("unable to write to ThirPrinter");print_indented!(self, "Leaf { ", depth_lvl + 1);
766 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
"subpatterns: [")).expect("unable to write to ThirPrinter");print_indented!(self, "subpatterns: [", depth_lvl + 2);
767 for field_pat in subpatterns.iter() {
768 self.print_pat(&field_pat.pattern, depth_lvl + 3);
769 }
770 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
"]")).expect("unable to write to ThirPrinter");print_indented!(self, "]", depth_lvl + 2);
771 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl + 1);
772 }
773 PatKind::Deref { pin, subpattern } => {
774 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"Deref { ")).expect("unable to write to ThirPrinter");print_indented!(self, "Deref { ", depth_lvl + 1);
775 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
format_args!("pin: {0:?}",
pin))).expect("unable to write to ThirPrinter");print_indented!(self, format_args!("pin: {pin:?}"), depth_lvl + 2);
776 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
"subpattern:")).expect("unable to write to ThirPrinter");print_indented!(self, "subpattern:", depth_lvl + 2);
777 self.print_pat(subpattern, depth_lvl + 2);
778 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl + 1);
779 }
780 PatKind::DerefPattern { subpattern, .. } => {
781 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"DerefPattern { ")).expect("unable to write to ThirPrinter");print_indented!(self, "DerefPattern { ", depth_lvl + 1);
782 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
"subpattern:")).expect("unable to write to ThirPrinter");print_indented!(self, "subpattern:", depth_lvl + 2);
783 self.print_pat(subpattern, depth_lvl + 2);
784 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl + 1);
785 }
786 PatKind::Constant { value } => {
787 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"Constant {")).expect("unable to write to ThirPrinter");print_indented!(self, "Constant {", depth_lvl + 1);
788 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("value: {0}", value))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("value: {}", value), depth_lvl + 2);
789 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl + 1);
790 }
791 PatKind::Range(pat_range) => {
792 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("Range ( {0:?} )",
pat_range))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("Range ( {:?} )", pat_range), depth_lvl + 1);
793 }
794 PatKind::Slice { prefix, slice, suffix } => {
795 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"Slice {")).expect("unable to write to ThirPrinter");print_indented!(self, "Slice {", depth_lvl + 1);
796
797 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
"prefix: [")).expect("unable to write to ThirPrinter");print_indented!(self, "prefix: [", depth_lvl + 2);
798 for prefix_pat in prefix.iter() {
799 self.print_pat(prefix_pat, depth_lvl + 3);
800 }
801 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
"]")).expect("unable to write to ThirPrinter");print_indented!(self, "]", depth_lvl + 2);
802
803 if let Some(slice) = slice {
804 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
"slice: ")).expect("unable to write to ThirPrinter");print_indented!(self, "slice: ", depth_lvl + 2);
805 self.print_pat(slice, depth_lvl + 3);
806 }
807
808 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
"suffix: [")).expect("unable to write to ThirPrinter");print_indented!(self, "suffix: [", depth_lvl + 2);
809 for suffix_pat in suffix.iter() {
810 self.print_pat(suffix_pat, depth_lvl + 3);
811 }
812 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
"]")).expect("unable to write to ThirPrinter");print_indented!(self, "]", depth_lvl + 2);
813
814 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl + 1);
815 }
816 PatKind::Array { prefix, slice, suffix } => {
817 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"Array {")).expect("unable to write to ThirPrinter");print_indented!(self, "Array {", depth_lvl + 1);
818
819 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
"prefix: [")).expect("unable to write to ThirPrinter");print_indented!(self, "prefix: [", depth_lvl + 2);
820 for prefix_pat in prefix.iter() {
821 self.print_pat(prefix_pat, depth_lvl + 3);
822 }
823 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
"]")).expect("unable to write to ThirPrinter");print_indented!(self, "]", depth_lvl + 2);
824
825 if let Some(slice) = slice {
826 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
"slice: ")).expect("unable to write to ThirPrinter");print_indented!(self, "slice: ", depth_lvl + 2);
827 self.print_pat(slice, depth_lvl + 3);
828 }
829
830 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
"suffix: [")).expect("unable to write to ThirPrinter");print_indented!(self, "suffix: [", depth_lvl + 2);
831 for suffix_pat in suffix.iter() {
832 self.print_pat(suffix_pat, depth_lvl + 3);
833 }
834 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
"]")).expect("unable to write to ThirPrinter");print_indented!(self, "]", depth_lvl + 2);
835
836 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl + 1);
837 }
838 PatKind::Or { pats } => {
839 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"Or {")).expect("unable to write to ThirPrinter");print_indented!(self, "Or {", depth_lvl + 1);
840 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
"pats: [")).expect("unable to write to ThirPrinter");print_indented!(self, "pats: [", depth_lvl + 2);
841 for pat in pats.iter() {
842 self.print_pat(pat, depth_lvl + 3);
843 }
844 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
"]")).expect("unable to write to ThirPrinter");print_indented!(self, "]", depth_lvl + 2);
845 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl + 1);
846 }
847 PatKind::Error(_) => {
848 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"Error")).expect("unable to write to ThirPrinter");print_indented!(self, "Error", depth_lvl + 1);
849 }
850 }
851
852 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
853 }
854
855 fn print_closure_expr(&mut self, expr: &ClosureExpr<'tcx>, depth_lvl: usize) {
856 let ClosureExpr { closure_id, args, upvars, movability, fake_reads } = expr;
857
858 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"ClosureExpr {")).expect("unable to write to ThirPrinter");print_indented!(self, "ClosureExpr {", depth_lvl);
859 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("closure_id: {0:?}",
closure_id))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("closure_id: {:?}", closure_id), depth_lvl + 1);
860 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("args: {0:?}", args))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("args: {:?}", args), depth_lvl + 1);
861
862 if upvars.len() > 0 {
863 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"upvars: [")).expect("unable to write to ThirPrinter");print_indented!(self, "upvars: [", depth_lvl + 1);
864 for upvar in upvars.iter() {
865 self.print_expr(*upvar, depth_lvl + 2);
866 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
",")).expect("unable to write to ThirPrinter");print_indented!(self, ",", depth_lvl + 1);
867 }
868 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"]")).expect("unable to write to ThirPrinter");print_indented!(self, "]", depth_lvl + 1);
869 } else {
870 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"upvars: []")).expect("unable to write to ThirPrinter");print_indented!(self, "upvars: []", depth_lvl + 1);
871 }
872
873 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("movability: {0:?}",
movability))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("movability: {:?}", movability), depth_lvl + 1);
874
875 if fake_reads.len() > 0 {
876 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"fake_reads: [")).expect("unable to write to ThirPrinter");print_indented!(self, "fake_reads: [", depth_lvl + 1);
877 for (fake_read_expr, cause, hir_id) in fake_reads.iter() {
878 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
"(")).expect("unable to write to ThirPrinter");print_indented!(self, "(", depth_lvl + 2);
879 self.print_expr(*fake_read_expr, depth_lvl + 3);
880 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
",")).expect("unable to write to ThirPrinter");print_indented!(self, ",", depth_lvl + 2);
881 self.indent(depth_lvl + 3);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("cause: {0:?}", cause))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("cause: {:?}", cause), depth_lvl + 3);
882 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
",")).expect("unable to write to ThirPrinter");print_indented!(self, ",", depth_lvl + 2);
883 self.indent(depth_lvl + 3);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("hir_id: {0:?}", hir_id))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("hir_id: {:?}", hir_id), depth_lvl + 3);
884 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
"),")).expect("unable to write to ThirPrinter");print_indented!(self, "),", depth_lvl + 2);
885 }
886 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"]")).expect("unable to write to ThirPrinter");print_indented!(self, "]", depth_lvl + 1);
887 } else {
888 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"fake_reads: []")).expect("unable to write to ThirPrinter");print_indented!(self, "fake_reads: []", depth_lvl + 1);
889 }
890
891 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
892 }
893
894 fn print_inline_asm_expr(&mut self, expr: &InlineAsmExpr<'tcx>, depth_lvl: usize) {
895 let InlineAsmExpr { asm_macro, template, operands, options, line_spans } = expr;
896
897 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"InlineAsmExpr {")).expect("unable to write to ThirPrinter");print_indented!(self, "InlineAsmExpr {", depth_lvl);
898
899 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("asm_macro: {0:?}",
asm_macro))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("asm_macro: {:?}", asm_macro), depth_lvl + 1);
900
901 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"template: [")).expect("unable to write to ThirPrinter");print_indented!(self, "template: [", depth_lvl + 1);
902 for template_piece in template.iter() {
903 self.indent(depth_lvl + 2);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("{0:?}", template_piece))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("{:?}", template_piece), depth_lvl + 2);
904 }
905 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"]")).expect("unable to write to ThirPrinter");print_indented!(self, "]", depth_lvl + 1);
906
907 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"operands: [")).expect("unable to write to ThirPrinter");print_indented!(self, "operands: [", depth_lvl + 1);
908 for operand in operands.iter() {
909 self.print_inline_operand(operand, depth_lvl + 2);
910 }
911 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"]")).expect("unable to write to ThirPrinter");print_indented!(self, "]", depth_lvl + 1);
912
913 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("options: {0:?}",
options))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("options: {:?}", options), depth_lvl + 1);
914 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("line_spans: {0:?}",
line_spans))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("line_spans: {:?}", line_spans), depth_lvl + 1);
915
916 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl);
917 }
918
919 fn print_inline_operand(&mut self, operand: &InlineAsmOperand<'tcx>, depth_lvl: usize) {
920 match operand {
921 InlineAsmOperand::In { reg, expr } => {
922 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"InlineAsmOperand::In {")).expect("unable to write to ThirPrinter");print_indented!(self, "InlineAsmOperand::In {", depth_lvl);
923 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("reg: {0:?}", reg))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("reg: {:?}", reg), depth_lvl + 1);
924 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"expr: ")).expect("unable to write to ThirPrinter");print_indented!(self, "expr: ", depth_lvl + 1);
925 self.print_expr(*expr, depth_lvl + 2);
926 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl + 1);
927 }
928 InlineAsmOperand::Out { reg, late, expr } => {
929 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"InlineAsmOperand::Out {")).expect("unable to write to ThirPrinter");print_indented!(self, "InlineAsmOperand::Out {", depth_lvl);
930 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("reg: {0:?}", reg))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("reg: {:?}", reg), depth_lvl + 1);
931 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("late: {0:?}", late))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("late: {:?}", late), depth_lvl + 1);
932
933 if let Some(out) = expr {
934 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"place: Some( ")).expect("unable to write to ThirPrinter");print_indented!(self, "place: Some( ", depth_lvl + 1);
935 self.print_expr(*out, depth_lvl + 2);
936 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
")")).expect("unable to write to ThirPrinter");print_indented!(self, ")", depth_lvl + 1);
937 } else {
938 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"place: None")).expect("unable to write to ThirPrinter");print_indented!(self, "place: None", depth_lvl + 1);
939 }
940 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl + 1);
941 }
942 InlineAsmOperand::InOut { reg, late, expr } => {
943 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"InlineAsmOperand::InOut {")).expect("unable to write to ThirPrinter");print_indented!(self, "InlineAsmOperand::InOut {", depth_lvl);
944 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("reg: {0:?}", reg))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("reg: {:?}", reg), depth_lvl + 1);
945 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("late: {0:?}", late))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("late: {:?}", late), depth_lvl + 1);
946 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"expr: ")).expect("unable to write to ThirPrinter");print_indented!(self, "expr: ", depth_lvl + 1);
947 self.print_expr(*expr, depth_lvl + 2);
948 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl + 1);
949 }
950 InlineAsmOperand::SplitInOut { reg, late, in_expr, out_expr } => {
951 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"InlineAsmOperand::SplitInOut {")).expect("unable to write to ThirPrinter");print_indented!(self, "InlineAsmOperand::SplitInOut {", depth_lvl);
952 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("reg: {0:?}", reg))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("reg: {:?}", reg), depth_lvl + 1);
953 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("late: {0:?}", late))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("late: {:?}", late), depth_lvl + 1);
954 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"in_expr: ")).expect("unable to write to ThirPrinter");print_indented!(self, "in_expr: ", depth_lvl + 1);
955 self.print_expr(*in_expr, depth_lvl + 2);
956
957 if let Some(out_expr) = out_expr {
958 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"out_expr: Some( ")).expect("unable to write to ThirPrinter");print_indented!(self, "out_expr: Some( ", depth_lvl + 1);
959 self.print_expr(*out_expr, depth_lvl + 2);
960 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
")")).expect("unable to write to ThirPrinter");print_indented!(self, ")", depth_lvl + 1);
961 } else {
962 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"out_expr: None")).expect("unable to write to ThirPrinter");print_indented!(self, "out_expr: None", depth_lvl + 1);
963 }
964
965 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl + 1);
966 }
967 InlineAsmOperand::Const { value, span } => {
968 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"InlineAsmOperand::Const {")).expect("unable to write to ThirPrinter");print_indented!(self, "InlineAsmOperand::Const {", depth_lvl);
969 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("value: {0:?}", value))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("value: {:?}", value), depth_lvl + 1);
970 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("span: {0:?}", span))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("span: {:?}", span), depth_lvl + 1);
971 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl + 1);
972 }
973 InlineAsmOperand::SymFn { value } => {
974 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"InlineAsmOperand::SymFn {")).expect("unable to write to ThirPrinter");print_indented!(self, "InlineAsmOperand::SymFn {", depth_lvl);
975 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"value: ")).expect("unable to write to ThirPrinter");print_indented!(self, "value: ", depth_lvl + 1);
976 self.print_expr(*value, depth_lvl + 2);
977 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl + 1);
978 }
979 InlineAsmOperand::SymStatic { def_id } => {
980 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"InlineAsmOperand::SymStatic {")).expect("unable to write to ThirPrinter");print_indented!(self, "InlineAsmOperand::SymStatic {", depth_lvl);
981 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("def_id: {0:?}", def_id))
}))).expect("unable to write to ThirPrinter");print_indented!(self, format!("def_id: {:?}", def_id), depth_lvl + 1);
982 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl + 1);
983 }
984 InlineAsmOperand::Label { block } => {
985 self.indent(depth_lvl);
self.write_fmt(format_args!("{0}\n",
"InlineAsmOperand::Block {")).expect("unable to write to ThirPrinter");print_indented!(self, "InlineAsmOperand::Block {", depth_lvl);
986 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"block:")).expect("unable to write to ThirPrinter");print_indented!(self, "block:", depth_lvl + 1);
987 self.print_block(*block, depth_lvl + 2);
988 self.indent(depth_lvl + 1);
self.write_fmt(format_args!("{0}\n",
"}")).expect("unable to write to ThirPrinter");print_indented!(self, "}", depth_lvl + 1);
989 }
990 }
991 }
992}