tc39/proposal-structs

Behavior of [[Get]] and [[Set]] not specified

waldemarhorwat opened this issue · 7 comments

The proposal currently changes the signature of [[Get]] and [[Set]] in some but not all places in the spec which makes the spec self-inconsistent. I can't tell what the intended behavior of [[Get]] and [[Set]] calls is in the unchanged places.

syg commented

For the unsafe blocks? The intention is that the default value to the unsafe parameter is false. @rbuckton to confirm.

Edit: that is, the intention is that the behavior of existing [[Get]] and [[Set]] calls in the spec today are unchanged.

The intent is that [[Get]] and [[Set]] maintain their current behavior. I did attempt to cover all cases of [[Get]] and [[Set]] in the spec, though it does look like I missed a description for the parameter and its meaning in "6.1.7 The Object Type". I do have it specified for ordinary objects, Arguments exotic objects, TypedArray exotic objects, module namespace exotic objects, and proxies. Is there anywhere else I missed, or just in 6.1.7?

Or do you mean invocations of [[Get]]/[[Set]]? If so yes, there are a number of those that are not included as of yet, but the expectation is that false would be passed. This would be addressed more thoroughly in the final spec draft prior to Stage 2.7/3.

Sorry, didn't mean to close this.

Yes, I meant invocations of [[Get]] and [[Set]]. I couldn't tell what was intended there.

For now, I can add a NOTE to indicate the intention.

I've added the following note in #40 to address these call sites:

Image

Given the entrance criteria in the process document, this should hopefully be acceptable for Stage 2.