12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- using Jint.Native;
- namespace Jint.Runtime.Descriptors;
- public sealed class GetSetPropertyDescriptor : PropertyDescriptor
- {
- private JsValue? _get;
- private JsValue? _set;
- public GetSetPropertyDescriptor(JsValue? get, JsValue? set, bool? enumerable = null, bool? configurable = null)
- : base(null, writable: null, enumerable: enumerable, configurable: configurable)
- {
- _flags |= PropertyFlag.NonData;
- _get = get;
- _set = set;
- }
- internal GetSetPropertyDescriptor(JsValue? get, JsValue? set, PropertyFlag flags)
- : base(null, flags)
- {
- _flags |= PropertyFlag.NonData;
- _flags &= ~PropertyFlag.WritableSet;
- _flags &= ~PropertyFlag.Writable;
- _get = get;
- _set = set;
- }
- public GetSetPropertyDescriptor(PropertyDescriptor descriptor) : base(descriptor)
- {
- _flags |= PropertyFlag.NonData;
- _flags &= ~PropertyFlag.WritableSet;
- _flags &= ~PropertyFlag.Writable;
- _get = descriptor.Get;
- _set = descriptor.Set;
- }
- public override JsValue? Get => _get;
- public override JsValue? Set => _set;
- internal void SetGet(JsValue getter)
- {
- _get = getter;
- }
- internal void SetSet(JsValue setter)
- {
- _set = setter;
- }
- internal sealed class ThrowerPropertyDescriptor : PropertyDescriptor
- {
- private readonly Engine _engine;
- private JsValue? _thrower;
- public ThrowerPropertyDescriptor(Engine engine, PropertyFlag flags)
- : base(flags | PropertyFlag.CustomJsValue)
- {
- _flags |= PropertyFlag.NonData;
- _engine = engine;
- }
- public override JsValue Get => _thrower ??= _engine.Realm.Intrinsics.ThrowTypeError;
- public override JsValue Set => _thrower ??= _engine.Realm.Intrinsics.ThrowTypeError;
- protected internal override JsValue? CustomValue
- {
- set => Throw.InvalidOperationException("making changes to throw type error property's descriptor is not allowed");
- }
- }
- }
|