You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Log::Log4perl compatibility improved from 10/700 to 8/700 failing subtests.
t/022Wrap.t now passes - %T stack trace format works correctly.
Generated with [Devin](https://cli.devin.ai/docs)
Co-Authored-By: Devin <noreply@cognition.ai>
**Status:**FIXED - `local $Carp::CarpLevel` now works correctly inside subroutines.
195
195
196
-
**Symptom:** t/022Wrap.t tests fail because %T (Carp::longmess) includes internal Log4perl frames.
196
+
**Root Cause:** When `local $VarName` was used inside a subroutine where `$VarName` was declared with `our` in an outer scope, the localization didn't work correctly:
197
+
1. JVM Backend: `EmitOperatorLocal` checked if variable was in symbol table and used wrong path
198
+
2. Interpreter Backend: `BytecodeCompiler` used cached register for `our` variables instead of loading from global table
197
199
198
-
**Example:**
199
-
```
200
-
got: 'trace: Log::Log4perl::Layout::PatternLayout::render() called at ... line 306,
201
-
Log::Log4perl::Appender::log() called at ... line 1115, ...'
202
-
expected: 'trace: at 022Wrap.t line 69'
203
-
```
200
+
**Fix Applied:**
201
+
-`EmitOperatorLocal.java`: Check for `our` variables when handling `local` and use `GlobalRuntimeScalar.makeLocal()` for them
202
+
-`BytecodeCompiler.java`: For scalars/arrays/hashes declared with `our`, use `LOAD_GLOBAL_*` instead of cached register
204
203
205
-
**Root Cause:**PerlOnJava's Carp::longmess includes all stack frames. Perl's version filters out internal frames based on `@CARP_NOT` and caller level adjustments that Log4perl uses.
204
+
**Commit:**4737089da
206
205
207
-
**Affected Tests:**
208
-
- t/022Wrap.t (2 failures: tests 1-2)
206
+
**Tests Fixed:**
207
+
- t/022Wrap.t (2 tests) - `%T` format now correctly filters internal frames
209
208
210
209
### Issue 3: DESTROY During Global Destruction
211
210
@@ -402,7 +401,7 @@ For chmod/umask:
402
401
403
402
## Progress Tracking
404
403
405
-
### Current Status: 10/700 subtests failing (was 11/700)
404
+
### Current Status: 8/700 subtests failing (was 10/700)
406
405
407
406
### Completed
408
407
-[x]*{NAME} glob slot accessor (2026-03-18)
@@ -414,18 +413,17 @@ For chmod/umask:
414
413
-[x] local $Pkg::Var bug fix (2026-03-19, PR #333)
415
414
-[x] caller() line number fix (2026-03-19) - Fixed 7/8 failures
416
415
-[x] eval block "(eval)" name in caller() (2026-03-19) - Fixed test 62
416
+
-[x] local $OurVariable fix (2026-03-19) - Fixed %T stack trace format
0 commit comments