Summary
<key> in <ClassRef> reports false for a class's own static data properties
and for "prototype".
Repro
class K { static s = 1; m() {} }
console.log("s" in K); // node: true perry: false
console.log("prototype" in K); // node: true perry: false
Notes
Pre-existing (reproduces on main). A class used as a value is INT32-tagged; the
class-ref arm in js_object_has_property checks CLASS_STATIC_SYMBOLS for
symbol keys but has no string-key path for CLASS_DYNAMIC_PROPS / static data
fields (the key_val.is_string() branch is a no-op) and returns false.
Separate from the Object.create in fix (#6145).
Summary
<key> in <ClassRef>reportsfalsefor a class's own static data propertiesand for
"prototype".Repro
Notes
Pre-existing (reproduces on main). A class used as a value is INT32-tagged; the
class-ref arm in
js_object_has_propertychecksCLASS_STATIC_SYMBOLSforsymbol keys but has no string-key path for
CLASS_DYNAMIC_PROPS/ static datafields (the
key_val.is_string()branch is a no-op) and returnsfalse.Separate from the Object.create
infix (#6145).