Skip to content

fix(formatjs_cli): extract formatMessage from callbacks inside optional chains#6460

Merged
longlho merged 4 commits intoformatjs:mainfrom
walkerburgin:wburgin/optional-chaining
Apr 28, 2026
Merged

fix(formatjs_cli): extract formatMessage from callbacks inside optional chains#6460
longlho merged 4 commits intoformatjs:mainfrom
walkerburgin:wburgin/optional-chaining

Conversation

@walkerburgin
Copy link
Copy Markdown
Contributor

@walkerburgin walkerburgin commented Apr 28, 2026

Fixes #6459.

The Rust CLI's chain-expression visitor walked into call expression arguments, but skipped the callee. As a result, formatMessage calls inside callbacks passed to optional-chain methods (e.g. getUsers()?.map(() => intl.formatMessage(...))) were never extracted.

Changes

  • Walk both the callee and arguments of a CallExpression chain element so nested formatMessage calls inside callback bodies are extracted.
  • Drop the StaticMemberExpression arm — walk_chain_expression covers it via the default case.
  • Add fixture case in packages/ts-transformer/tests/fixtures/optionalChaining.tsx.
  • Add Rust unit-test expectation in crates/formatjs_cli/src/extractor.rs.
  • Add ts-transformer assertion in packages/ts-transformer/tests/index.test.ts.
  • Add CLI conformance case 22_callback_in_optional_chain.txt so both Rust and TS extractors are guarded.

Test plan

  • bazel test //crates/formatjs_cli:formatjs_cli_test
  • bazel test //packages/ts-transformer:ts-transformer_test
  • bazel test //packages/cli/integration-tests:conformance_test

walkerburgin and others added 4 commits April 28, 2026 10:09
Adds the GH formatjs#6459 case to both the CLI conformance suite (Rust + TS)
and the ts-transformer extraction assertion so the regression is
guarded across all three extractors.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
@longlho longlho changed the title Extract messages from callbacks in inside optional chains fix(formatjs_cli): extract formatMessage from callbacks inside optional chains Apr 28, 2026
@longlho longlho merged commit cb7bb23 into formatjs:main Apr 28, 2026
2 of 3 checks passed
@walkerburgin
Copy link
Copy Markdown
Contributor Author

Thank you!

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.

formatjs_cli extract misses formatMessage() calls nested in callbacks inside optional chains

2 participants