This repository was archived by the owner on Mar 29, 2024. It is now read-only.
Fix Template::Set() #26
Merged
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.
Template::Set()
property to set must be defined either as a primitive value, or a template. Before that property value was filtered only by argument type (V8\Data
) which also let objects in, which caused segfault/abort from v8 internals.During the fix it came up that
V8\Value
was used as a replacement for javascriptundefined
value, however, from ECMA and V8 perspective it's not correct asundefened
should be primitive and objects should not. So whole values inheritance chain had to be fixed: nowV8\Value
,V8\PrimitiveValue
andV8\NameValue
are declared as abstract and MUST NOT be instantiated in userland and their usage should be type hinting and type checking only.Changes list that affect API:
*
MakeV8\Value
,V8\PrimitiveValue
andV8\NameValue
abstract;undefined
value -V8UndefenedValue
;*
- BC-breaking or potentially BC-breaking changes*