operator-conformance-pynter: compare list-typed results for real - #331
Draft
martin-henz wants to merge 7 commits into
Draft
operator-conformance-pynter: compare list-typed results for real#331martin-henz wants to merge 7 commits into
martin-henz wants to merge 7 commits into
Conversation
Closes #309. pvmlValueMatches's PVML_SUPPORTED_STASH_TYPES only covered bigint/number/bool/string/complex -- there was no case at all for a list-typed CSE stash value, so every combination involving a list (including list*int/int*list, per #299/#294) was skip-gated out of the sweep with reason "list-typed results aren't decoded by this file's comparison logic yet", rather than actually checked. Not evidence of a runtime bug -- native Pynter's own VM does support list*int (vm.c's op_mul_g) -- purely a gap in this file's own comparison logic. Added a "list" case: reconstructs the full CSE Value from wantValue (the raw Value[] a list-typed stash entry carries) and renders it through the same toPythonString every other engine's list-typed comparisons already use (generateNativePynterTestCases, utils.ts), compared directly against native Pynter's captured print() text. Confirmed the two engines' printers produce identical text for the case that actually matters here -- both print "[1, 2, 1, 2]" for `[1, 2] * 2` -- so no tolerance/normalization needed, unlike the float/complex cases above it. nativePynterSkipReason's only branch (the list*int skip) is gone; the function itself stays as the extension point for whatever the next audit finds, same as NATIVE_PYNTER_SKIP_REASONS in utils.ts. Verified against a freshly built native Pynter binary (PYNTER_RUNNER_PATH): 1104/1104 passing (up from 1089 attempted + 15 skipped) -- confirmed list*int, list*True, list*'ab', list**[1,2], and every other list-typed combination in the sweep now genuinely exercised and passing. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KrwJGug3rCXijRseRjys9V
Contributor
|
Caution The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased. |
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KrwJGug3rCXijRseRjys9V
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.
Summary
Closes #309.
pvmlValueMatches'sPVML_SUPPORTED_STASH_TYPESonly coveredbigint/number/bool/string/complex— no case at all for a list-typed CSE stash value, so every combination involving a list (includinglist * int/int * list, per #299/#294) was skip-gated out of the sweep with reason"list-typed results aren't decoded by this file's comparison logic yet", rather than actually checked. Not evidence of a runtime bug — native Pynter's own VM does supportlist * int(vm.c'sop_mul_g) — purely a gap in this file's own comparison logic.Fix
Added a
"list"case topvmlValueMatches: reconstructs the full CSEValuefromwantValue(the rawValue[]a list-typed stash entry carries) and renders it through the sametoPythonStringevery other engine's list-typed comparisons already use (generateNativePynterTestCases,utils.ts), compared directly against native Pynter's capturedprint()text. Confirmed both engines' printers produce identical text for the case that actually matters — both print"[1, 2, 1, 2]"for[1, 2] * 2— so no tolerance/normalization needed here, unlike the float/complex cases above it.nativePynterSkipReason's only branch (thelist*intskip) is gone; the function itself stays as the extension point for whatever the next audit finds, same asNATIVE_PYNTER_SKIP_REASONSinutils.ts.Test plan
PYNTER_RUNNER_PATH): 1104/1104 passing (up from 1089 attempted + 15 skipped) — confirmedlist*int,list*True,list*'ab',list**[1,2], and every other list-typed combination in the sweep now genuinely exercised and passing, not silently skippedtsc --noEmit,eslintclean🤖 Generated with Claude Code
https://claude.ai/code/session_01KrwJGug3rCXijRseRjys9V