Repository navigation
Widen a Go double remainder's int and float32 operands [patch] - #458
Open
matt-edmondson wants to merge 1 commit into
Open
matt-edmondson wants to merge 1 commit into
matt-edmondson wants to merge 1 commit into
Conversation
math.Mod takes float64 alone and Go converts nothing implicitly, so the double branch of WriteFloatingRemainder now writes each operand through GenerateWidenedTo, as the float32 branch already converts both. A mixed remainder and %= are added to the Go spelling and compile tests. Fixes #376 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017vfJW4VpqLXsf6UDQnX46h
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Fixes #376
What changed
GoGenerator.WriteFloatingRemainderwrote both operands of adoubleremainder unchanged.math.Modtakes onlyfloat64, and Go converts nothing implicitly, so anyintorfloat32operand broke the build. The double branch now passes each operand throughGenerateWidenedTo(operand, double), which writesfloat64(...)only around an operand narrower thanfloat64. Thefloat32branch already converted both operands.double rem(float x, double d, int i) { double r = x % d; r %= i; return r + (i % d); }now generates:Tests
Go_MixedOperandsOfADoubleRemainderAreWidenedchecks the spelling of all three remainders, including the compound%=.RemaindersCompilenow also compiles the mixed-operand file for C, C++ and Go (go vet).go vetreportscannot use x (variable of type float32) as float64 value in argument to math.Mod.Generated by Claude Code