Part of #69, depends on #72
Task
With custom handle tables, the re-exporter's code chains: slab_lookup → custom resource.rep → raw_ptr. The downstream adapter (re-exporter → definer) must NOT call resource.rep again.
Implementation
Files: meld-core/src/resolver.rs, meld-core/src/adapter/fact.rs
In the double borrow detection section of resolve_with_hints, after existing name-matching detection:
for site in &mut graph.adapter_sites {
if graph.reexporter_components.contains(&site.from_component) {
for op in &mut site.requirements.resource_params {
if !op.is_owned && op.callee_defines_resource {
op.caller_already_converted = true;
}
}
}
}
Branch
feat/per-component-handle-tables
Acceptance
cargo test --package meld-core passes.
Part of #69, depends on #72
Task
With custom handle tables, the re-exporter's code chains: slab_lookup → custom resource.rep → raw_ptr. The downstream adapter (re-exporter → definer) must NOT call resource.rep again.
Implementation
Files:
meld-core/src/resolver.rs,meld-core/src/adapter/fact.rsIn the double borrow detection section of
resolve_with_hints, after existing name-matching detection:Branch
feat/per-component-handle-tablesAcceptance
cargo test --package meld-corepasses.