#[repr(C)]pub struct ObjectTypeProperty<'gc> {
pub metadata: NodeMetadata<'gc>,
pub key: &'gc Node<'gc>,
pub value: &'gc Node<'gc>,
pub method: Cell<bool>,
pub optional: Cell<bool>,
pub static: Cell<bool>,
pub proto: Cell<bool>,
pub variance: Option<&'gc Node<'gc>>,
pub kind: Cell<NodeLabel>,
}Expand description
The ObjectTypeProperty AST node.
Fields§
§metadata: NodeMetadata<'gc>Source range, debug location, paren count, and node id.
key: &'gc Node<'gc>ESTree key property.
value: &'gc Node<'gc>ESTree value property.
method: Cell<bool>ESTree method property.
optional: Cell<bool>ESTree optional property.
static: Cell<bool>ESTree static property.
proto: Cell<bool>ESTree proto property.
variance: Option<&'gc Node<'gc>>ESTree variance property.
kind: Cell<NodeLabel>ESTree kind property.
Implementations§
Source§impl<'gc> ObjectTypeProperty<'gc>
impl<'gc> ObjectTypeProperty<'gc>
Sourcepub fn new(
metadata: NodeMetadata<'gc>,
key: &'gc Node<'gc>,
value: &'gc Node<'gc>,
method: bool,
optional: bool,
static: bool,
proto: bool,
variance: Option<&'gc Node<'gc>>,
kind: NodeLabel,
) -> Self
pub fn new( metadata: NodeMetadata<'gc>, key: &'gc Node<'gc>, value: &'gc Node<'gc>, method: bool, optional: bool, static: bool, proto: bool, variance: Option<&'gc Node<'gc>>, kind: NodeLabel, ) -> Self
Build ObjectTypeProperty from its metadata and ESTree.def fields.
Sourcepub fn kind_str<'a>(&self, gc: &'a GCLock<'_, '_>) -> &'a str
pub fn kind_str<'a>(&self, gc: &'a GCLock<'_, '_>) -> &'a str
The kind label as UTF-8 text.
Label fields hold identifier names, operators, keyword-like kinds and raw source spans. An identifier cannot contain an unpaired surrogate — the lexer rejects one with a dedicated diagnostic — and the remaining labels are literal source text, so in practice the bytes are already valid UTF-8 and this borrows them directly, allocating nothing.
A label that is nevertheless unrepresentable, which realistically means
a hand-built AST rather than a parsed one, has each unpaired surrogate
rendered as a single U+FFFD instead of being reported. Only an unpaired
surrogate is affected: a WTF-8 surrogate pair is folded back into the
character it encodes, so a "😀" label comes out intact.
Use GCLock::bytes for the exact
bytes, or
GCLock::try_bytes_str to
detect the substitution. The returned &str borrows from gc, not from
self.