Example #1
0
        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");
        }