Skip to content
This repository has been archived by the owner on Aug 22, 2024. It is now read-only.

Commit

Permalink
Nightly-2023-09-24
Browse files Browse the repository at this point in the history
  • Loading branch information
hermanventer committed Jul 2, 2024
1 parent 0445e1b commit f064105
Show file tree
Hide file tree
Showing 20 changed files with 75 additions and 84 deletions.
Binary file modified binaries/summary_store.tar
Binary file not shown.
50 changes: 24 additions & 26 deletions checker/src/block_visitor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ use mirai_annotations::*;
use rustc_hir::def_id::DefId;
use rustc_index::{Idx, IndexVec};
use rustc_middle::mir;
use rustc_middle::mir::interpret::{alloc_range, ConstValue, GlobalAlloc, Scalar};
use rustc_middle::mir::UnwindTerminateReason;
use rustc_middle::mir::interpret::{alloc_range, GlobalAlloc, Scalar};
use rustc_middle::mir::{ConstValue, UnwindTerminateReason};
use rustc_middle::ty::adjustment::PointerCoercion;
use rustc_middle::ty::layout::LayoutCx;
use rustc_middle::ty::{
Expand Down Expand Up @@ -1735,9 +1735,9 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com
self.visit_used_move(path, place);
}
mir::Operand::Constant(constant) => {
let mir::Constant { literal, .. } = constant.borrow();
let rh_type = literal.ty();
let const_value = self.visit_literal(literal);
let mir::ConstOperand { const_, .. } = constant.borrow();
let rh_type = const_.ty();
let const_value = self.visit_literal(const_);
if const_value.expression.infer_type() == ExpressionType::NonPrimitive {
match &const_value.expression {
Expression::Bottom | Expression::Top => {
Expand Down Expand Up @@ -2641,8 +2641,8 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com
.type_visitor()
.get_rustc_place_type(place, self.bv.current_span),
mir::Operand::Constant(constant) => {
let mir::Constant { literal, .. } = constant.borrow();
literal.ty()
let mir::ConstOperand { const_, .. } = constant.borrow();
const_.ty()
}
}
}
Expand All @@ -2655,8 +2655,8 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com
mir::Operand::Copy(place) => self.visit_copy(place),
mir::Operand::Move(place) => self.visit_move(place),
mir::Operand::Constant(constant) => {
let mir::Constant { literal, .. } = constant.borrow();
self.visit_literal(literal)
let mir::ConstOperand { const_, .. } = constant.borrow();
self.visit_literal(const_)
}
}
}
Expand Down Expand Up @@ -2690,14 +2690,14 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com

/// Returns a value that corresponds to the given literal
#[logfn_inputs(TRACE)]
pub fn visit_literal(&mut self, literal: &mir::ConstantKind<'tcx>) -> Rc<AbstractValue> {
pub fn visit_literal(&mut self, literal: &mir::Const<'tcx>) -> Rc<AbstractValue> {
match literal {
// This constant came from the type system
mir::ConstantKind::Ty(c) => self.visit_const(c),
mir::Const::Ty(c) => self.visit_const(c),
// An unevaluated mir constant which is not part of the type system.
mir::ConstantKind::Unevaluated(c, ty) => self.visit_unevaluated_const(c, *ty),
mir::Const::Unevaluated(c, ty) => self.visit_unevaluated_const(c, *ty),
// This constant contains something the type system cannot handle (e.g. pointers).
mir::ConstantKind::Val(v, ty) => self.visit_const_value(*v, *ty),
mir::Const::Val(v, ty) => self.visit_const_value(*v, *ty),
}
}

Expand Down Expand Up @@ -3058,37 +3058,35 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com
ConstValue::ZeroSized => self.get_constant_value_from_scalar(lty, 0, 0),

// Used only for `&[u8]` and `&str`
ConstValue::Slice { data, start, end } => {
assume!(end > start); // The Rust compiler should ensure this.
let size = end - start;
ConstValue::Slice { data, meta } => {
let size = rustc_target::abi::Size::from_bytes(meta);
let bytes = data
.inner()
.get_bytes_strip_provenance(
&self.bv.tcx,
alloc_range(
rustc_target::abi::Size::from_bytes(start as u64),
rustc_target::abi::Size::from_bytes(size as u64),
),
alloc_range(rustc_target::abi::Size::ZERO, size),
)
.unwrap();
let slice = &bytes[start..end];
let slice = &bytes[0..];
match lty.kind() {
// todo: is this case possible? The comment suggests not.
TyKind::Array(elem_type, length) => {
let length = self.bv.get_array_length(length);
let (array_value, array_path) = self.get_heap_array_and_path(lty, size);
let (array_value, array_path) =
self.get_heap_array_and_path(lty, size.bytes() as usize);
self.deserialize_constant_array(array_path, bytes, length, *elem_type);
array_value
}
TyKind::Ref(_, t, _) if matches!(t.kind(), TyKind::Slice(..)) => {
let elem_type = self.type_visitor().get_element_type(*t);
let bytes_per_elem = self.type_visitor().get_type_size(elem_type) as usize;
let length = size / bytes_per_elem;
let (_, array_path) = self.get_heap_array_and_path(*t, size);
let bytes_per_elem = self.type_visitor().get_type_size(elem_type);
let length = size.bytes() / bytes_per_elem;
let (_, array_path) =
self.get_heap_array_and_path(*t, size.bytes() as usize);
self.deserialize_constant_array(
array_path.clone(),
bytes,
length,
length as usize,
elem_type,
);
AbstractValue::make_reference(array_path)
Expand Down
2 changes: 1 addition & 1 deletion checker/src/crate_visitor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,7 @@ impl<'compilation, 'tcx> CrateVisitor<'compilation, 'tcx> {
mir::Rvalue::Use(mir::Operand::Constant(box ref con)),
)) = s.kind
{
if let mir::ConstantKind::Unevaluated(c, _) = con.literal {
if let mir::Const::Unevaluated(c, _) = con.const_ {
result.push(utils::def_id_display_name(self.tcx, c.def));
}
}
Expand Down
13 changes: 3 additions & 10 deletions checker/src/type_visitor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1244,16 +1244,9 @@ impl<'tcx> TypeVisitor<'tcx> {
self.specialize_generic_args(args, map),
*movability,
),
TyKind::GeneratorWitness(bound_types) => {
let map_types = |types: &rustc_middle::ty::List<Ty<'tcx>>| {
self.tcx.mk_type_list_from_iter(
types
.iter()
.map(|ty| self.specialize_generic_argument_type(ty, map)),
)
};
let specialized_types = bound_types.map_bound(map_types);
Ty::new_generator_witness(self.tcx, specialized_types)
TyKind::GeneratorWitness(def_id, args) => {
let specialized_types = self.specialize_generic_args(args, map);
Ty::new_generator_witness(self.tcx, *def_id, specialized_types)
}
TyKind::Tuple(types) => Ty::new_tup_from_iter(
self.tcx,
Expand Down
4 changes: 2 additions & 2 deletions checker/src/utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -260,8 +260,8 @@ fn append_mangled_type<'tcx>(str: &mut String, ty: Ty<'tcx>, tcx: TyCtxt<'tcx>)
}
}
}
TyKind::GeneratorWitness(binder) => {
for ty in binder.skip_binder().iter() {
TyKind::GeneratorWitness(_def_id, subs) => {
for ty in subs.types() {
str.push('_');
append_mangled_type(str, ty, tcx)
}
Expand Down
2 changes: 1 addition & 1 deletion checker/tests/call_graph/fnptr.rs
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ commit;
],
"callables": [
{
"name": "/fnptr/fn1(u32,&ReLateBound(DebruijnIndex(0), BoundRegion { var: 0, kind: BrNamed(DefId(0:7 ~ fnptr[009e]::fn1::'_), '_) }) Binder(fn(u32) -> u32, []))->u32",
"name": "/fnptr/fn1(u32,&ReLateBound(DebruijnIndex(0), BoundRegion { var: 0, kind: BrNamed(DefId(0:7 ~ fnptr[48a0]::fn1::'_), '_) }) Binder(fn(u32) -> u32, []))->u32",
"file_index": 0,
"first_line": 9,
"local": true
Expand Down
2 changes: 1 addition & 1 deletion checker/tests/call_graph/fnptr_clean.rs
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ commit;
],
"callables": [
{
"name": "/fnptr_clean/fn1(u32,&ReLateBound(DebruijnIndex(0), BoundRegion { var: 0, kind: BrNamed(DefId(0:8 ~ fnptr_clean[1076]::fn1::'_), '_) }) Binder(fn(u32) -> u32, []))->u32",
"name": "/fnptr_clean/fn1(u32,&ReLateBound(DebruijnIndex(0), BoundRegion { var: 0, kind: BrNamed(DefId(0:8 ~ fnptr_clean[6833]::fn1::'_), '_) }) Binder(fn(u32) -> u32, []))->u32",
"file_index": 0,
"first_line": 14,
"local": true
Expand Down
2 changes: 1 addition & 1 deletion checker/tests/call_graph/fnptr_deduplicate.rs
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ commit;
],
"callables": [
{
"name": "/fnptr_deduplicate/fn1(u32,&ReLateBound(DebruijnIndex(0), BoundRegion { var: 0, kind: BrNamed(DefId(0:7 ~ fnptr_deduplicate[2966]::fn1::'_), '_) }) Binder(fn(u32) -> u32, []))->u32",
"name": "/fnptr_deduplicate/fn1(u32,&ReLateBound(DebruijnIndex(0), BoundRegion { var: 0, kind: BrNamed(DefId(0:7 ~ fnptr_deduplicate[474a]::fn1::'_), '_) }) Binder(fn(u32) -> u32, []))->u32",
"file_index": 0,
"first_line": 10,
"local": true
Expand Down
2 changes: 1 addition & 1 deletion checker/tests/call_graph/fnptr_dom.rs
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ commit;
],
"callables": [
{
"name": "/fnptr_dom/fn1(u32,&ReLateBound(DebruijnIndex(0), BoundRegion { var: 0, kind: BrNamed(DefId(0:7 ~ fnptr_dom[2ff5]::fn1::'_), '_) }) Binder(fn(u32) -> u32, []),&ReLateBound(DebruijnIndex(0), BoundRegion { var: 1, kind: BrNamed(DefId(0:8 ~ fnptr_dom[2ff5]::fn1::'_#1), '_) }) Binder(fn(u32) -> u32, []))->u32",
"name": "/fnptr_dom/fn1(u32,&ReLateBound(DebruijnIndex(0), BoundRegion { var: 0, kind: BrNamed(DefId(0:7 ~ fnptr_dom[5adb]::fn1::'_), '_) }) Binder(fn(u32) -> u32, []),&ReLateBound(DebruijnIndex(0), BoundRegion { var: 1, kind: BrNamed(DefId(0:8 ~ fnptr_dom[5adb]::fn1::'_#1), '_) }) Binder(fn(u32) -> u32, []))->u32",
"file_index": 0,
"first_line": 9,
"local": true
Expand Down
2 changes: 1 addition & 1 deletion checker/tests/call_graph/fnptr_dom_loop.rs
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ commit;
],
"callables": [
{
"name": "/fnptr_dom_loop/fn1(u32,&ReLateBound(DebruijnIndex(0), BoundRegion { var: 0, kind: BrNamed(DefId(0:8 ~ fnptr_dom_loop[3bf9]::fn1::'_), '_) }) Binder(fn(u32) -> u32, []),&ReLateBound(DebruijnIndex(0), BoundRegion { var: 1, kind: BrNamed(DefId(0:9 ~ fnptr_dom_loop[3bf9]::fn1::'_#1), '_) }) Binder(fn(u32) -> u32, []))->u32",
"name": "/fnptr_dom_loop/fn1(u32,&ReLateBound(DebruijnIndex(0), BoundRegion { var: 0, kind: BrNamed(DefId(0:8 ~ fnptr_dom_loop[e24a]::fn1::'_), '_) }) Binder(fn(u32) -> u32, []),&ReLateBound(DebruijnIndex(0), BoundRegion { var: 1, kind: BrNamed(DefId(0:9 ~ fnptr_dom_loop[e24a]::fn1::'_#1), '_) }) Binder(fn(u32) -> u32, []))->u32",
"file_index": 0,
"first_line": 9,
"local": true
Expand Down
2 changes: 1 addition & 1 deletion checker/tests/call_graph/fnptr_dom_loop_souffle.rs
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ digraph {
],
"callables": [
{
"name": "/fnptr_dom_loop_souffle/fn1(u32,&ReLateBound(DebruijnIndex(0), BoundRegion { var: 0, kind: BrNamed(DefId(0:8 ~ fnptr_dom_loop_souffle[5e1d]::fn1::'_), '_) }) Binder(fn(u32) -> u32, []),&ReLateBound(DebruijnIndex(0), BoundRegion { var: 1, kind: BrNamed(DefId(0:9 ~ fnptr_dom_loop_souffle[5e1d]::fn1::'_#1), '_) }) Binder(fn(u32) -> u32, []))->u32",
"name": "/fnptr_dom_loop_souffle/fn1(u32,&ReLateBound(DebruijnIndex(0), BoundRegion { var: 0, kind: BrNamed(DefId(0:8 ~ fnptr_dom_loop_souffle[f7b4]::fn1::'_), '_) }) Binder(fn(u32) -> u32, []),&ReLateBound(DebruijnIndex(0), BoundRegion { var: 1, kind: BrNamed(DefId(0:9 ~ fnptr_dom_loop_souffle[f7b4]::fn1::'_#1), '_) }) Binder(fn(u32) -> u32, []))->u32",
"file_index": 0,
"first_line": 10,
"local": true
Expand Down
24 changes: 12 additions & 12 deletions checker/tests/call_graph/fnptr_fold.rs
Original file line number Diff line number Diff line change
Expand Up @@ -68,14 +68,14 @@ commit;
/* EXPECTED:CALL_SITES{
"files": [
"tests/call_graph/fnptr_fold.rs",
"/rustc/203c57dbe20aee67eaa8f7be45d1e4ef0b274109/library/std/src/io/stdio.rs",
"/rustc/203c57dbe20aee67eaa8f7be45d1e4ef0b274109/library/core/src/fmt/mod.rs",
"/rustc/203c57dbe20aee67eaa8f7be45d1e4ef0b274109/library/core/src/slice/mod.rs",
"/rustc/203c57dbe20aee67eaa8f7be45d1e4ef0b274109/library/core/src/ptr/metadata.rs"
"/rustc/13e6f24b9adda67852fb86538541adaa68aff6e8/library/std/src/io/stdio.rs",
"/rustc/13e6f24b9adda67852fb86538541adaa68aff6e8/library/core/src/fmt/mod.rs",
"/rustc/13e6f24b9adda67852fb86538541adaa68aff6e8/library/core/src/slice/mod.rs",
"/rustc/13e6f24b9adda67852fb86538541adaa68aff6e8/library/core/src/ptr/metadata.rs"
],
"callables": [
{
"name": "/fnptr_fold/fn1(u32,&ReLateBound(DebruijnIndex(0), BoundRegion { var: 0, kind: BrNamed(DefId(0:7 ~ fnptr_fold[dc8f]::fn1::'_), '_) }) Binder(fn(u32) -> u32, []))->u32",
"name": "/fnptr_fold/fn1(u32,&ReLateBound(DebruijnIndex(0), BoundRegion { var: 0, kind: BrNamed(DefId(0:7 ~ fnptr_fold[3ab1]::fn1::'_), '_) }) Binder(fn(u32) -> u32, []))->u32",
"file_index": 0,
"first_line": 10,
"local": true
Expand All @@ -99,25 +99,25 @@ commit;
"local": true
},
{
"name": "/std/std::io::_print(Adt(std::fmt::Arguments, [ReLateBound(DebruijnIndex(0), BoundRegion { var: 0, kind: BrNamed(DefId(1:12958 ~ std[783e]::io::stdio::_print::'_), '_) })]))->()",
"name": "/std/std::io::_print(std::fmt::Arguments<ReLateBound(DebruijnIndex(0), BoundRegion { var: 0, kind: BrNamed(DefId(1:12956 ~ std[f1cf]::io::stdio::_print::'_), '_) })>)->()",
"file_index": 1,
"first_line": 1094,
"local": false
},
{
"name": "/core/std::fmt::Arguments::<'a>::new_const(&ReEarlyBound(DefId(2:9434 ~ core[1fc7]::fmt::{impl#2}::'a), 0, 'a) [&ReStatic str])->Adt(std::fmt::Arguments, [ReEarlyBound(DefId(2:9434 ~ core[1fc7]::fmt::{impl#2}::'a), 0, 'a)])",
"name": "/core/std::fmt::Arguments::<'a>::new_const(&ReEarlyBound(DefId(2:9457 ~ core[480e]::fmt::{impl#2}::'a), 0, 'a) [&ReStatic str])->std::fmt::Arguments<ReEarlyBound(DefId(2:9457 ~ core[480e]::fmt::{impl#2}::'a), 0, 'a)>",
"file_index": 2,
"first_line": 297,
"first_line": 317,
"local": true
},
{
"name": "/core/core::slice::<impl [T]>::len(&ReLateBound(DebruijnIndex(0), BoundRegion { var: 0, kind: BrNamed(DefId(2:57065 ~ core[1fc7]::slice::{impl#0}::len::'_), '_) }) [T/#0])->usize",
"name": "/core/core::slice::<impl [T]>::len(&ReLateBound(DebruijnIndex(0), BoundRegion { var: 0, kind: BrNamed(DefId(2:58132 ~ core[480e]::slice::{impl#0}::len::'_), '_) }) [T/#0])->usize",
"file_index": 3,
"first_line": 141,
"local": true
},
{
"name": "/core/std::ptr::metadata(*const T/#0)->Alias(Projection, AliasTy { args: [T/#0], def_id: DefId(2:1737 ~ core[1fc7]::ptr::metadata::Pointee::Metadata) })",
"name": "/core/std::ptr::metadata(*const T/#0)->Alias(Projection, AliasTy { args: [T/#0], def_id: DefId(2:1737 ~ core[480e]::ptr::metadata::Pointee::Metadata) })",
"file_index": 4,
"first_line": 94,
"local": true
Expand Down Expand Up @@ -161,14 +161,14 @@ commit;
],
[
2,
298,
318,
12,
5,
6
],
[
2,
299,
319,
13,
5,
5
Expand Down
2 changes: 1 addition & 1 deletion checker/tests/call_graph/fnptr_loop.rs
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ commit;
"local": true
},
{
"name": "/fnptr_loop/fn2(u32,&ReLateBound(DebruijnIndex(0), BoundRegion { var: 0, kind: BrNamed(DefId(0:7 ~ fnptr_loop[7bf4]::fn2::'_), '_) }) Binder(fn(u32) -> u32, []))->u32",
"name": "/fnptr_loop/fn2(u32,&ReLateBound(DebruijnIndex(0), BoundRegion { var: 0, kind: BrNamed(DefId(0:7 ~ fnptr_loop[f96b]::fn2::'_), '_) }) Binder(fn(u32) -> u32, []))->u32",
"file_index": 0,
"first_line": 12,
"local": true
Expand Down
2 changes: 1 addition & 1 deletion checker/tests/call_graph/fnptr_slice.rs
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ commit;
],
"callables": [
{
"name": "/fnptr_slice/fn1(u32,&ReLateBound(DebruijnIndex(0), BoundRegion { var: 0, kind: BrNamed(DefId(0:7 ~ fnptr_slice[f591]::fn1::'_), '_) }) Binder(fn(u32) -> u32, []))->u32",
"name": "/fnptr_slice/fn1(u32,&ReLateBound(DebruijnIndex(0), BoundRegion { var: 0, kind: BrNamed(DefId(0:7 ~ fnptr_slice[2471]::fn1::'_), '_) }) Binder(fn(u32) -> u32, []))->u32",
"file_index": 0,
"first_line": 10,
"local": true
Expand Down
2 changes: 1 addition & 1 deletion checker/tests/call_graph/generic.rs
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ commit;
"local": true
},
{
"name": "/generic/Gen::<T>::bar(&ReLateBound(DebruijnIndex(0), BoundRegion { var: 0, kind: BrNamed(DefId(0:12 ~ generic[7907]::{impl#0}::bar::'_), '_) }) Adt(Gen, [T/#0]),T/#0)->()",
"name": "/generic/Gen::<T>::bar(&ReLateBound(DebruijnIndex(0), BoundRegion { var: 0, kind: BrNamed(DefId(0:12 ~ generic[bb92]::{impl#0}::bar::'_), '_) }) Gen<T/#0>,T/#0)->()",
"file_index": 0,
"first_line": 14,
"local": true
Expand Down
6 changes: 3 additions & 3 deletions checker/tests/call_graph/static_deduplicate.rs
Original file line number Diff line number Diff line change
Expand Up @@ -66,19 +66,19 @@ commit;
],
"callables": [
{
"name": "/static_deduplicate/fn1(u32,&ReLateBound(DebruijnIndex(0), BoundRegion { var: 0, kind: BrNamed(DefId(0:7 ~ static_deduplicate[ca38]::fn1::'_), '_) }) str)->(u32&ReLateBound(DebruijnIndex(0), BoundRegion { var: 0, kind: BrNamed(DefId(0:7 ~ static_deduplicate[ca38]::fn1::'_), '_) }) str))",
"name": "/static_deduplicate/fn1(u32,&ReLateBound(DebruijnIndex(0), BoundRegion { var: 0, kind: BrNamed(DefId(0:7 ~ static_deduplicate[ad45]::fn1::'_), '_) }) str)->(u32&ReLateBound(DebruijnIndex(0), BoundRegion { var: 0, kind: BrNamed(DefId(0:7 ~ static_deduplicate[ad45]::fn1::'_), '_) }) str))",
"file_index": 0,
"first_line": 10,
"local": true
},
{
"name": "/static_deduplicate/fn2(u32,&ReLateBound(DebruijnIndex(0), BoundRegion { var: 0, kind: BrNamed(DefId(0:8 ~ static_deduplicate[ca38]::fn2::'_), '_) }) str)->(u32&ReLateBound(DebruijnIndex(0), BoundRegion { var: 0, kind: BrNamed(DefId(0:8 ~ static_deduplicate[ca38]::fn2::'_), '_) }) str))",
"name": "/static_deduplicate/fn2(u32,&ReLateBound(DebruijnIndex(0), BoundRegion { var: 0, kind: BrNamed(DefId(0:8 ~ static_deduplicate[ad45]::fn2::'_), '_) }) str)->(u32&ReLateBound(DebruijnIndex(0), BoundRegion { var: 0, kind: BrNamed(DefId(0:8 ~ static_deduplicate[ad45]::fn2::'_), '_) }) str))",
"file_index": 0,
"first_line": 13,
"local": true
},
{
"name": "/static_deduplicate/fn3(u32,&ReLateBound(DebruijnIndex(0), BoundRegion { var: 0, kind: BrNamed(DefId(0:9 ~ static_deduplicate[ca38]::fn3::'_), '_) }) str)->(u32&ReLateBound(DebruijnIndex(0), BoundRegion { var: 0, kind: BrNamed(DefId(0:9 ~ static_deduplicate[ca38]::fn3::'_), '_) }) str))",
"name": "/static_deduplicate/fn3(u32,&ReLateBound(DebruijnIndex(0), BoundRegion { var: 0, kind: BrNamed(DefId(0:9 ~ static_deduplicate[ad45]::fn3::'_), '_) }) str)->(u32&ReLateBound(DebruijnIndex(0), BoundRegion { var: 0, kind: BrNamed(DefId(0:9 ~ static_deduplicate[ad45]::fn3::'_), '_) }) str))",
"file_index": 0,
"first_line": 16,
"local": true
Expand Down
Loading

0 comments on commit f064105

Please sign in to comment.