facebookarchive/prepack

Review/enforce possible values / types of tracked object properties

Open

#1.124 geöffnet am 1. Nov. 2017

Auf GitHub ansehen
 (1 Kommentar) (0 Reaktionen) (0 zugewiesene Personen)JavaScript (520 Forks)batch import
bootcampeddesign neededhelp wantedlevel 3 (medium)test needed

Repository-Metriken

Stars
 (14.268 Stars)
PR-Merge-Metriken
 (Keine gemergten PRs in 30 T)

Beschreibung

In ObjectValue.js, there's a list of trackedPropertyNames.

Tracked objects must be void or a (subtype of a) Value. After state joins, an AbstractValue may appear (encoding a conditional expression), or possibly other Value kinds due to simplification rules. Maybe there's some special logic in place for arrays (otherwise, how does $MapData and $SetData and $WeakMapData and $WeakSetData work as tracked objects?)

We should...

  • Document the actual requirements where trackedPropertyNames is defined
  • Consider including type information in trackedPropertyNames and issuing type invariant checks as part of the property injection in setupTrackedPropertyAccessors.
  • Manually review all static Flow types of tracked properties to check if they conform

Contributor Guide