// Copyright 2019 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

namespace boolean {
transitioning macro ThisBooleanValue(implicit context: Context)(
    receiver: JSAny, method: constexpr string): Boolean {
  return UnsafeCast<Boolean>(
      ToThisValue(receiver, PrimitiveType::kBoolean, method));
}

javascript builtin
BooleanConstructor(
    js-implicit context: NativeContext, receiver: JSAny, newTarget: JSAny,
    target: JSFunction)(...arguments): JSAny {
  const value = SelectBooleanConstant(ToBoolean(arguments[0]));

  if (newTarget == Undefined) {
    return value;
  }

  const map = GetDerivedMap(target, UnsafeCast<JSReceiver>(newTarget));

  const obj =
      UnsafeCast<JSPrimitiveWrapper>(AllocateFastOrSlowJSObjectFromMap(map));
  obj.value = value;
  return obj;
}

// ES #sec-boolean.prototype.tostring
transitioning javascript builtin BooleanPrototypeToString(
    js-implicit context: NativeContext, receiver: JSAny)(): JSAny {
  // 1. Let b be ? thisBooleanValue(this value).
  const b = ThisBooleanValue(receiver, 'Boolean.prototype.toString');
  // 2. If b is true, return "true"; else return "false".
  return b.to_string;
}

// ES #sec-boolean.prototype.valueof
transitioning javascript builtin BooleanPrototypeValueOf(
    js-implicit context: NativeContext, receiver: JSAny)(): JSAny {
  // 1. Return ? thisBooleanValue(this value).
  return ThisBooleanValue(receiver, 'Boolean.prototype.valueOf');
}
}
