private void WritePropertyValue(TextWriter writer, Stack <RuntimeObject> stack, EcmaValue value) { switch (value.Type) { case EcmaValueType.Null: writer.Write("null"); break; case EcmaValueType.Boolean: writer.Write(value.ToBoolean() ? "true" : "false"); break; case EcmaValueType.Number: writer.Write(value.IsFinite ? value.ToString() : "null"); break; case EcmaValueType.String: WriteString(writer, value.ToString()); break; case EcmaValueType.Object: if (!value.IsCallable) { if (EcmaArray.IsArray(value)) { SerializeJsonArray(writer, stack, value.ToObject()); } else { SerializeJsonObject(writer, stack, value.ToObject()); } } break; } }
public static EcmaValue ToBigInt(this EcmaValue value) { value = value.ToPrimitive(EcmaPreferredPrimitiveType.Number); switch (value.Type) { case EcmaValueType.Undefined: case EcmaValueType.Null: case EcmaValueType.Number: case EcmaValueType.Symbol: throw new EcmaTypeErrorException(InternalString.Error.NotConvertibleToBigInt, value); case EcmaValueType.Boolean: return(value.ToBoolean() ? value1n : value0n); case EcmaValueType.BigInt: return(value); case EcmaValueType.String: return(ToBigInt(value.ToStringOrThrow())); } throw new ArgumentException("Unknown value type", "value"); }