JsSymbol.cs 986 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. using System.Runtime.CompilerServices;
  2. using Jint.Runtime;
  3. namespace Jint.Native;
  4. public sealed class JsSymbol : JsValue, IEquatable<JsSymbol>
  5. {
  6. internal readonly JsValue _value;
  7. internal JsSymbol(string value) : this(new JsString(value))
  8. {
  9. }
  10. internal JsSymbol(JsValue value) : base(Types.Symbol)
  11. {
  12. _value = value;
  13. }
  14. public override object ToObject()
  15. {
  16. return _value;
  17. }
  18. /// <summary>
  19. /// https://tc39.es/ecma262/#sec-symboldescriptivestring
  20. /// </summary>
  21. public override string ToString()
  22. {
  23. var value = _value.IsUndefined() ? "" : _value.AsString();
  24. return "Symbol(" + value + ")";
  25. }
  26. public override bool Equals(JsValue? obj)
  27. {
  28. return Equals(obj as JsSymbol);
  29. }
  30. public bool Equals(JsSymbol? other)
  31. {
  32. return ReferenceEquals(this, other);
  33. }
  34. public override int GetHashCode()
  35. {
  36. return RuntimeHelpers.GetHashCode(this);
  37. }
  38. }