fix: early return statement handling in function calls - #387
Open
DeveloperC286 wants to merge 1 commit into
Open
fix: early return statement handling in function calls#387DeveloperC286 wants to merge 1 commit into
DeveloperC286 wants to merge 1 commit into
Conversation
evaluate_call_expression returned evaluate_block's result verbatim, so a
function whose body used an explicit return handed an Object::Return back
to its caller instead of the returned value. The top level evaluate
unwraps, which hid the bug for a call in statement position, but one
level in it surfaced as a spurious error:
let a = fn() { return 5; }(); -> cannot assign an object of type RETURN
fn() { return 5; }() + 1; -> the + operator is not supported for RETURN
n * factorial(n - 1) -> type mismatch, INTEGER and RETURN
A return only unwinds as far as the function it is in, so the wrapper is
now stripped when the call completes. Propagation out of nested blocks
and out of a top level return is unchanged.
Adds call expression cases 9 to 14 covering assignment, infix operands,
recursion, a returned function, an early return and string operands, plus
an early_return.mk code sample, since the existing factorial.mk only uses
implicit returns. All 14 new evaluation and environment assertions fail
without the fix.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PYeGs22hkAMgsogBEd5Ced
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.
No description provided.