Skip to content

[libc++] Fix symbol_of/u8symbol_of table entry for op_caret_equals - #320

Open
Cfretz244 wants to merge 1 commit into
bloomberg:p2996from
Cfretz244:reflect-symbol-of-caret-equals
Open

[libc++] Fix symbol_of/u8symbol_of table entry for op_caret_equals#320
Cfretz244 wants to merge 1 commit into
bloomberg:p2996from
Cfretz244:reflect-symbol-of-caret-equals

Conversation

@Cfretz244

Copy link
Copy Markdown

Fixes #319.

Both operator-symbol tables in <meta> (symbol_of and u8symbol_of) spelled the op_caret_equals entry — between "%=" and "&=" — as "^", duplicating the plain-xor row. Consumers rendering operator names from reflections got "^" for operator^=; field shape: a binding generator emitted self.operator^(...) for absl::int128::operator^=, a non-existent member. (Splice-based consumers never notice; operator_of itself is correct, so only textual renderers see the bug.)

Data-only fix in both tables, plus libcxx/test/std/experimental/reflection/operator-symbol-tables.pass.cpp asserting the full compound-assignment row of both tables.

Validated: the new test fails at the base commit and passes with the fix; built and exercised against a real-world reflection workload (36-library binding-generation corpus, including the absl::int128 surface that exposed it).

Both operator-symbol tables in <meta> spelled the compound-xor entry
(between "%=" and "&=") as "^", duplicating plain xor. Every consumer
rendering operator names from reflections got "^" for operator^= --
field shape: generated binding source called self.operator^(...) for
absl::int128's operator^=, a non-existent member. Adds a regression test
covering the full compound-assignment row of both tables.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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