fixed the Friendly Error message issue in p5.js where error stack tra… #8246
+25
−9
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.
The Problem (Issue #8212)
When using functions like
createVector(10, NaN)orfloat()incorrectly, the Friendly Error message would point to the line in the p5.js library file that executes the error message, rather than the line in the user's sketch that caused the error.This made debugging difficult for users.
Root Cause
In
validate_params.js, the code used a hardcoded stack frame indexparsed[3]to extract the location of the error.This assumed a fixed call stack depth, which didn't account for errors originating from within p5.js library functions.
Typical Stack Trace
_friendlyParamError_friendlyParamErroritself_validateParameterscreateVector,float) ← was pointing hereThe Fix
Modified
validate_params.js(lines 608–672) to:parsed[3]if no user frame is foundThis approach mirrors the logic already used in the
processStack()function infes_core.jsfor handling global errors.Testing
The fix can be tested with the examples from the bug report: