Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Proxy Feature Progress Tracking #3

Closed
IgnoredAmbience opened this issue Nov 17, 2016 · 5 comments
Closed

Proxy Feature Progress Tracking #3

IgnoredAmbience opened this issue Nov 17, 2016 · 5 comments
Assignees
Labels
buildsystem Makefiles, packaging, deployment, and similar concerns. feature generator Issues with the ocaml to js generator and ppx extensions jsexplain syntax Discussion regarding syntax for jsexplain to use. jsref Tasks impacting jsref design and codebase. major refactor testing Cross-cutting testing concerns.

Comments

@IgnoredAmbience
Copy link
Member

IgnoredAmbience commented Nov 17, 2016

Checklist of items todo:

  • Create new object internal slots
  • Create types for new object internal functions
  • Implement/check existing implementation of spec functions referenced by new internal functions
    • OrdinaryGetPrototypeOf(O)
    • OrdinarySetPrototypeOf(O,V)
    • OrdinaryIsExtensible(O)
    • OrdinaryPreventExtensions(O)
    • OrdinaryHasProperty(O,P)
    • OrdinaryOwnPropertyKeys(O) correct key ordering not yet implemented
      • EnumerableOwnPropertyNames
        • Object.keys
      • ObjectDefineProperties
        • Object.defineProperties
    • Type(handler) special-cased due to type safety of OCaml (and implemented)
    • IsCallable(argument)
    • IsConstructable(argument)
    • GetV
    • GetMethod(handler, "getPrototypeOf")
    • Call(trap, handler, <<target>>)
    • Construct(...)
    • IsExtensible(target)
    • SameValue(x, y)
    • SameValueNonNumber(x, y)
    • ToBoolean(x)
    • Get(O,P)
    • HasProperty(O,P)
    • ToPropertyDescriptor(x)
    • CompletePropertyDescriptor(x)
    • IsCompatiblePropertyDescriptor(x, y, z)
    • ValidateAndApplyPropertyDescriptor(O,P,x,y,z)
    • OrdinaryDefineOwnProperty(O, P, Desc)
    • OrdinaryGetOwnProperty(O, P)
    • FromPropertyDescriptor(x)
    • IsPropertyKey(P)
    • IsDataDescriptor(D)
    • IsAccessorDescriptor(D)
    • CreateListFromArrayLike(A, <<String, Symbol>>)
    • CreateArrayFromList(L)
    • OrdinarySet(O,P,V,Receiver)
    • CreateDataProperty(O,P,V)
    • PutValue(V,W)
    • Set(O,P,V,Throw)
      • References
        • GetBase
        • GetReferencedName
        • IsStrictReference
        • HasPrimitiveBase
        • IsPropertyReference
        • IsUnresolvableReference
        • IsSuperReference
        • GetValue
        • GetThisValue
      • Object Environment records
        • GetBindingValue
        • SetMutableBinding
    • OrdinaryGet(O,P,Receiver)
  • Implement dispatchers to correct variant of Object internal functions (compatibility wrapper to dispatch between ES5/ES6 spec calling conventions)
    • [[GetPrototypeOf]]
    • [[SetPrototypeOf]]
    • [[IsExtensible]]
    • [[PreventExtensions]]
    • [[GetOwnProperty]]
    • [[DefineOwnProperty]]
    • [[HasProperty]]
    • [[Get]]
    • [[Set]]
    • [[Delete]]
    • [[OwnPropertyKeys]]
    • [[Call]]
    • [[Construct]]
  • Implement new/Update existing Ordinary Object internal functions
    • [[GetOwnProperty]]
    • [[DefineOwnProperty]]
    • [[HasProperty]]
    • [[Get]]
    • [[Delete]]
    • [[GetPrototypeOf]] (new accessor to [[Prototype]] internal property)
    • [[SetPrototypeOf]] (new accessor to [[Prototype]] internal property)
    • [[IsExtensible]] (new accessor to [[Extensible]] internal property)
    • [[PreventExtensions]] (new accessor to [[Extensible]] internal property)
    • [[Set]] (renamed from [[Put]]??)
    • [[OwnPropertyKeys]] (implemented, but using stubbed OrdinaryOwnPropertyKeys)
  • Implement handlers for Proxy Object internal functions
    • [[GetPrototypeOf]]
    • [[SetPrototypeOf]]
    • [[IsExtensible]]
    • [[PreventExtensions]]
    • [[GetOwnProperty]]
    • [[DefineOwnProperty]]
    • [[HasProperty]]
    • [[Get]]
    • [[Set]]
    • [[Delete]]
    • [[OwnPropertyKeys]]
    • [[Call]]
    • [[Construct]]
  • Rehook existing ES5 methods to use new ES7 constructs
    • Object.preventExtensions(O)
    • Object.isExtensible(O)
    • Object.seal(O)
    • Object.setPrototypeOf
    • Object.isSealed
    • Object.isFrozen
    • Object.freeze
    • [[GetPrototypeOf]]
      • Object.getPrototypeOf(O)
      • Object.prototype.isPrototypeOf(v)
      • Function [[HasInstance]]
      • Array.prototype.sort
    • [[SetPrototypeOf]]
    • [[IsExtensible]]
    • [[PreventExtensions]]
    • [[GetOwnProperty]]
    • [[DefineOwnProperty]]
    • [[HasProperty]]
    • [[Get]]
    • [[Set]]
    • [[Delete]]
    • [[OwnPropertyKeys]]
      • Object.defineProperties (via ObjectDefineProperties)
      • Object.keys (via EnumerableOwnPropertyNames)
    • [[Call]]
    • [[Construct]]
  • Miscellaneous ES6/7 changes as required (to be listed)
  • Proxy global object
    • Proxy constructor
    • Proxy.revocable
      • Proxy revocation function constructor (26.2.2.1)
      • Proxy revocation function body
  • Install Proxy constructor/functions to heap
  • Final bugfixing of jsjsref
  • Testing against modern test262
    • [[GetOwnProperty]] (ordinary objects)
    • [[DefineOwnProperty]] (ordinary objects)
@IgnoredAmbience IgnoredAmbience self-assigned this Nov 17, 2016
@IgnoredAmbience
Copy link
Member Author

See also tc39/ecma262#1030

@IgnoredAmbience IgnoredAmbience added jsexplain syntax Discussion regarding syntax for jsexplain to use. generator Issues with the ocaml to js generator and ppx extensions major refactor testing Cross-cutting testing concerns. feature buildsystem Makefiles, packaging, deployment, and similar concerns. jsref Tasks impacting jsref design and codebase. labels Jul 3, 2018
@IgnoredAmbience
Copy link
Member Author

IgnoredAmbience commented Jul 19, 2018

As of 3fe79d4 all Proxy tests are passing or skipped due to not implemented features. This set of features needs to be checked and refined.
Most obvious next step will be to implement the Reflect standard library.
Missing features that cause skips:

  • Symbol
  • cross-realm
  • Reflect.*
  • Object.create
  • Object.getOwnPropertyName
  • key iteration

Correction: 1 failure due to a Coq_result_impossible 😨

@IgnoredAmbience
Copy link
Member Author

As of 052a662 all Proxy tests are passing, except for ones skipped due to unimplemented features:

  • Symbol
  • cross-realm
  • Object.create
  • anything involving property iteration or ordering
  • [[Construct]] where O and newTarget differ (due to classes)
  • new.target

Reflect has now been implemented and fully tested as working.

A few tests that use new.target will not be skipped until tc39/test262#1648 lands and we update the test262 submodule.

@brabalan
Copy link
Member

I think we should merge this to master.

@IgnoredAmbience
Copy link
Member Author

Remaining incomplete features (property enumeration order) are now tracked in #28.

barockobamo pushed a commit that referenced this issue Oct 1, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
buildsystem Makefiles, packaging, deployment, and similar concerns. feature generator Issues with the ocaml to js generator and ppx extensions jsexplain syntax Discussion regarding syntax for jsexplain to use. jsref Tasks impacting jsref design and codebase. major refactor testing Cross-cutting testing concerns.
Projects
None yet
Development

No branches or pull requests

2 participants