archives

« Bugzilla Issues Index

#3427 — Infeasible semantic rules of ES5


Created attachment 75
Quick explanation why each semantic rules are infeasible

I think that the following semantic rules are not feasible to reach.

- 8.7.2 PutValue (V, W) - [[Put]], Step 4.a
- 8.7.2 PutValue (V, W) - [[Put]], Step 4.b
- 10.2.1.1.4 GetBindingValue(N,S) - Step 3.a
- 10.2.1.1.5 DeleteBinding (N) - Step 2
- 10.2.1.2.4 GetBindingValue(N,S) - Step 4.a
- 10.6 Arguments Object - [[DefineOwnProperty]], Step 4.a, else-branch

I attached quick explanations why they are infeasible for each cases.


I found these infeasible semantic rules when systematically measuring test coverage of test262. I found several missing semantic rules that are not covered by test262, and attempted to manually write test programs for each cases, but failed to find tests for the above cases. For the other cases, I succeeded in finding tests, which already reported in Bug 3426:
https://bugs.ecmascript.org/show_bug.cgi?id=3426

For more details, please refer to the following page:
https://github.com/kframework/javascript-semantics/blob/master/test262-coverage/README.md


Thanks,
Daejun


thanks, nice analysis.

I checked these against the ES6 spec. Mostly they have already been taken care of via refactoring that has taken place since ES5.1.

Also, the existence of proxies means that object environment records are less predicable.

But I did change the hasBinding test in declarative binding record DeleteBinding into an assertion.


Seems fixed.