fix(core): prevent infinite recursion for recursive tuples (#5089) #5094
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.
Fix recursive tuple infinite recursion regression (#5089)
Problem
Recursive tuples that worked in Zod v3 throw
TypeError: Cannot read properties of undefined (reading '_zod')in v4 during schema initialization.Root Cause
$ZodLazyand$ZodReadonlyconstructors access properties on potentially uninitialized schemas during circular reference scenarios.Solution
?.) for safe property access in lazy gettersChanges
src/v4/core/schemas.ts: Add optional chaining to property access in$ZodLazyand$ZodReadonlyconstructorssrc/v4/core/tests/recursive-tuples.test.ts: Comprehensive regression test suiteTesting
Before/After
Before (broken):