summaryrefslogtreecommitdiffstats
path: root/js/src/builtin/Error.js
blob: a8633a0a53b0ccb4c70a3757c9de7e6032cb523f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

/* ES6 20140718 draft 19.5.3.4. */
function ErrorToString() {
  /* Steps 1-2. */
  var obj = this;
  if (!IsObject(obj)) {
    ThrowTypeError(JSMSG_INCOMPATIBLE_PROTO, "Error", "toString", "value");
  }

  /* Steps 3-5. */
  var name = obj.name;
  name = name === undefined ? "Error" : ToString(name);

  /* Steps 6-8. */
  var msg = obj.message;
  msg = msg === undefined ? "" : ToString(msg);

  /* Step 9. */
  if (name === "") {
    return msg;
  }

  /* Step 10. */
  if (msg === "") {
    return name;
  }

  /* Step 11. */
  return name + ": " + msg;
}

function ErrorToStringWithTrailingNewline() {
  return FUN_APPLY(ErrorToString, this, []) + "\n";
}