process main { var("bad_x") x; var("good_x") y; call("helper_func", {}) helper; call_with_caller_target("func1", {}, "helper") c; val_equal(c.x, "good_x") a; assert(a); var("foo") foo; Block { concat(foo, _scope.foo, _caller.bar, _arg0) x; } block; var("bar") bar; block->call("arg") c; val_equal(c.x, "foofoobararg") a; assert(a); exit("0"); } template helper_func { var(_caller.y) x; } template func1 { var(_caller.x) x; }