Skip to content

fix(codegen): #142 Math.tan/asin/acos/atan/atan2 silent identity (v0.…#148

Open
proggeramlug wants to merge 1 commit intomainfrom
fix/issue-142-math-trig
Open

fix(codegen): #142 Math.tan/asin/acos/atan/atan2 silent identity (v0.…#148
proggeramlug wants to merge 1 commit intomainfrom
fix/issue-142-math-trig

Conversation

@proggeramlug
Copy link
Copy Markdown
Contributor

@proggeramlug proggeramlug commented Apr 23, 2026

…5.165)

The five codegen arms at crates/perry-codegen/src/expr.rs:5417-5424 fell through to lower_expr(ctx, o), returning the argument unchanged. Runtime functions (js_math_tan/asin/acos/atan/atan2 in perry-runtime/src/math.rs) and extern declarations (runtime_decls.rs:1482-1493) were already present — only the codegen wiring was missing.

Replaced the fall-through with calls to the existing runtime symbols, matching the shape of the sinh/cosh/tanh arms three lines above. atan2 evaluates y first then x (JS arg order) and passes both to js_math_atan2.

Verified against node --experimental-strip-types: Math.tan(1) = 1.557… (was 1), Math.atan2(0,-1) = π (was -1) — all within last-digit libm rounding.

Summary

Changes

Related issue

Test plan

  • cargo build --release clean
  • cargo test --workspace --exclude perry-ui-ios --exclude perry-ui-tvos --exclude perry-ui-watchos --exclude perry-ui-gtk4 --exclude perry-ui-android --exclude perry-ui-windows passes
  • (if user-facing) Added or updated a test under test-files/ or a #[test] in the affected crate
  • (if CLI / stdlib / runtime API changed) Updated docs/src/
  • (if touching a platform UI backend) Built -p perry-ui-<backend> locally on that platform

Screenshots / output

Checklist

  • I have NOT bumped the workspace version or edited CLAUDE.md / CHANGELOG.md (maintainer handles these at merge)
  • My commits follow the loose feat: / fix: / docs: / chore: prefix convention used in the log
  • I've read CONTRIBUTING.md and agree to the Code of Conduct

…5.165)

The five codegen arms at crates/perry-codegen/src/expr.rs:5417-5424 fell
through to lower_expr(ctx, o), returning the argument unchanged. Runtime
functions (js_math_tan/asin/acos/atan/atan2 in perry-runtime/src/math.rs)
and extern declarations (runtime_decls.rs:1482-1493) were already present
— only the codegen wiring was missing.

Replaced the fall-through with calls to the existing runtime symbols,
matching the shape of the sinh/cosh/tanh arms three lines above. atan2
evaluates y first then x (JS arg order) and passes both to js_math_atan2.

Verified against node --experimental-strip-types: Math.tan(1) = 1.557…
(was 1), Math.atan2(0,-1) = π (was -1) — all within last-digit libm
rounding.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant