diff --git a/core/src/avm2/function.rs b/core/src/avm2/function.rs index 293271a5e..8746a0198 100644 --- a/core/src/avm2/function.rs +++ b/core/src/avm2/function.rs @@ -114,6 +114,10 @@ impl<'gc> TObject<'gc> for FunctionObject<'gc> { .set_property(name, value, avm, context) } + fn has_property(self, name: &QName) -> bool { + self.0.read().base.has_property(name) + } + fn as_ptr(&self) -> *const ObjectPtr { self.0.as_ptr() as *const ObjectPtr } diff --git a/core/src/avm2/object.rs b/core/src/avm2/object.rs index 6ab7c6d2e..4227ff999 100644 --- a/core/src/avm2/object.rs +++ b/core/src/avm2/object.rs @@ -65,9 +65,7 @@ pub trait TObject<'gc>: 'gc + Collect + Debug + Into> + Clone + Copy } /// Indicates whether or not a property exists on an object. - fn has_property(self, _name: &QName) -> bool { - false - } + fn has_property(self, _name: &QName) -> bool; /// Indicates whether or not a property exists on an object and is not part /// of the prototype chain. diff --git a/core/src/avm2/script_object.rs b/core/src/avm2/script_object.rs index 8ebf24d88..f6f4845a1 100644 --- a/core/src/avm2/script_object.rs +++ b/core/src/avm2/script_object.rs @@ -44,6 +44,10 @@ impl<'gc> TObject<'gc> for ScriptObject<'gc> { .set_property(name, value, avm, context) } + fn has_property(self, name: &QName) -> bool { + self.0.read().has_property(name) + } + fn as_ptr(&self) -> *const ObjectPtr { self.0.as_ptr() as *const ObjectPtr } @@ -91,4 +95,8 @@ impl<'gc> ScriptObjectData<'gc> { Ok(()) } + + pub fn has_property(&self, name: &QName) -> bool { + self.values.get(name).is_some() + } }