Skip to content

Instantly share code, notes, and snippets.

@solson
Created December 30, 2015 03:45
Show Gist options
  • Select an option

  • Save solson/9d83249f47a0e3b150de to your computer and use it in GitHub Desktop.

Select an option

Save solson/9d83249f47a0e3b150de to your computer and use it in GitHub Desktop.
fn(arg0: &[closure@closure-no-captures.rs:7:14: 7:39 a:&i32], arg1: i32) -> i32 {
let var0: i32; // b
let tmp0: ();
let tmp1: i32;
let tmp2: i32;
bb0: {
var0 = arg0;
tmp1 = (*(*arg0).0);
tmp2 = var0;
ReturnPointer = Add(tmp1, tmp2);
goto -> bb1;
}
bb1: {
return;
}
bb2: {
diverge;
}
}
fn(arg0: &[closure@closure-no-captures.rs:10:14: 10:47], arg1: i32, arg2: i32) -> i32 {
let var0: i32; // x
let var1: i32; // y
let tmp0: ();
let tmp1: i32;
let tmp2: i32;
bb0: {
var0 = arg0;
var1 = arg1;
tmp1 = var0;
tmp2 = var1;
ReturnPointer = Add(tmp1, tmp2);
goto -> bb1;
}
bb1: {
return;
}
bb2: {
diverge;
}
}
fn() -> () {
let var0: i32; // a
let var1: [closure@closure-no-captures.rs:7:14: 7:39 a:&i32]; // _f
let var2: [closure@closure-no-captures.rs:10:14: 10:47]; // _g
let tmp0: ();
let tmp1: &i32;
bb0: {
var0 = 2;
tmp1 = &ReScope(CodeExtent(13/Remainder(BlockRemainder { block: 6, first_statement_index: 1 }))) Shared var0;
var1 = Aggregate<Closure(DefId { krate: 0, node: DefIndex(7) => main }, ClosureSubsts { func_substs: Substs[types=[[];[];[]], regions=[[];[];[]]], upvar_tys: [&i32] })>[tmp1];
var2 = Aggregate<Closure(DefId { krate: 0, node: DefIndex(10) => main }, ClosureSubsts { func_substs: Substs[types=[[];[];[]], regions=[[];[];[]]], upvar_tys: [] })>[];
drop var2;
drop var1;
goto -> bb1;
}
bb1: {
return;
}
bb2: {
diverge;
}
}
#![feature(rustc_attrs)]
#[rustc_mir(pretty = "closure-no-captures.mir")]
fn main() {
// The reference to the upvar `a` is correctly gotten through `self`, but `b` is also assigned
// to `self`.
let a = 2i32;
let _f = |b: i32| -> i32 { a + b };
// The references to `x` and `y` instead go to `self` and `x`, respectively.
let _g = |x: i32, y: i32| -> i32 { x + y };
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment