feat(joinir): Phase 75 - BindingId pilot lookup (dev-only)
Phase 75 pilots BindingId-based variable lookup in the ScopeManager and ConditionEnv components. Demonstrates "BindingId priority → name fallback" strategy with comprehensive testing and zero production impact. Changes: - scope_manager.rs: Added lookup_with_binding() trait method - condition_env.rs: Implemented resolve_var_with_binding() with 3-tier fallback - expr_lowerer.rs: Integrated pilot lookup paths - condition_lowering_box.rs: Updated with BindingId support Tests: 3/3 new pilot tests PASS (priority/fallback/legacy) Tests: lib 958/958 PASS, normalized_dev 54/54 PASS (no regressions) Design: Feature-gated with normalized_dev, enables Phase 76 expansion. 🤖 Generated with Claude Code Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@ -312,6 +312,8 @@ mod tests {
|
||||
carriers: vec![],
|
||||
trim_helper: None,
|
||||
promoted_loopbodylocals: vec![],
|
||||
#[cfg(feature = "normalized_dev")]
|
||||
promoted_bindings: std::collections::BTreeMap::new(),
|
||||
};
|
||||
|
||||
let scope = Pattern2ScopeManager {
|
||||
@ -356,6 +358,8 @@ mod tests {
|
||||
carriers: vec![],
|
||||
trim_helper: None,
|
||||
promoted_loopbodylocals: vec![],
|
||||
#[cfg(feature = "normalized_dev")]
|
||||
promoted_bindings: std::collections::BTreeMap::new(),
|
||||
};
|
||||
|
||||
let scope = Pattern2ScopeManager {
|
||||
@ -400,6 +404,8 @@ mod tests {
|
||||
carriers: vec![],
|
||||
trim_helper: None,
|
||||
promoted_loopbodylocals: vec![],
|
||||
#[cfg(feature = "normalized_dev")]
|
||||
promoted_bindings: std::collections::BTreeMap::new(),
|
||||
};
|
||||
|
||||
let scope = Pattern2ScopeManager {
|
||||
@ -480,6 +486,8 @@ mod tests {
|
||||
carriers: vec![],
|
||||
trim_helper: None,
|
||||
promoted_loopbodylocals: vec![],
|
||||
#[cfg(feature = "normalized_dev")]
|
||||
promoted_bindings: std::collections::BTreeMap::new(),
|
||||
};
|
||||
let boxed_carrier: Box<CarrierInfo> = Box::new(carrier_info);
|
||||
let carrier_ref: &'static CarrierInfo = Box::leak(boxed_carrier);
|
||||
@ -507,6 +515,8 @@ mod tests {
|
||||
carriers: vec![],
|
||||
trim_helper: None,
|
||||
promoted_loopbodylocals: vec![],
|
||||
#[cfg(feature = "normalized_dev")]
|
||||
promoted_bindings: std::collections::BTreeMap::new(),
|
||||
};
|
||||
let boxed_carrier: Box<CarrierInfo> = Box::new(carrier_info);
|
||||
let carrier_ref: &'static CarrierInfo = Box::leak(boxed_carrier);
|
||||
@ -656,6 +666,8 @@ mod tests {
|
||||
carriers: vec![],
|
||||
trim_helper: None,
|
||||
promoted_loopbodylocals: vec![],
|
||||
#[cfg(feature = "normalized_dev")]
|
||||
promoted_bindings: std::collections::BTreeMap::new(),
|
||||
};
|
||||
|
||||
let scope = Pattern2ScopeManager {
|
||||
|
||||
Reference in New Issue
Block a user