Skip to content

Commit dc78b1c

Browse files
committed
update test, compress push_str misc fixes
1 parent cb192af commit dc78b1c

File tree

5 files changed

+95
-275
lines changed

5 files changed

+95
-275
lines changed

compiler/rustc_smir/src/rustc_smir/context.rs

+4-3
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
//! This trait is currently the main interface between the Rust compiler,
44
//! and the `stable_mir` crate.
55
6-
use crate::rustc_smir::stable_mir::opaque;
6+
use rustc_middle::ty;
77
use rustc_middle::ty::print::{with_forced_trimmed_paths, with_no_trimmed_paths};
88
use rustc_middle::ty::{
99
GenericPredicates, Instance, ParamEnv, ScalarInt, TypeVisitableExt, ValTree,
@@ -18,8 +18,9 @@ use stable_mir::ty::{
1818
AdtDef, AdtKind, Allocation, ClosureDef, ClosureKind, Const, FieldDef, FnDef, GenericArgs,
1919
LineInfo, PolyFnSig, RigidTy, Span, Ty, TyKind, VariantDef,
2020
};
21-
use stable_mir::Opaque;
22-
use stable_mir::{self, Crate, CrateItem, Error, Filename, ItemKind, Symbol};
21+
use stable_mir::{
22+
self, opaque, Crate, CrateItem, DefId, Error, Filename, ItemKind, Opaque, Symbol,
23+
};
2324
use std::cell::RefCell;
2425

2526
use crate::rustc_internal::{internal, RustcInternal};

compiler/stable_mir/src/mir/pretty.rs

+42-65
Original file line numberDiff line numberDiff line change
@@ -12,35 +12,36 @@ use super::BorrowKind;
1212
pub fn function_name(item: CrateItem) -> String {
1313
let mut pretty_name = String::new();
1414
let body = item.body();
15-
pretty_name.push_str("fn ");
16-
pretty_name.push_str(item.name().as_str());
15+
pretty_name.push_str(format!("fn {}", item.name()).as_str());
1716
if body.arg_locals().is_empty() {
1817
pretty_name.push_str("()");
1918
} else {
2019
pretty_name.push_str("(");
2120
}
2221
body.arg_locals().iter().enumerate().for_each(|(index, local)| {
23-
pretty_name.push_str(format!("_{}: ", index).as_str());
24-
pretty_name.push_str(&pretty_ty(local.ty.kind()));
22+
pretty_name.push_str(format!("_{}: {}", index, pretty_ty(local.ty.kind())).as_str());
2523
});
2624
if !body.arg_locals().is_empty() {
2725
pretty_name.push_str(")");
2826
}
2927
let return_local = body.ret_local();
30-
pretty_name.push_str(" -> ");
31-
pretty_name.push_str(&pretty_ty(return_local.ty.kind()));
32-
pretty_name.push_str(" {");
28+
pretty_name.push_str(format!(" -> {} {{", pretty_ty(return_local.ty.kind())).as_str());
3329
pretty_name
3430
}
3531

3632
pub fn function_body(body: &Body) -> String {
3733
let mut pretty_body = String::new();
3834
body.inner_locals().iter().enumerate().for_each(|(index, local)| {
3935
pretty_body.push_str(" ");
40-
pretty_body.push_str(format!("let {}", ret_mutability(&local.mutability)).as_str());
41-
pretty_body.push_str(format!("_{}: ", index).as_str());
42-
pretty_body.push_str(format!("{}", pretty_ty(local.ty.kind())).as_str());
43-
pretty_body.push_str(";\n");
36+
pretty_body.push_str(
37+
format!(
38+
"let {}_{}: {};\n",
39+
ret_mutability(&local.mutability),
40+
index,
41+
pretty_ty(local.ty.kind())
42+
)
43+
.as_str(),
44+
);
4445
});
4546
pretty_body
4647
}
@@ -56,8 +57,7 @@ pub fn pretty_statement(statement: &StatementKind) -> String {
5657
let mut pretty = String::new();
5758
match statement {
5859
StatementKind::Assign(place, rval) => {
59-
pretty.push_str(format!(" _{} = ", place.local).as_str());
60-
pretty.push_str(format!("{}", &pretty_rvalue(rval)).as_str());
60+
pretty.push_str(format!(" _{} = {}", place.local, pretty_rvalue(rval)).as_str());
6161
}
6262
// FIXME: Add rest of the statements
6363
StatementKind::FakeRead(_, _) => {
@@ -117,7 +117,7 @@ pub fn pretty_terminator<W: io::Write>(terminator: &TerminatorKind, w: &mut W) -
117117
Ok(())
118118
}
119119
(1, false) => {
120-
write!(w, " -> {:?}", successors[0])?;
120+
write!(w, " -> bb{:?}", successors[0])?;
121121
Ok(())
122122
}
123123
_ => {
@@ -154,9 +154,7 @@ pub fn pretty_terminator_head(terminator: &TerminatorKind) -> String {
154154
Drop { place, .. } => format!(" drop(_{:?})", place.local),
155155
Call { func, args, destination, .. } => {
156156
pretty.push_str(" ");
157-
pretty.push_str(format!("_{} = ", destination.local).as_str());
158-
pretty.push_str(&pretty_operand(func));
159-
pretty.push_str("(");
157+
pretty.push_str(format!("_{} = {}(", destination.local, pretty_operand(func)).as_str());
160158
args.iter().enumerate().for_each(|(i, arg)| {
161159
if i > 0 {
162160
pretty.push_str(", ");
@@ -171,9 +169,9 @@ pub fn pretty_terminator_head(terminator: &TerminatorKind) -> String {
171169
if !expected {
172170
pretty.push_str("!");
173171
}
174-
pretty.push_str(format!("{} bool),", &pretty_operand(cond)).as_str());
175-
pretty.push_str(&pretty_assert_message(msg));
176-
pretty.push_str(")");
172+
pretty.push_str(
173+
format!("{} bool),{})", &pretty_operand(cond), pretty_assert_message(msg)).as_str(),
174+
);
177175
pretty
178176
}
179177
InlineAsm { .. } => todo!(),
@@ -297,16 +295,14 @@ pub fn pretty_operand(operand: &Operand) -> String {
297295
let mut pretty = String::new();
298296
match operand {
299297
Operand::Copy(copy) => {
300-
pretty.push_str("");
301-
pretty.push_str(format!("{}", copy.local).as_str());
298+
pretty.push_str(format!("_{}", copy.local).as_str());
302299
}
303300
Operand::Move(mv) => {
304-
pretty.push_str("move ");
305-
pretty.push_str(format!("_{}", mv.local).as_str());
301+
pretty.push_str(format!("move _{}", mv.local).as_str());
306302
}
307303
Operand::Constant(cnst) => {
308-
pretty.push_str("const ");
309-
pretty.push_str(with(|cx| cx.const_literal(&cnst.literal)).as_str());
304+
pretty
305+
.push_str(format!("const {}", with(|cx| cx.const_literal(&cnst.literal))).as_str());
310306
}
311307
}
312308
pretty
@@ -316,14 +312,11 @@ pub fn pretty_rvalue(rval: &Rvalue) -> String {
316312
let mut pretty = String::new();
317313
match rval {
318314
Rvalue::AddressOf(muta, addr) => {
319-
pretty.push_str("&raw ");
320-
pretty.push_str(&ret_mutability(muta));
321-
pretty.push_str(format!("(*_{})", addr.local).as_str());
315+
pretty.push_str(format!("&raw {}(*_{})", &ret_mutability(muta), addr.local).as_str());
322316
}
323317
Rvalue::Aggregate(aggregatekind, operands) => {
324318
// FIXME: Add pretty_aggregate function that returns a pretty string
325-
pretty.push_str(format!("{:#?}", aggregatekind).as_str());
326-
pretty.push_str("(");
319+
pretty.push_str(format!("{:#?} (", aggregatekind).as_str());
327320
operands.iter().enumerate().for_each(|(i, op)| {
328321
pretty.push_str(&pretty_operand(op));
329322
if i != operands.len() - 1 {
@@ -333,37 +326,27 @@ pub fn pretty_rvalue(rval: &Rvalue) -> String {
333326
pretty.push_str(")");
334327
}
335328
Rvalue::BinaryOp(bin, op1, op2) => {
336-
pretty.push_str(format!("{:#?}", bin).as_str());
337-
pretty.push_str("(");
338-
pretty.push_str(format!("_{}", &pretty_operand(op1)).as_str());
339-
pretty.push_str(", ");
340-
pretty.push_str(format!("{}", &pretty_operand(op2)).as_str());
341-
pretty.push_str(")");
329+
pretty.push_str(
330+
format!("{:#?}({}, {})", bin, &pretty_operand(op1), pretty_operand(op2)).as_str(),
331+
);
342332
}
343333
Rvalue::Cast(_, op, ty) => {
344-
pretty.push_str(&pretty_operand(op));
345-
pretty.push_str(" as ");
346-
pretty.push_str(&pretty_ty(ty.kind()));
334+
pretty.push_str(format!("{} as {}", pretty_operand(op), pretty_ty(ty.kind())).as_str());
347335
}
348336
Rvalue::CheckedBinaryOp(bin, op1, op2) => {
349-
pretty.push_str(format!("Checked{:#?}", bin).as_str());
350-
pretty.push_str("(");
351-
pretty.push_str(format!("_{}", &pretty_operand(op1)).as_str());
352-
pretty.push_str(", ");
353-
pretty.push_str(format!("{}", &pretty_operand(op2)).as_str());
354-
pretty.push_str(")");
337+
pretty.push_str(
338+
format!("Checked{:#?}({}, {})", bin, &pretty_operand(op1), pretty_operand(op2))
339+
.as_str(),
340+
);
355341
}
356342
Rvalue::CopyForDeref(deref) => {
357-
pretty.push_str("CopyForDeref");
358-
pretty.push_str(format!("{}", deref.local).as_str());
343+
pretty.push_str(format!("CopyForDeref{}", deref.local).as_str());
359344
}
360345
Rvalue::Discriminant(place) => {
361-
pretty.push_str("discriminant");
362-
pretty.push_str(format!("{}", place.local).as_str());
346+
pretty.push_str(format!("discriminant{}", place.local).as_str());
363347
}
364348
Rvalue::Len(len) => {
365-
pretty.push_str("len");
366-
pretty.push_str(format!("{}", len.local).as_str());
349+
pretty.push_str(format!("len{}", len.local).as_str());
367350
}
368351
Rvalue::Ref(_, borrowkind, place) => {
369352
match borrowkind {
@@ -374,24 +357,19 @@ pub fn pretty_rvalue(rval: &Rvalue) -> String {
374357
pretty.push_str(format!("{}", place.local).as_str());
375358
}
376359
Rvalue::Repeat(op, cnst) => {
377-
pretty.push_str(&pretty_operand(op));
378-
pretty.push_str(" ");
379-
pretty.push_str(&pretty_ty(cnst.ty().kind()));
360+
pretty.push_str(
361+
&format!("{} \" \" {}", &pretty_operand(op), pretty_ty(cnst.ty().kind())).as_str(),
362+
);
380363
}
381364
Rvalue::ShallowInitBox(_, _) => (),
382365
Rvalue::ThreadLocalRef(item) => {
383-
pretty.push_str("thread_local_ref");
384-
pretty.push_str(format!("{:#?}", item).as_str());
366+
pretty.push_str(format!("thread_local_ref{:#?}", item).as_str());
385367
}
386368
Rvalue::NullaryOp(nul, ty) => {
387-
pretty.push_str(format!("{:#?}", nul).as_str());
388-
pretty.push_str(&pretty_ty(ty.kind()));
389-
pretty.push_str(" ");
369+
pretty.push_str(format!("{:#?} {} \" \"", nul, pretty_ty(ty.kind())).as_str());
390370
}
391371
Rvalue::UnaryOp(un, op) => {
392-
pretty.push_str(&pretty_operand(op));
393-
pretty.push_str(" ");
394-
pretty.push_str(format!("{:#?}", un).as_str());
372+
pretty.push_str(format!("{} \" \" {:#?}", pretty_operand(op), un).as_str());
395373
}
396374
Rvalue::Use(op) => pretty.push_str(&pretty_operand(op)),
397375
}
@@ -458,8 +436,7 @@ pub fn pretty_ty(ty: TyKind) -> String {
458436
DynKind::Dyn => pretty.push_str("dyn "),
459437
DynKind::DynStar => pretty.push_str("dyn* "),
460438
}
461-
pretty.push_str(format!("{:#?}", data).as_str());
462-
pretty.push_str(format!(" + {:#?} )", region).as_str());
439+
pretty.push_str(format!("{:#?} + {:#?}", data, region).as_str());
463440
pretty
464441
}
465442
RigidTy::Never => "!".to_string(),

src/tools/tidy/src/ui_tests.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ use std::path::{Path, PathBuf};
1111
const ENTRY_LIMIT: usize = 900;
1212
// FIXME: The following limits should be reduced eventually.
1313
const ISSUES_ENTRY_LIMIT: usize = 1852;
14-
const ROOT_ENTRY_LIMIT: usize = 868;
14+
const ROOT_ENTRY_LIMIT: usize = 867;
1515

1616
const EXPECTED_TEST_FILE_EXTENSIONS: &[&str] = &[
1717
"rs", // test source files

tests/ui/stable-mir-print/basic_function.rs

+9-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
// compile-flags: -Z unpretty=stable-mir -Z mir-opt-level=3
22
// check-pass
3-
<<<<<<< HEAD
43
// only-x86_64
5-
=======
6-
>>>>>>> 9a9a3a91e41 (add stable_mir output test)
74

85
fn foo(i:i32) -> i32 {
96
i + 1
@@ -15,4 +12,13 @@ fn bar(vec: &mut Vec<i32>) -> Vec<i32> {
1512
new_vec
1613
}
1714

15+
pub fn demux(input: u8) -> u8 {
16+
match input {
17+
0 => 10,
18+
1 => 6,
19+
2 => 8,
20+
_ => 0,
21+
}
22+
}
23+
1824
fn main(){}

0 commit comments

Comments
 (0)