Fix critical codegen bugs for complex expressions
- String interpolation with operators: {a == b} now generates proper
bash comparison instead of invalid ${a == b}
- Double method call in conditions: CSE precompute now correctly reuses
temp variable for CallExpr to avoid calling method twice
- arr.push() with method call: detect side effects and call method
separately to avoid subshell state isolation
- charAt() with newline: use printf X marker to preserve trailing newlines
- this.field.method() and obj.field.method(): handle nested MemberAccess
in return statements and assignments
- Namespace vs variable collision: check if identifier is known variable
before treating as namespace
- return func() with arrays: use _generate_call_arg for proper nameref
Showing
This diff is collapsed.
Click to expand it.
Please
register
or
sign in
to comment