MIRROR: javascript for ๐Ÿœ's, a tiny runtime with big ambitions
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

implement Promise.prototype.finally per ES spec

+1897 -57
+1469
ant.txt
··· 1 + es1/Array.js: OK 2 + es1/Array.length.assignment.js: OK 3 + es1/Array.length.js: OK 4 + es1/Array.prototype.constructor.js: OK 5 + es1/Array.prototype.join.generic.js: OK 6 + es1/Array.prototype.join.js: OK 7 + es1/Array.prototype.reverse.generic.js: OK 8 + es1/Array.prototype.reverse.js: OK 9 + es1/Array.prototype.sort.generic.js: OK 10 + es1/Array.prototype.sort.js: OK 11 + es1/Array.prototype.toString.js: OK 12 + es1/Boolean.js: OK 13 + es1/Boolean.prototype.constructor.js: OK 14 + es1/Boolean.prototype.toString.js: OK 15 + es1/Boolean.prototype.valueOf.js: OK 16 + es1/Date.diff.js: OK 17 + es1/Date.js: OK 18 + es1/Date.prototype.constructor.js: OK 19 + es1/Date.prototype.getDate.js: OK 20 + es1/Date.prototype.getDay.js: OK 21 + es1/Date.prototype.getFullYear.js: OK 22 + es1/Date.prototype.getHours.js: OK 23 + es1/Date.prototype.getMilliseconds.js: OK 24 + es1/Date.prototype.getMinutes.js: OK 25 + es1/Date.prototype.getMonth.js: OK 26 + es1/Date.prototype.getSeconds.js: OK 27 + es1/Date.prototype.getTimezoneOffset.js: OK 28 + es1/Date.prototype.getTime.js: OK 29 + es1/Date.prototype.getUTCDate.js: OK 30 + es1/Date.prototype.getUTCDay.js: OK 31 + es1/Date.prototype.getUTCFullYear.js: OK 32 + es1/Date.prototype.getUTCHours.js: OK 33 + es1/Date.prototype.getUTCMilliseconds.js: OK 34 + es1/Date.prototype.getUTCMinutes.js: OK 35 + es1/Date.prototype.getUTCMonth.js: OK 36 + es1/Date.prototype.getUTCSeconds.js: OK 37 + es1/Date.prototype.setDate.js: OK 38 + es1/Date.prototype.setFullYear.js: OK 39 + es1/Date.prototype.setHours.js: OK 40 + es1/Date.prototype.setMilliseconds.js: OK 41 + es1/Date.prototype.setMinutes.js: OK 42 + es1/Date.prototype.setMonth.js: OK 43 + es1/Date.prototype.setSeconds.js: OK 44 + es1/Date.prototype.setTime.js: OK 45 + es1/Date.prototype.setUTCDate.js: OK 46 + es1/Date.prototype.setUTCFullYear.js: OK 47 + es1/Date.prototype.setUTCHours.js: OK 48 + es1/Date.prototype.setUTCMilliseconds.js: OK 49 + es1/Date.prototype.setUTCMinutes.js: OK 50 + es1/Date.prototype.setUTCMonth.js: OK 51 + es1/Date.prototype.setUTCSeconds.js: OK 52 + es1/Date.prototype.toLocaleString.js: OK 53 + es1/Date.prototype.toString.js: OK 54 + es1/Date.prototype.toUTCString.js: OK 55 + es1/Date.prototype.valueOf.js: OK 56 + es1/Function.js: OK 57 + es1/Function.length.js: OK 58 + es1/Function.prototype.constructor.js: OK 59 + es1/Function.prototype.js: OK 60 + es1/Function.prototype.toString.js: OK 61 + es1/Math.E.js: OK 62 + es1/Math.LN2.js: OK 63 + es1/Math.LN10.js: OK 64 + es1/Math.LOG2E.js: OK 65 + es1/Math.LOG10E.js: OK 66 + es1/Math.PI.js: OK 67 + es1/Math.SQRT1_2.js: OK 68 + es1/Math.SQRT2.js: OK 69 + es1/Math.abs.js: OK 70 + es1/Math.acos.js: OK 71 + es1/Math.asin.js: OK 72 + es1/Math.atan2.js: OK 73 + es1/Math.atan.js: OK 74 + es1/Math.ceil.js: OK 75 + es1/Math.cos.js: OK 76 + es1/Math.exp.js: OK 77 + es1/Math.floor.js: OK 78 + es1/Math.log.js: OK 79 + es1/Math.max.js: OK 80 + es1/Math.min.js: OK 81 + es1/Math.pow.js: OK 82 + es1/Math.random.js: OK 83 + es1/Math.round.js: OK 84 + es1/Math.sin.js: OK 85 + es1/Math.sqrt.js: OK 86 + es1/Math.tan.js: OK 87 + es1/Number.MAX_VALUE.js: OK 88 + es1/Number.MIN_VALUE.js: OK 89 + es1/Number.NEGATIVE_INFINITY.js: OK 90 + es1/Number.NaN.js: OK 91 + es1/Number.POSITIVE_INFINITY.js: OK 92 + es1/Number.js: OK 93 + es1/Number.prototype.constructor.js: OK 94 + es1/Number.prototype.toString.js: OK 95 + es1/Number.prototype.valueOf.js: OK 96 + es1/Object.js: OK 97 + es1/Object.prototype.constructor.js: OK 98 + es1/Object.prototype.toString.js: OK 99 + es1/Object.prototype.valueOf.js: OK 100 + es1/String.fromCharCode.js: OK 101 + es1/String.generics.js: OK 102 + es1/String.js: OK 103 + es1/String.length.js: OK 104 + es1/String.prototype.charAt.js: OK 105 + es1/String.prototype.charCodeAt.js: OK 106 + es1/String.prototype.constructor.js: OK 107 + es1/String.prototype.indexOf.js: OK 108 + es1/String.prototype.lastIndexOf.js: OK 109 + es1/String.prototype.split.js: OK 110 + es1/String.prototype.substring.js: OK 111 + es1/String.prototype.toLowerCase.js: OK 112 + es1/String.prototype.toString.js: OK 113 + es1/String.prototype.toUpperCase.js: OK 114 + es1/String.prototype.valueOf.js: OK 115 + es1/annex-b.Date.prototype.getYear.js: OK 116 + es1/annex-b.Date.prototype.setYear.js: OK 117 + es1/annex-b.Date.prototype.toGMTString.js: OK 118 + es1/annex-b.global.escape.js: OK 119 + es1/annex-b.global.unescape.js: OK 120 + es1/annex-b.literals.octal.js: OK 121 + es1/annex-b.literals.string.octal.js: OK 122 + es1/arguments.callee.js: OK 123 + es1/arguments.js: OK 124 + es1/asi.eval.js: OK 125 + es1/asi.js: OK 126 + es1/assignment.bitwise.js: OK 127 + es1/assignment.js: OK 128 + es1/assignment.ltr.js: OK 129 + es1/assignment.unsigned-shift.js: OK 130 + es1/bitwise.binary.js: OK 131 + es1/bitwise.shifts.js: OK 132 + es1/bitwise.tilde.js: OK 133 + es1/bitwise.unsigned-shift.js: OK 134 + es1/break.js: OK 135 + es1/comma.js: OK 136 + es1/comments.js: OK 137 + es1/conditional.js: OK 138 + es1/continue.js: OK 139 + es1/conversions.ToBoolean.js: OK 140 + es1/conversions.ToInt32.js: OK 141 + es1/conversions.ToInteger.js: OK 142 + es1/conversions.ToNumber.js: OK 143 + es1/conversions.ToObject.js: OK 144 + es1/conversions.ToString.js: OK 145 + es1/conversions.ToUint32.js: OK 146 + es1/conversions.js: OK 147 + es1/equals.js: OK 148 + es1/eval.js: OK 149 + es1/for-in.js: OK 150 + es1/for.js: OK 151 + es1/functions.js: OK 152 + es1/global.Infinity.js: OK 153 + es1/global.NaN.js: OK 154 + es1/global.isFinite.js: OK 155 + es1/global.isNaN.js: OK 156 + es1/global.parseFloat.js: OK 157 + es1/global.parseInt.hex.js: OK 158 + es1/global.parseInt.js: OK 159 + es1/global.parseInt.radix.js: OK 160 + es1/literals.decimal.js: OK 161 + es1/literals.hex.js: OK 162 + es1/literals.string.escapes.js: OK 163 + es1/literals.string.hex.js: OK 164 + es1/literals.string.js: OK 165 + es1/literals.string.unicode.js: OK 166 + es1/logical.js: OK 167 + es1/new.typeof.js: OK 168 + es1/numbers.double.js: OK 169 + es1/numbers.fmod.js: OK 170 + es1/numbers.inf.js: OK 171 + es1/numbers.int.js: OK 172 + es1/numbers.nan.js: OK 173 + es1/postfix.decrement.js: OK 174 + es1/postfix.increment.js: OK 175 + es1/prefix.js: OK 176 + es1/relational.js: OK 177 + es1/return.js: OK 178 + es1/return.typeof.js: OK 179 + es1/this.js: OK 180 + es1/typeof.js: OK 181 + es1/typeof.null.js: OK 182 + es1/typeof.undeclared.js: OK 183 + es1/types.js: OK 184 + es1/unary.decrement.js: OK 185 + es1/unary.delete.js: OK 186 + es1/unary.delete.var.js: OK 187 + es1/unary.increment.js: OK 188 + es1/unary.minus.js: OK 189 + es1/unary.not.js: OK 190 + es1/unary.plus.js: OK 191 + es1/unary.plus.str.js: OK 192 + es1/unary.tilde.js: OK 193 + es1/var.js: OK 194 + es1/var.typeof.js: OK 195 + es1/void.js: OK 196 + es1/void.typeof.js: OK 197 + es1/while.js: OK 198 + es1/with.js: OK 199 + es3/Array.prototype.concat.js: OK 200 + es3/Array.prototype.pop.generic.js: OK 201 + es3/Array.prototype.pop.js: OK 202 + es3/Array.prototype.push.generic.js: OK 203 + es3/Array.prototype.push.js: OK 204 + es3/Array.prototype.shift.generic.js: OK 205 + es3/Array.prototype.shift.js: OK 206 + es3/Array.prototype.slice.generic.js: OK 207 + es3/Array.prototype.slice.js: OK 208 + es3/Array.prototype.splice.generic.js: OK 209 + es3/Array.prototype.splice.js: OK 210 + es3/Array.prototype.toLocaleString.js: OK 211 + es3/Array.prototype.unshift.generic.js: OK 212 + es3/Array.prototype.unshift.js: OK 213 + es3/Array.prototype.unshift.returns-new-length.js: OK 214 + es3/Date.prototype.toDateString.js: OK 215 + es3/Date.prototype.toLocaleDateString.js: OK 216 + es3/Date.prototype.toLocaleString.js: OK 217 + es3/Date.prototype.toLocaleTimeString.js: OK 218 + es3/Date.prototype.toTimeString.js: OK 219 + es3/Error.js: OK 220 + es3/Error.prototype.constructor.js: OK 221 + es3/Error.prototype.message.js: OK 222 + es3/Error.prototype.name.js: OK 223 + es3/Error.prototype.toString.js: OK 224 + es3/Function.prototype.apply.js: OK 225 + es3/Function.prototype.call.js: OK 226 + es3/Math.max.variadic.js: OK 227 + es3/Math.min.variadic.js: OK 228 + es3/Number.prototype.toExponential.edge-cases.js: OK 229 + es3/Number.prototype.toExponential.js: OK 230 + es3/Number.prototype.toExponential.rounding.js: OK 231 + es3/Number.prototype.toExponential.throws-infinity.js: OK 232 + es3/Number.prototype.toFixed.js: OK 233 + es3/Number.prototype.toLocaleString.js: OK 234 + es3/Number.prototype.toPrecision.js: OK 235 + es3/Object.prototype.hasOwnProperty.js: OK 236 + es3/Object.prototype.isPrototypeOf.js: OK 237 + es3/Object.prototype.propertyIsEnumerable.js: OK 238 + es3/Object.prototype.toLocaleString.js: OK 239 + es3/RegExp.global.js: OK 240 + es3/RegExp.ignoreCase.js: OK 241 + es3/RegExp.js: OK 242 + es3/RegExp.lastIndex.js: OK 243 + es3/RegExp.multiline.js: OK 244 + es3/RegExp.prototype.constructor.js: OK 245 + es3/RegExp.prototype.exec.js: OK 246 + es3/RegExp.prototype.test.js: OK 247 + es3/RegExp.prototype.toString.js: OK 248 + es3/RegExp.source.js: OK 249 + es3/String.prototype.concat.generic.js: OK 250 + es3/String.prototype.concat.js: OK 251 + es3/String.prototype.localeCompare.js: OK 252 + es3/String.prototype.match.generic.js: OK 253 + es3/String.prototype.match.js: OK 254 + es3/String.prototype.replace.capture.js: OK 255 + es3/String.prototype.replace.extra.js: OK 256 + es3/String.prototype.replace.generic.js: OK 257 + es3/String.prototype.replace.regex.js: OK 258 + es3/String.prototype.replace.str.js: OK 259 + es3/String.prototype.search.generic.js: OK 260 + es3/String.prototype.search.js: OK 261 + es3/String.prototype.search.str.js: OK 262 + es3/String.prototype.slice.generic.js: OK 263 + es3/String.prototype.slice.js: OK 264 + es3/String.prototype.split.bugs.js: OK 265 + es3/String.prototype.split.limit.js: OK 266 + es3/String.prototype.split.regex.js: OK 267 + es3/String.prototype.toLocaleLowerCase.js: OK 268 + es3/String.prototype.toLocaleUpperCase.js: OK 269 + es3/annex-b.String.prototype.substr.js: OK 270 + es3/do-while.js: OK 271 + es3/function-expressions.IIFE.js: OK 272 + es3/function-expressions.js: OK 273 + es3/global.EvalError.js: OK 274 + es3/global.RangeError.js: OK 275 + es3/global.RangeError.thrown.js: OK 276 + es3/global.ReferenceError.js: OK 277 + es3/global.ReferenceError.thrown.js: OK 278 + es3/global.SyntaxError.js: OK 279 + es3/global.SyntaxError.thrown.js: OK 280 + es3/global.TypeError.js: OK 281 + es3/global.TypeError.thrown.js: OK 282 + es3/global.URIError.js: OK 283 + es3/global.URIError.thrown.js: OK 284 + es3/global.decodeURIComponent.js: OK 285 + es3/global.decodeURI.js: OK 286 + es3/global.encodeURIComponent.js: OK 287 + es3/global.encodeURI.js: OK 288 + es3/global.undefined.js: OK 289 + es3/identifiers.unicode.js: OK 290 + es3/instanceof.js: OK 291 + es3/in.js: OK 292 + es3/labelled.break.js: OK 293 + es3/labelled.continue.js: OK 294 + es3/labelled.statements.js: OK 295 + es3/literals.array.elisions.js: OK 296 + es3/literals.array.js: OK 297 + es3/literals.array.trailing-comma.js: OK 298 + es3/literals.object.decimal.js: OK 299 + es3/literals.object.hex.js: OK 300 + es3/literals.object.int.js: OK 301 + es3/literals.object.js: OK 302 + es3/literals.object.str.js: OK 303 + es3/literals.object.unicode.js: OK 304 + es3/literals.regex.ambiguous.js: OK 305 + es3/literals.regex.empty.js: OK 306 + es3/literals.regex.js: OK 307 + es3/literals.string.esc-v.js: OK 308 + es3/nested-functions.eval.js: OK 309 + es3/nested-functions.js: OK 310 + es3/regex.backref.js: OK 311 + es3/regex.begin.js: OK 312 + es3/regex.bracket.esc-b.js: OK 313 + es3/regex.bracket.js: OK 314 + es3/regex.bracket.ranges.js: OK 315 + es3/regex.class.esc-d.js: OK 316 + es3/regex.class.esc-s.js: OK 317 + es3/regex.class.esc-w.js: OK 318 + es3/regex.disjunction.js: OK 319 + es3/regex.dot.js: OK 320 + es3/regex.end.js: OK 321 + es3/regex.escape.control.js: OK 322 + es3/regex.escape.hex.js: OK 323 + es3/regex.escape.js: OK 324 + es3/regex.escape.nul.js: OK 325 + es3/regex.escape.unicode.js: OK 326 + es3/regex.flag.global.js: OK 327 + es3/regex.flag.ignorecase.js: OK 328 + es3/regex.flag.multiline.js: OK 329 + es3/regex.group.js: OK 330 + es3/regex.lookahead.js: OK 331 + es3/regex.negative-lookahead.js: OK 332 + es3/regex.non-capturing-group.js: OK 333 + es3/regex.quantifier.exact.js: OK 334 + es3/regex.quantifier.maybe.js: OK 335 + es3/regex.quantifier.min.js: OK 336 + es3/regex.quantifier.plus.js: OK 337 + es3/regex.quantifier.range.js: OK 338 + es3/regex.quantifier.star.js: OK 339 + es3/regex.word-boundary.js: OK 340 + es3/source.line-terminators.js: OK 341 + es3/source.whitespace.js: OK 342 + es3/source.whitespace.unicode.js: OK 343 + es3/strict-equals.js: OK 344 + es3/switch.js: OK 345 + es3/try-catch-finally.js: OK 346 + es3/try-catch-throw.js: OK 347 + es5/Array.isArray.js: OK 348 + es5/Array.prototype.every.js: OK 349 + es5/Array.prototype.filter.js: OK 350 + es5/Array.prototype.forEach.js: OK 351 + es5/Array.prototype.indexOf.js: OK 352 + es5/Array.prototype.lastIndexOf.js: OK 353 + es5/Array.prototype.map.js: OK 354 + es5/Array.prototype.reduceRight.js: OK 355 + es5/Array.prototype.reduce.js: OK 356 + es5/Array.prototype.some.js: OK 357 + es5/Array.prototype.sort.TypeError.js: OK 358 + es5/Array.prototype.sort.undefined-comparefn.js: OK 359 + es5/Date.now.js: OK 360 + es5/Date.prototype.toISOString.js: OK 361 + es5/Date.prototype.toJSON.js: OK 362 + es5/Function.prototype-not-enumerable.js: OK 363 + es5/Function.prototype.apply.array-like.js: OK 364 + es5/Function.prototype.bind.js: OK 365 + es5/JSON.js: OK 366 + es5/JSON.parse.js: OK 367 + es5/JSON.parse.reviver.js: OK 368 + es5/JSON.stringify.js: OK 369 + es5/JSON.stringify.replacer.js: OK 370 + es5/JSON.stringify.space.js: OK 371 + es5/Object.create.js: OK 372 + es5/Object.defineProperties.js: OK 373 + es5/Object.defineProperty.js: OK 374 + es5/Object.freeze.js: OK 375 + es5/Object.getOwnPropertyDescriptor.js: OK 376 + es5/Object.getOwnPropertyNames.js: OK 377 + es5/Object.getPrototypeOf.js: OK 378 + es5/Object.isExtensible.js: OK 379 + es5/Object.isFrozen.js: OK 380 + es5/Object.isSealed.js: OK 381 + es5/Object.keys.js: OK 382 + es5/Object.preventExtensions.js: OK 383 + es5/Object.property-shadowing.js: OK 384 + es5/Object.seal.js: OK 385 + es5/String.indexing.js: OK 386 + es5/String.prototype.trim.js: OK 387 + es5/arguments.toStringTag.js: OK 388 + es5/debugger.js: OK 389 + es5/global.Infinity.immutable.js: OK 390 + es5/global.NaN.immutable.js: OK 391 + es5/global.parseInt.no-octal.js: OK 392 + es5/global.undefined.immutable.js: OK 393 + es5/literals.object.getters.js: OK 394 + es5/literals.object.setters.js: OK 395 + es5/literals.object.trailing-comma.js: OK 396 + es5/source.keyword-properties.js: OK 397 + es5/source.unreserved-words.js: OK 398 + es5/source.whitespace.bom.js: OK 399 + es5/source.zero-width-chars.js: OK 400 + es5/strict.eval-cannot-create-bindings.js: OK 401 + es5/strict.function-expr-with-matching-name.js: OK 402 + es5/strict.js: OK 403 + es5/strict.no-arguments-callee.js: OK 404 + es5/strict.no-arguments-caller.js: OK 405 + es5/strict.no-assignment-to-non-writable.js: OK 406 + es5/strict.no-assignment-to-unresolvable.js: OK 407 + es5/strict.no-delete-bindings.js: OK 408 + es5/strict.no-delete-non-configurable.js: OK 409 + es5/strict.no-duplicate-parameters.js: OK 410 + es5/strict.no-eval-or-arguments-assignment.js: OK 411 + es5/strict.no-eval-or-arguments-bindings.js: OK 412 + es5/strict.no-function-caller-or-arguments.js: OK 413 + es5/strict.no-octal-literals.js: OK 414 + es5/strict.no-with.js: OK 415 + es5/strict.reserved-words.js: OK 416 + es5/strict.this-primitive-not-coerced-in-accessors.js: OK 417 + es5/strict.this-primitive-not-coerced.js: OK 418 + es5/strict.this-undefined-in-function.js: OK 419 + es5/strict.unmapped-arguments.js: OK 420 + es5/this.thrown-function.js: OK 421 + kangax-es5/Array.isArray.js: OK 422 + kangax-es5/Array.prototype.every.js: OK 423 + kangax-es5/Array.prototype.filter.js: OK 424 + kangax-es5/Array.prototype.forEach.js: OK 425 + kangax-es5/Array.prototype.indexOf.js: OK 426 + kangax-es5/Array.prototype.lastIndexOf.js: OK 427 + kangax-es5/Array.prototype.map.js: OK 428 + kangax-es5/Array.prototype.reduceRight.js: OK 429 + kangax-es5/Array.prototype.reduce.js: OK 430 + kangax-es5/Array.prototype.some.js: OK 431 + kangax-es5/Array.prototype.sort.compareFn-type.js: OK 432 + kangax-es5/Array.prototype.sort.compareFn-undefined.js: OK 433 + kangax-es5/Array.prototype.unshift.return-count.js: OK 434 + kangax-es5/Date.now.js: OK 435 + kangax-es5/Date.prototype.toISOString.js: OK 436 + kangax-es5/Date.prototype.toJSON.js: OK 437 + kangax-es5/Function.prototype.bind.js: OK 438 + kangax-es5/JSON.js: OK 439 + kangax-es5/Number.prototype.toExponential.no-throw-edge-cases.js: OK 440 + kangax-es5/Number.prototype.toExponential.rounds-properly.js: OK 441 + kangax-es5/Number.prototype.toExponential.throws-infinity.js: OK 442 + kangax-es5/Object.create.js: OK 443 + kangax-es5/Object.defineProperties.js: OK 444 + kangax-es5/Object.defineProperty.js: OK 445 + kangax-es5/Object.freeze.js: OK 446 + kangax-es5/Object.getOwnPropertyDescriptor.js: OK 447 + kangax-es5/Object.getOwnPropertyNames.js: OK 448 + kangax-es5/Object.getPrototypeOf.js: OK 449 + kangax-es5/Object.isExtensible.js: OK 450 + kangax-es5/Object.isFrozen.js: OK 451 + kangax-es5/Object.isSealed.js: OK 452 + kangax-es5/Object.keys.js: OK 453 + kangax-es5/Object.preventExtensions.js: OK 454 + kangax-es5/Object.seal.js: OK 455 + kangax-es5/String.property-access.js: OK 456 + kangax-es5/String.prototype.split.js: OK 457 + kangax-es5/String.prototype.trim.js: OK 458 + kangax-es5/annex-b.String.prototype.substr.js: OK 459 + kangax-es5/immutable-globals.Infinity.js: OK 460 + kangax-es5/immutable-globals.NaN.js: OK 461 + kangax-es5/immutable-globals.undefined.js: OK 462 + kangax-es5/literals.getter-accessors.js: OK 463 + kangax-es5/literals.reserved-words-properties.js: OK 464 + kangax-es5/literals.setter-accessors.js: OK 465 + kangax-es5/literals.trailing-comma-array.js: OK 466 + kangax-es5/literals.trailing-comma-object.js: OK 467 + kangax-es5/misc.Arguments.toStringTag.js: OK 468 + kangax-es5/misc.Function.apply.array-likes.js: OK 469 + kangax-es5/misc.Function.prototype.non-enumerable.js: OK 470 + kangax-es5/misc.enumerable-shadow.js: OK 471 + kangax-es5/misc.parseInt.ignores-leading-zeros.js: OK 472 + kangax-es5/misc.thrown-functions-this.js: OK 473 + kangax-es5/misc.unreserved-words.js: OK 474 + kangax-es5/misc.zero-width-identifiers.js: OK 475 + kangax-es5/strict.arguments-callee-error.js: OK 476 + kangax-es5/strict.arguments-caller-error.js: OK 477 + kangax-es5/strict.arguments-unmapped.js: OK 478 + kangax-es5/strict.assignment-eval-arguments-error.js: OK 479 + kangax-es5/strict.assignment-non-writable-error.js: OK 480 + kangax-es5/strict.assignment-unresolvable-error.js: OK 481 + kangax-es5/strict.delete-bindings-error.js: OK 482 + kangax-es5/strict.delete-non-configurable-error.js: OK 483 + kangax-es5/strict.eval-arguments-bindings-error.js: OK 484 + kangax-es5/strict.eval-no-bindings.js: OK 485 + kangax-es5/strict.function-caller-arguments-error.js: OK 486 + kangax-es5/strict.function-expr-matching-name-arg.js: OK 487 + kangax-es5/strict.legacy-octal-error.js: OK 488 + kangax-es5/strict.repeated-params-error.js: OK 489 + kangax-es5/strict.reserved-words.js: OK 490 + kangax-es5/strict.this-not-coerced-accessors.js: OK 491 + kangax-es5/strict.this-not-coerced-methods.js: OK 492 + kangax-es5/strict.this-undefined.js: OK 493 + kangax-es5/strict.with-error.js: OK 494 + kangax-es6/Array.Symbol.species.js: failed 495 + kangax-es6/Array.from.array-like.js: failed 496 + kangax-es6/Array.from.generator.js: failed 497 + kangax-es6/Array.from.iterable-instance.js: failed 498 + kangax-es6/Array.from.iterable.js: failed 499 + kangax-es6/Array.from.iterator-closing.js: failed 500 + kangax-es6/Array.from.map.array-like.js: failed 501 + kangax-es6/Array.from.map.generator.js: failed 502 + kangax-es6/Array.from.map.iterable-instance.js: failed 503 + kangax-es6/Array.from.map.iterable.js: failed 504 + kangax-es6/Array.iterator-prototype-chain.js: failed 505 + kangax-es6/Array.of.js: OK 506 + kangax-es6/Array.prototype.Symbol.iterator.js: OK 507 + kangax-es6/Array.prototype.Symbol.unscopables.js: failed 508 + kangax-es6/Array.prototype.copyWithin.js: OK 509 + kangax-es6/Array.prototype.entries.js: OK 510 + kangax-es6/Array.prototype.fill.js: OK 511 + kangax-es6/Array.prototype.findIndex.js: OK 512 + kangax-es6/Array.prototype.find.js: OK 513 + kangax-es6/Array.prototype.keys.js: OK 514 + kangax-es6/Array.prototype.splice.js: failed 515 + kangax-es6/Array.prototype.values.js: OK 516 + kangax-es6/Date.prototype.Symbol.toPrimitive.js: failed 517 + kangax-es6/Function.name.accessor.js: failed 518 + kangax-es6/Function.name.bound.js: failed 519 + kangax-es6/Function.name.class-expression.js: OK 520 + kangax-es6/Function.name.class-object-method.js: failed 521 + kangax-es6/Function.name.class-prototype.js: failed 522 + kangax-es6/Function.name.class-statement.js: OK 523 + kangax-es6/Function.name.class-static.js: failed 524 + kangax-es6/Function.name.class-variable.js: failed 525 + kangax-es6/Function.name.configurable.js: failed 526 + kangax-es6/Function.name.expression.js: OK 527 + kangax-es6/Function.name.new-Function.js: failed 528 + kangax-es6/Function.name.object-method.js: OK 529 + kangax-es6/Function.name.shorthand.js: OK 530 + kangax-es6/Function.name.shorthand.no-lexical.js: OK 531 + kangax-es6/Function.name.statement.js: OK 532 + kangax-es6/Function.name.symbol-keyed.js: failed 533 + kangax-es6/Function.name.variable.js: failed 534 + kangax-es6/Map.Symbol.species.js: failed 535 + kangax-es6/Map.constructor-accepts-null.js: OK 536 + kangax-es6/Map.constructor-arguments.js: failed 537 + kangax-es6/Map.constructor-invokes-set.js: failed 538 + kangax-es6/Map.constructor-requires-new.js: failed 539 + kangax-es6/Map.iterator-closing.js: failed 540 + kangax-es6/Map.iterator-prototype-chain.js: failed 541 + kangax-es6/Map.js: OK 542 + kangax-es6/Map.prototype-not-instance.js: failed 543 + kangax-es6/Map.prototype.Symbol.iterator.js: failed 544 + kangax-es6/Map.prototype.clear.js: OK 545 + kangax-es6/Map.prototype.delete.js: OK 546 + kangax-es6/Map.prototype.entries.js: OK 547 + kangax-es6/Map.prototype.forEach.js: failed 548 + kangax-es6/Map.prototype.keys.js: failed 549 + kangax-es6/Map.prototype.set-returns-this.js: OK 550 + kangax-es6/Map.prototype.size.js: failed 551 + kangax-es6/Map.prototype.values.js: failed 552 + kangax-es6/Map.zero-key.js: failed 553 + kangax-es6/Math.acosh.js: OK 554 + kangax-es6/Math.asinh.js: OK 555 + kangax-es6/Math.atanh.js: OK 556 + kangax-es6/Math.cbrt.js: OK 557 + kangax-es6/Math.clz32.js: OK 558 + kangax-es6/Math.cosh.js: OK 559 + kangax-es6/Math.expm1.js: OK 560 + kangax-es6/Math.fround.js: OK 561 + kangax-es6/Math.hypot.js: OK 562 + kangax-es6/Math.imul.js: OK 563 + kangax-es6/Math.log1p.js: OK 564 + kangax-es6/Math.log2.js: OK 565 + kangax-es6/Math.log10.js: OK 566 + kangax-es6/Math.sign.js: OK 567 + kangax-es6/Math.sinh.js: OK 568 + kangax-es6/Math.tanh.js: OK 569 + kangax-es6/Math.trunc.js: OK 570 + kangax-es6/Number.EPSILON.js: OK 571 + kangax-es6/Number.MAX_SAFE_INTEGER.js: OK 572 + kangax-es6/Number.MIN_SAFE_INTEGER.js: OK 573 + kangax-es6/Number.isFinite.js: OK 574 + kangax-es6/Number.isInteger.js: OK 575 + kangax-es6/Number.isNaN.js: OK 576 + kangax-es6/Number.isSafeInteger.js: OK 577 + kangax-es6/Number.parseFloat.js: failed 578 + kangax-es6/Number.parseInt.js: failed 579 + kangax-es6/Object.assign.js: OK 580 + kangax-es6/Object.getOwnPropertySymbols.js: failed 581 + kangax-es6/Object.is.js: failed 582 + kangax-es6/Object.setPrototypeOf.js: OK 583 + kangax-es6/Promise.Symbol.species.js: failed 584 + kangax-es6/Promise.all.iterable.js: failed 585 + kangax-es6/Promise.all.js: timeout 586 + kangax-es6/Promise.constructor-requires-new.js: OK 587 + kangax-es6/Promise.js: OK 588 + kangax-es6/Promise.prototype-not-instance.js: OK 589 + kangax-es6/Promise.race.iterable.js: failed 590 + kangax-es6/Promise.race.js: OK 591 + kangax-es6/Proxy.Array.isArray.js: failed 592 + kangax-es6/Proxy.JSON.stringify.js: failed 593 + kangax-es6/Proxy.constructor-requires-new.js: failed 594 + kangax-es6/Proxy.handler.apply.invariants.js: failed 595 + kangax-es6/Proxy.handler.apply.js: failed 596 + kangax-es6/Proxy.handler.construct.invariants.js: failed 597 + kangax-es6/Proxy.handler.construct.js: failed 598 + kangax-es6/Proxy.handler.defineProperty.invariants.js: failed 599 + kangax-es6/Proxy.handler.defineProperty.js: failed 600 + kangax-es6/Proxy.handler.deleteProperty.invariants.js: failed 601 + kangax-es6/Proxy.handler.deleteProperty.js: failed 602 + kangax-es6/Proxy.handler.getOwnPropertyDescriptor.invariants.js: failed 603 + kangax-es6/Proxy.handler.getOwnPropertyDescriptor.js: failed 604 + kangax-es6/Proxy.handler.getPrototypeOf.invariants.js: failed 605 + kangax-es6/Proxy.handler.getPrototypeOf.js: failed 606 + kangax-es6/Proxy.handler.get.instances.js: failed 607 + kangax-es6/Proxy.handler.get.invariants.js: failed 608 + kangax-es6/Proxy.handler.get.js: OK 609 + kangax-es6/Proxy.handler.has.instances.js: failed 610 + kangax-es6/Proxy.handler.has.invariants.js: failed 611 + kangax-es6/Proxy.handler.has.js: OK 612 + kangax-es6/Proxy.handler.isExtensible.invariants.js: failed 613 + kangax-es6/Proxy.handler.isExtensible.js: failed 614 + kangax-es6/Proxy.handler.ownKeys.invariants.js: failed 615 + kangax-es6/Proxy.handler.ownKeys.js: failed 616 + kangax-es6/Proxy.handler.preventExtensions.invariants.js: failed 617 + kangax-es6/Proxy.handler.preventExtensions.js: failed 618 + kangax-es6/Proxy.handler.setPrototypeOf.invariants.js: failed 619 + kangax-es6/Proxy.handler.setPrototypeOf.js: failed 620 + kangax-es6/Proxy.handler.set.instances.js: failed 621 + kangax-es6/Proxy.handler.set.invariants.js: failed 622 + kangax-es6/Proxy.handler.set.js: OK 623 + kangax-es6/Proxy.no-prototype.js: OK 624 + kangax-es6/Proxy.revocable.js: OK 625 + kangax-es6/Reflect.apply.js: failed 626 + kangax-es6/Reflect.construct.Array-subclassing.js: failed 627 + kangax-es6/Reflect.construct.Function-subclassing.js: failed 628 + kangax-es6/Reflect.construct.Promise-subclassing.js: failed 629 + kangax-es6/Reflect.construct.RegExp-subclassing.js: failed 630 + kangax-es6/Reflect.construct.js: OK 631 + kangax-es6/Reflect.construct.new-target.js: failed 632 + kangax-es6/Reflect.construct.third-argument.js: failed 633 + kangax-es6/Reflect.defineProperty.js: failed 634 + kangax-es6/Reflect.deleteProperty.js: failed 635 + kangax-es6/Reflect.getOwnPropertyDescriptor.js: OK 636 + kangax-es6/Reflect.getPrototypeOf.js: OK 637 + kangax-es6/Reflect.get.js: OK 638 + kangax-es6/Reflect.has.js: OK 639 + kangax-es6/Reflect.isExtensible.js: failed 640 + kangax-es6/Reflect.ownKeys.string.js: failed 641 + kangax-es6/Reflect.ownKeys.symbol.js: failed 642 + kangax-es6/Reflect.preventExtensions.js: OK 643 + kangax-es6/Reflect.setPrototypeOf.js: OK 644 + kangax-es6/Reflect.set.js: OK 645 + kangax-es6/RegExp.Symbol.species.js: failed 646 + kangax-es6/RegExp.prototype.Symbol.match.js: failed 647 + kangax-es6/RegExp.prototype.Symbol.replace.js: failed 648 + kangax-es6/RegExp.prototype.Symbol.search.js: failed 649 + kangax-es6/RegExp.prototype.Symbol.split.js: failed 650 + kangax-es6/RegExp.prototype.flags.js: failed 651 + kangax-es6/Set.Symbol.species.js: failed 652 + kangax-es6/Set.constructor-accepts-null.js: OK 653 + kangax-es6/Set.constructor-arguments.js: OK 654 + kangax-es6/Set.constructor-invokes-add.js: failed 655 + kangax-es6/Set.constructor-requires-new.js: failed 656 + kangax-es6/Set.iterator-closing.js: failed 657 + kangax-es6/Set.iterator-prototype-chain.js: failed 658 + kangax-es6/Set.js: OK 659 + kangax-es6/Set.prototype-not-instance.js: failed 660 + kangax-es6/Set.prototype.Symbol.iterator.js: failed 661 + kangax-es6/Set.prototype.add-returns-this.js: OK 662 + kangax-es6/Set.prototype.clear.js: OK 663 + kangax-es6/Set.prototype.delete.js: OK 664 + kangax-es6/Set.prototype.entries.js: failed 665 + kangax-es6/Set.prototype.forEach.js: failed 666 + kangax-es6/Set.prototype.keys.js: failed 667 + kangax-es6/Set.prototype.size.js: failed 668 + kangax-es6/Set.prototype.values.js: OK 669 + kangax-es6/Set.zero-key.js: failed 670 + kangax-es6/String.fromCodePoint.js: OK 671 + kangax-es6/String.iterator-prototype-chain.js: failed 672 + kangax-es6/String.prototype.Symbol.iterator.js: OK 673 + kangax-es6/String.prototype.codePointAt.js: failed 674 + kangax-es6/String.prototype.endsWith.js: OK 675 + kangax-es6/String.prototype.endsWith.throws-regex.js: failed 676 + kangax-es6/String.prototype.includes.js: OK 677 + kangax-es6/String.prototype.normalize.js: failed 678 + kangax-es6/String.prototype.repeat.js: OK 679 + kangax-es6/String.prototype.startsWith.js: OK 680 + kangax-es6/String.prototype.startsWith.throws-regex.js: failed 681 + kangax-es6/String.raw.js: failed 682 + kangax-es6/Symbol.JSON.stringify.object.js: failed 683 + kangax-es6/Symbol.JSON.stringify.primitive.js: failed 684 + kangax-es6/Symbol.Object.js: failed 685 + kangax-es6/Symbol.String.js: OK 686 + kangax-es6/Symbol.defineProperty.js: failed 687 + kangax-es6/Symbol.global-registry.js: OK 688 + kangax-es6/Symbol.hidden-keys.js: failed 689 + kangax-es6/Symbol.js: OK 690 + kangax-es6/Symbol.no-coerce.js: failed 691 + kangax-es6/Symbol.no-new.js: failed 692 + kangax-es6/Symbol.prototype.js: failed 693 + kangax-es6/Symbol.typeof.js: OK 694 + kangax-es6/WeakMap.accept-primitives.js: OK 695 + kangax-es6/WeakMap.constructor-accepts-null.js: OK 696 + kangax-es6/WeakMap.constructor-arguments.js: OK 697 + kangax-es6/WeakMap.constructor-invokes-set.js: failed 698 + kangax-es6/WeakMap.constructor-requires-new.js: failed 699 + kangax-es6/WeakMap.frozen-keys.js: OK 700 + kangax-es6/WeakMap.iterator-closing.js: failed 701 + kangax-es6/WeakMap.js: OK 702 + kangax-es6/WeakMap.no-clear.js: OK 703 + kangax-es6/WeakMap.prototype-not-instance.js: failed 704 + kangax-es6/WeakMap.prototype.delete.js: OK 705 + kangax-es6/WeakMap.prototype.set-returns-this.js: OK 706 + kangax-es6/WeakSet.accept-primitives.js: OK 707 + kangax-es6/WeakSet.constructor-accepts-null.js: OK 708 + kangax-es6/WeakSet.constructor-arguments.js: OK 709 + kangax-es6/WeakSet.constructor-invokes-add.js: failed 710 + kangax-es6/WeakSet.constructor-requires-new.js: failed 711 + kangax-es6/WeakSet.iterator-closing.js: failed 712 + kangax-es6/WeakSet.js: OK 713 + kangax-es6/WeakSet.no-clear.js: OK 714 + kangax-es6/WeakSet.prototype-not-instance.js: failed 715 + kangax-es6/WeakSet.prototype.add-returns-this.js: OK 716 + kangax-es6/WeakSet.prototype.delete.js: OK 717 + kangax-es6/annex-b.RegExp.prototype.compile.js: failed 718 + kangax-es6/annex-b.RegExp.prototype.compile.returns-this.js: failed 719 + kangax-es6/annex-b.String.prototype.html.existence.js: failed 720 + kangax-es6/annex-b.String.prototype.html.lowercase.js: failed 721 + kangax-es6/annex-b.String.prototype.html.quotes-escaped.js: failed 722 + kangax-es6/annex-b.function.hoisted-block-level.js: failed 723 + kangax-es6/annex-b.function.if-statement.js: OK 724 + kangax-es6/annex-b.function.labeled.js: OK 725 + kangax-es6/annex-b.html-comments.js: failed 726 + kangax-es6/annex-b.regex.backreferences-octal.js: OK 727 + kangax-es6/annex-b.regex.hyphens.js: failed 728 + kangax-es6/annex-b.regex.incomplete-patterns.js: OK 729 + kangax-es6/annex-b.regex.invalid-char-escapes.js: failed 730 + kangax-es6/annex-b.regex.invalid-control-escapes.js: failed 731 + kangax-es6/annex-b.regex.invalid-hex-escapes.js: failed 732 + kangax-es6/annex-b.regex.invalid-unicode-escapes.js: failed 733 + kangax-es6/annex-b.regex.octal-escapes.js: OK 734 + kangax-es6/annex-b.__proto__.Object.prototype.absent-from-null.js: OK 735 + kangax-es6/annex-b.__proto__.Object.prototype.descriptor.js: OK 736 + kangax-es6/annex-b.__proto__.Object.prototype.getOwnPropertyNames.js: OK 737 + kangax-es6/annex-b.__proto__.Object.prototype.get.js: OK 738 + kangax-es6/annex-b.__proto__.Object.prototype.hasOwnProperty.js: OK 739 + kangax-es6/annex-b.__proto__.Object.prototype.set.js: OK 740 + kangax-es6/annex-b.__proto__.literals.js: OK 741 + kangax-es6/annex-b.__proto__.literals.multiple-error.js: OK 742 + kangax-es6/annex-b.__proto__.literals.not-computed.js: OK 743 + kangax-es6/annex-b.__proto__.literals.not-shorthand-method.js: OK 744 + kangax-es6/annex-b.__proto__.literals.not-shorthand-property.js: OK 745 + kangax-es6/arrow.0-params.js: OK 746 + kangax-es6/arrow.1-param.js: OK 747 + kangax-es6/arrow.5-param.js: OK 748 + kangax-es6/arrow.bind.js: failed 749 + kangax-es6/arrow.lexical-arguments.js: OK 750 + kangax-es6/arrow.lexical-super.constructor.js: OK 751 + kangax-es6/arrow.lexical-super.methods.js: failed 752 + kangax-es6/arrow.lexical-this.js: OK 753 + kangax-es6/arrow.new-target.js: failed 754 + kangax-es6/arrow.no-line-break.js: failed 755 + kangax-es6/arrow.no-prototype.js: OK 756 + kangax-es6/arrow.precedence.js: failed 757 + kangax-es6/arrow.this-call-apply.js: OK 758 + kangax-es6/class.accessor-properties.js: OK 759 + kangax-es6/class.anonymous.js: OK 760 + kangax-es6/class.block-scoped.js: OK 761 + kangax-es6/class.computed-accessor-properties.js: failed 762 + kangax-es6/class.computed-names-tdz.js: failed 763 + kangax-es6/class.computed-prototype-methods.js: failed 764 + kangax-es6/class.computed-static-accessor-properties.js: failed 765 + kangax-es6/class.computed-static-methods.js: failed 766 + kangax-es6/class.constructor-requires-new.js: failed 767 + kangax-es6/class.constructor.js: OK 768 + kangax-es6/class.expression.js: OK 769 + kangax-es6/class.extends-expressions.js: failed 770 + kangax-es6/class.extends-null.js: failed 771 + kangax-es6/class.extends.js: failed 772 + kangax-es6/class.implicit-strict.js: failed 773 + kangax-es6/class.lexical-name.js: failed 774 + kangax-es6/class.methods-not-enumerable.js: failed 775 + kangax-es6/class.new-target.js: failed 776 + kangax-es6/class.optional-semicolons.js: failed 777 + kangax-es6/class.prototype-methods.js: OK 778 + kangax-es6/class.statement.js: OK 779 + kangax-es6/class.static-accessor-properties.js: failed 780 + kangax-es6/class.static-methods.js: OK 781 + kangax-es6/class.string-keyed-methods.js: failed 782 + kangax-es6/const.basic.js: OK 783 + kangax-es6/const.block-scoped.js: OK 784 + kangax-es6/const.for-in.js: failed 785 + kangax-es6/const.for-loop.js: OK 786 + kangax-es6/const.for-of.js: failed 787 + kangax-es6/const.no-redefine.js: failed 788 + kangax-es6/const.no-statement.js: failed 789 + kangax-es6/const.shadow.js: OK 790 + kangax-es6/const.strict.basic.js: OK 791 + kangax-es6/const.strict.block-scoped.js: OK 792 + kangax-es6/const.strict.for-in.js: failed 793 + kangax-es6/const.strict.for-loop.js: OK 794 + kangax-es6/const.strict.for-of.js: failed 795 + kangax-es6/const.strict.no-redefine.js: OK 796 + kangax-es6/const.strict.no-statement.js: failed 797 + kangax-es6/const.strict.shadow.js: OK 798 + kangax-es6/const.strict.tdz.js: OK 799 + kangax-es6/const.tdz.js: OK 800 + kangax-es6/default-params.arguments.js: OK 801 + kangax-es6/default-params.basic.js: OK 802 + kangax-es6/default-params.explicit-undefined.js: failed 803 + kangax-es6/default-params.new-function.js: OK 804 + kangax-es6/default-params.refer-previous.js: OK 805 + kangax-es6/default-params.separate-scope.js: failed 806 + kangax-es6/default-params.tdz.js: failed 807 + kangax-es6/destructuring-assign.array.js: failed 808 + kangax-es6/destructuring-assign.astral-string.js: failed 809 + kangax-es6/destructuring-assign.chained-iterable.js: OK 810 + kangax-es6/destructuring-assign.chained-object.js: failed 811 + kangax-es6/destructuring-assign.computed-properties.js: failed 812 + kangax-es6/destructuring-assign.defaults.js: failed 813 + kangax-es6/destructuring-assign.empty-patterns.js: failed 814 + kangax-es6/destructuring-assign.generator.js: failed 815 + kangax-es6/destructuring-assign.iterable-expression.js: OK 816 + kangax-es6/destructuring-assign.iterable-instance.js: failed 817 + kangax-es6/destructuring-assign.iterable.js: failed 818 + kangax-es6/destructuring-assign.iterator-closing.js: failed 819 + kangax-es6/destructuring-assign.nested-rest.js: failed 820 + kangax-es6/destructuring-assign.nested.js: failed 821 + kangax-es6/destructuring-assign.object-expression.js: failed 822 + kangax-es6/destructuring-assign.object-primitives.js: failed 823 + kangax-es6/destructuring-assign.object.js: failed 824 + kangax-es6/destructuring-assign.parenthesised-error.js: failed 825 + kangax-es6/destructuring-assign.rest.js: OK 826 + kangax-es6/destructuring-assign.sparse-array.js: OK 827 + kangax-es6/destructuring-assign.string.js: OK 828 + kangax-es6/destructuring-assign.throws-null-undefined.js: failed 829 + kangax-es6/destructuring-assign.trailing-comma-iterable.js: OK 830 + kangax-es6/destructuring-assign.trailing-comma-object.js: failed 831 + kangax-es6/destructuring-decl.array.js: failed 832 + kangax-es6/destructuring-decl.astral-string.js: failed 833 + kangax-es6/destructuring-decl.catch.js: failed 834 + kangax-es6/destructuring-decl.computed-properties.js: failed 835 + kangax-es6/destructuring-decl.defaults-tdz.js: failed 836 + kangax-es6/destructuring-decl.defaults.js: failed 837 + kangax-es6/destructuring-decl.for-in.js: failed 838 + kangax-es6/destructuring-decl.for-of.js: OK 839 + kangax-es6/destructuring-decl.generator.js: failed 840 + kangax-es6/destructuring-decl.iterable-instance.js: failed 841 + kangax-es6/destructuring-decl.iterable.js: failed 842 + kangax-es6/destructuring-decl.iterator-closing.js: failed 843 + kangax-es6/destructuring-decl.multiple-var.js: failed 844 + kangax-es6/destructuring-decl.nested.js: failed 845 + kangax-es6/destructuring-decl.object-primitives.js: failed 846 + kangax-es6/destructuring-decl.object.js: failed 847 + kangax-es6/destructuring-decl.rest.js: failed 848 + kangax-es6/destructuring-decl.sparse-array.js: failed 849 + kangax-es6/destructuring-decl.string.js: failed 850 + kangax-es6/destructuring-decl.throws-null-undefined.js: failed 851 + kangax-es6/destructuring-decl.trailing-comma-iterable.js: failed 852 + kangax-es6/destructuring-decl.trailing-comma-object.js: failed 853 + kangax-es6/destructuring-params.aliased-defaults-arrow.js: failed 854 + kangax-es6/destructuring-params.arguments.js: OK 855 + kangax-es6/destructuring-params.array.js: failed 856 + kangax-es6/destructuring-params.astral-string.js: failed 857 + kangax-es6/destructuring-params.computed-properties.js: failed 858 + kangax-es6/destructuring-params.defaults-new-function.js: OK 859 + kangax-es6/destructuring-params.defaults-separate-scope.js: failed 860 + kangax-es6/destructuring-params.defaults.js: OK 861 + kangax-es6/destructuring-params.duplicate-identifier.js: failed 862 + kangax-es6/destructuring-params.empty-patterns.js: OK 863 + kangax-es6/destructuring-params.generator.js: failed 864 + kangax-es6/destructuring-params.iterable-instance.js: failed 865 + kangax-es6/destructuring-params.iterable.js: failed 866 + kangax-es6/destructuring-params.iterator-closing.js: failed 867 + kangax-es6/destructuring-params.length.js: OK 868 + kangax-es6/destructuring-params.nested.js: failed 869 + kangax-es6/destructuring-params.new-function.js: OK 870 + kangax-es6/destructuring-params.object-primitives.js: failed 871 + kangax-es6/destructuring-params.object.js: OK 872 + kangax-es6/destructuring-params.rest.js: OK 873 + kangax-es6/destructuring-params.shorthand-defaults-arrow.js: OK 874 + kangax-es6/destructuring-params.sparse-array.js: OK 875 + kangax-es6/destructuring-params.string.js: failed 876 + kangax-es6/destructuring-params.throws-null-undefined.js: failed 877 + kangax-es6/destructuring-params.trailing-comma-iterable.js: OK 878 + kangax-es6/destructuring-params.trailing-comma-object.js: OK 879 + kangax-es6/for-of.array.js: OK 880 + kangax-es6/for-of.astral-string.js: failed 881 + kangax-es6/for-of.generator.js: failed 882 + kangax-es6/for-of.iterable-instance.js: OK 883 + kangax-es6/for-of.iterable.js: OK 884 + kangax-es6/for-of.iterator-closing-break.js: failed 885 + kangax-es6/for-of.iterator-closing-throw.js: failed 886 + kangax-es6/for-of.sparse-array.js: OK 887 + kangax-es6/for-of.string.js: OK 888 + kangax-es6/function.block-level-decl.js: OK 889 + kangax-es6/generators.basic.js: failed 890 + kangax-es6/generators.constructor.js: failed 891 + kangax-es6/generators.expression.js: failed 892 + kangax-es6/generators.no-new-this.js: failed 893 + kangax-es6/generators.prototype-chain.js: failed 894 + kangax-es6/generators.prototype.js: failed 895 + kangax-es6/generators.return.js: failed 896 + kangax-es6/generators.sending.js: failed 897 + kangax-es6/generators.shorthand.class.js: failed 898 + kangax-es6/generators.shorthand.computed.class.js: failed 899 + kangax-es6/generators.shorthand.computed.js: failed 900 + kangax-es6/generators.shorthand.js: failed 901 + kangax-es6/generators.shorthand.no-constructor.js: failed 902 + kangax-es6/generators.shorthand.string-keyed.js: failed 903 + kangax-es6/generators.this.js: failed 904 + kangax-es6/generators.throw.js: failed 905 + kangax-es6/generators.yield-precedence.js: failed 906 + kangax-es6/generators.yield-star.array.js: failed 907 + kangax-es6/generators.yield-star.astral-string.js: failed 908 + kangax-es6/generators.yield-star.generator.js: failed 909 + kangax-es6/generators.yield-star.iterable-instance.js: failed 910 + kangax-es6/generators.yield-star.iterable.js: failed 911 + kangax-es6/generators.yield-star.iterator-closing-throw.js: failed 912 + kangax-es6/generators.yield-star.iterator-closing.js: failed 913 + kangax-es6/generators.yield-star.non-iterable-error.js: failed 914 + kangax-es6/generators.yield-star.sparse-array.js: failed 915 + kangax-es6/generators.yield-star.string.js: failed 916 + kangax-es6/let.basic.js: OK 917 + kangax-es6/let.block-scoped.js: OK 918 + kangax-es6/let.for-in-shadow.js: OK 919 + kangax-es6/let.for-iteration.js: failed 920 + kangax-es6/let.for-loop.js: OK 921 + kangax-es6/let.no-statement.js: failed 922 + kangax-es6/let.shadow.js: OK 923 + kangax-es6/let.strict.basic.js: OK 924 + kangax-es6/let.strict.block-scoped.js: OK 925 + kangax-es6/let.strict.for-in-shadow.js: OK 926 + kangax-es6/let.strict.for-iteration.js: failed 927 + kangax-es6/let.strict.for-loop.js: OK 928 + kangax-es6/let.strict.no-statement.js: failed 929 + kangax-es6/let.strict.shadow.js: OK 930 + kangax-es6/let.strict.tdz.js: OK 931 + kangax-es6/let.tdz.js: OK 932 + kangax-es6/literals.binary.Number.js: failed 933 + kangax-es6/literals.binary.js: OK 934 + kangax-es6/literals.object.computed-accessors.js: failed 935 + kangax-es6/literals.object.computed-properties.js: OK 936 + kangax-es6/literals.object.computed-shorthand-methods.js: OK 937 + kangax-es6/literals.object.shorthand-methods.js: OK 938 + kangax-es6/literals.object.shorthand-properties.js: OK 939 + kangax-es6/literals.object.string-keyed-shorthand-methods.js: failed 940 + kangax-es6/literals.octal.Number.js: failed 941 + kangax-es6/literals.octal.js: OK 942 + kangax-es6/misc.Invalid-Date.js: OK 943 + kangax-es6/misc.Object.freeze.primitives.js: OK 944 + kangax-es6/misc.Object.getOwnPropertyDescriptor.primitives.js: OK 945 + kangax-es6/misc.Object.getOwnPropertyNames.primitives.js: failed 946 + kangax-es6/misc.Object.getPrototypeOf.primitives.js: OK 947 + kangax-es6/misc.Object.isExtensible.primitives.js: failed 948 + kangax-es6/misc.Object.isFrozen.primitives.js: OK 949 + kangax-es6/misc.Object.isSealed.primitives.js: OK 950 + kangax-es6/misc.Object.keys.primitives.js: failed 951 + kangax-es6/misc.Object.preventExtensions.primitives.js: OK 952 + kangax-es6/misc.Object.seal.primitives.js: OK 953 + kangax-es6/misc.Proxy.defineProperty.SetIntegrityLevel.js: failed 954 + kangax-es6/misc.Proxy.defineProperty.Set.js: failed 955 + kangax-es6/misc.Proxy.deleteProperty.Array.copyWithin.js: failed 956 + kangax-es6/misc.Proxy.deleteProperty.Array.pop.js: failed 957 + kangax-es6/misc.Proxy.deleteProperty.Array.reverse.js: failed 958 + kangax-es6/misc.Proxy.deleteProperty.Array.shift.js: failed 959 + kangax-es6/misc.Proxy.deleteProperty.Array.splice.js: failed 960 + kangax-es6/misc.Proxy.deleteProperty.Array.unshift.js: failed 961 + kangax-es6/misc.Proxy.getOwnPropertyDescriptor.Function.bind.js: failed 962 + kangax-es6/misc.Proxy.getOwnPropertyDescriptor.Object.assign.js: failed 963 + kangax-es6/misc.Proxy.getOwnPropertyDescriptor.Object.hasOwnProperty.js: failed 964 + kangax-es6/misc.Proxy.getOwnPropertyDescriptor.Set.js: failed 965 + kangax-es6/misc.Proxy.get.Array.concat.js: failed 966 + kangax-es6/misc.Proxy.get.Array.from.js: failed 967 + kangax-es6/misc.Proxy.get.Array.iteration.js: failed 968 + kangax-es6/misc.Proxy.get.Array.pop.js: failed 969 + kangax-es6/misc.Proxy.get.Array.reverse.js: failed 970 + kangax-es6/misc.Proxy.get.Array.shift.js: failed 971 + kangax-es6/misc.Proxy.get.Array.splice.js: failed 972 + kangax-es6/misc.Proxy.get.Array.toString.js: failed 973 + kangax-es6/misc.Proxy.get.ClassDefinitionEvaluation.js: failed 974 + kangax-es6/misc.Proxy.get.CreateDynamicFunction.js: failed 975 + kangax-es6/misc.Proxy.get.CreateListFromArrayLike.js: failed 976 + kangax-es6/misc.Proxy.get.Date.toJSON.js: failed 977 + kangax-es6/misc.Proxy.get.Error.toString.js: failed 978 + kangax-es6/misc.Proxy.get.Function.bind.js: failed 979 + kangax-es6/misc.Proxy.get.HasBinding.js: failed 980 + kangax-es6/misc.Proxy.get.IteratorComplete.js: failed 981 + kangax-es6/misc.Proxy.get.JSON.stringify.js: failed 982 + kangax-es6/misc.Proxy.get.Object.assign.js: failed 983 + kangax-es6/misc.Proxy.get.Object.defineProperties.js: failed 984 + kangax-es6/misc.Proxy.get.Promise.resolve.js: failed 985 + kangax-es6/misc.Proxy.get.RegExp-constructor.js: failed 986 + kangax-es6/misc.Proxy.get.RegExp.Symbol.match.js: failed 987 + kangax-es6/misc.Proxy.get.RegExp.Symbol.replace.js: failed 988 + kangax-es6/misc.Proxy.get.RegExp.Symbol.search.js: failed 989 + kangax-es6/misc.Proxy.get.RegExp.Symbol.split.js: failed 990 + kangax-es6/misc.Proxy.get.RegExp.flags.js: failed 991 + kangax-es6/misc.Proxy.get.RegExp.test.js: failed 992 + kangax-es6/misc.Proxy.get.RegExp.toString.js: failed 993 + kangax-es6/misc.Proxy.get.String.match.js: failed 994 + kangax-es6/misc.Proxy.get.String.raw.js: failed 995 + kangax-es6/misc.Proxy.get.String.replace.js: failed 996 + kangax-es6/misc.Proxy.get.String.search.js: failed 997 + kangax-es6/misc.Proxy.get.String.split.js: failed 998 + kangax-es6/misc.Proxy.get.ToPrimitive.js: failed 999 + kangax-es6/misc.Proxy.get.ToPropertyDescriptor.js: failed 1000 + kangax-es6/misc.Proxy.get.instanceof.js: failed 1001 + kangax-es6/misc.Proxy.ownKeys.SerializeJSONObject.js: failed 1002 + kangax-es6/misc.Proxy.ownKeys.SetIntegrityLevel.js: failed 1003 + kangax-es6/misc.Proxy.ownKeys.TestIntegrityLevel.js: failed 1004 + kangax-es6/misc.Proxy.set.Array.copyWithin.js: failed 1005 + kangax-es6/misc.Proxy.set.Array.fill.js: failed 1006 + kangax-es6/misc.Proxy.set.Array.from.js: failed 1007 + kangax-es6/misc.Proxy.set.Array.of.js: failed 1008 + kangax-es6/misc.Proxy.set.Array.pop.js: failed 1009 + kangax-es6/misc.Proxy.set.Array.push.js: failed 1010 + kangax-es6/misc.Proxy.set.Array.reverse.js: failed 1011 + kangax-es6/misc.Proxy.set.Array.shift.js: failed 1012 + kangax-es6/misc.Proxy.set.Array.splice.js: failed 1013 + kangax-es6/misc.Proxy.set.Array.unshift.js: failed 1014 + kangax-es6/misc.Proxy.set.Object.assign.js: failed 1015 + kangax-es6/misc.RegExp-alter-flags.js: OK 1016 + kangax-es6/misc.RegExp-prototype-toString-generic.js: failed 1017 + kangax-es6/misc.accessors-no-constructor.js: failed 1018 + kangax-es6/misc.bound-function-prototype.arrow.js: failed 1019 + kangax-es6/misc.bound-function-prototype.class.js: failed 1020 + kangax-es6/misc.bound-function-prototype.function.js: failed 1021 + kangax-es6/misc.bound-function-prototype.generator.js: failed 1022 + kangax-es6/misc.bound-function-prototype.subclass.js: failed 1023 + kangax-es6/misc.do-while-no-semicolon.js: OK 1024 + kangax-es6/misc.duplicate-properties-strict.js: OK 1025 + kangax-es6/misc.for-in-no-assignment-strict.js: OK 1026 + kangax-es6/misc.function-length-configurable.js: OK 1027 + kangax-es6/misc.identifier-syntax.no-escaped-reserved.js: OK 1028 + kangax-es6/misc.identifier-syntax.var-1.js: failed 1029 + kangax-es6/misc.identifier-syntax.var-2.js: OK 1030 + kangax-es6/misc.property-order.JSON.parse.js: failed 1031 + kangax-es6/misc.property-order.JSON.stringify.js: failed 1032 + kangax-es6/misc.property-order.Object.assign.js: failed 1033 + kangax-es6/misc.property-order.Object.getOwnPropertyNames.js: failed 1034 + kangax-es6/misc.property-order.Object.keys.js: failed 1035 + kangax-es6/misc.property-order.Reflect.ownKeys.string.js: failed 1036 + kangax-es6/misc.property-order.Reflect.ownKeys.symbol.js: failed 1037 + kangax-es6/misc.prototypes-not-instances.js: failed 1038 + kangax-es6/new-target.assignment-error.js: failed 1039 + kangax-es6/new-target.constructor.js: failed 1040 + kangax-es6/regex.flags.u.case-folding.js: OK 1041 + kangax-es6/regex.flags.u.codepoint.js: failed 1042 + kangax-es6/regex.flags.u.js: failed 1043 + kangax-es6/regex.flags.u.non-bmp.js: failed 1044 + kangax-es6/regex.flags.y.js: failed 1045 + kangax-es6/regex.flags.y.lastIndex.js: failed 1046 + kangax-es6/rest-params.arguments.js: OK 1047 + kangax-es6/rest-params.basic.js: failed 1048 + kangax-es6/rest-params.length.js: failed 1049 + kangax-es6/rest-params.new-function.js: failed 1050 + kangax-es6/rest-params.no-setter.js: failed 1051 + kangax-es6/spread.array-call.js: OK 1052 + kangax-es6/spread.array-literal.js: OK 1053 + kangax-es6/spread.astral-call.js: failed 1054 + kangax-es6/spread.astral-literal.js: failed 1055 + kangax-es6/spread.generator-call.js: failed 1056 + kangax-es6/spread.generator-literal.js: failed 1057 + kangax-es6/spread.iterable-call.js: failed 1058 + kangax-es6/spread.iterable-instance-call.js: failed 1059 + kangax-es6/spread.iterable-instance-literal.js: failed 1060 + kangax-es6/spread.iterable-literal.js: failed 1061 + kangax-es6/spread.non-iterable-error.js: failed 1062 + kangax-es6/spread.sparse-call.js: OK 1063 + kangax-es6/spread.sparse-literal.js: OK 1064 + kangax-es6/spread.string-call.js: failed 1065 + kangax-es6/spread.string-literal.js: OK 1066 + kangax-es6/subclassing.Array.concat.js: failed 1067 + kangax-es6/subclassing.Array.filter.js: failed 1068 + kangax-es6/subclassing.Array.from.js: failed 1069 + kangax-es6/subclassing.Array.isArray.js: OK 1070 + kangax-es6/subclassing.Array.length-access.js: OK 1071 + kangax-es6/subclassing.Array.length-set.js: failed 1072 + kangax-es6/subclassing.Array.map.js: failed 1073 + kangax-es6/subclassing.Array.of.js: failed 1074 + kangax-es6/subclassing.Array.prototype-chain.js: failed 1075 + kangax-es6/subclassing.Array.slice.js: failed 1076 + kangax-es6/subclassing.Array.splice.js: failed 1077 + kangax-es6/subclassing.Function.call.js: OK 1078 + kangax-es6/subclassing.Function.new.js: OK 1079 + kangax-es6/subclassing.Function.prototype-chain.js: failed 1080 + kangax-es6/subclassing.Function.prototype.apply.js: OK 1081 + kangax-es6/subclassing.Function.prototype.bind.js: failed 1082 + kangax-es6/subclassing.Function.prototype.call.js: OK 1083 + kangax-es6/subclassing.Promise.all.js: failed 1084 + kangax-es6/subclassing.Promise.js: failed 1085 + kangax-es6/subclassing.Promise.prototype-chain.js: failed 1086 + kangax-es6/subclassing.Promise.race.js: failed 1087 + kangax-es6/subclassing.RegExp.exec.js: OK 1088 + kangax-es6/subclassing.RegExp.js: OK 1089 + kangax-es6/subclassing.RegExp.prototype-chain.js: failed 1090 + kangax-es6/subclassing.RegExp.test.js: OK 1091 + kangax-es6/subclassing.misc.Boolean.js: failed 1092 + kangax-es6/subclassing.misc.Error.js: failed 1093 + kangax-es6/subclassing.misc.Map.js: failed 1094 + kangax-es6/subclassing.misc.Number.js: failed 1095 + kangax-es6/subclassing.misc.Set.js: failed 1096 + kangax-es6/subclassing.misc.String.js: crashed (signal 11) 1097 + kangax-es6/super.correct-constructor.js: OK 1098 + kangax-es6/super.expression.js: OK 1099 + kangax-es6/super.method-calls.js: OK 1100 + kangax-es6/super.new-target-binding.js: failed 1101 + kangax-es6/super.property-access.js: OK 1102 + kangax-es6/super.statement.js: OK 1103 + kangax-es6/super.static-binding.js: OK 1104 + kangax-es6/super.this-binding.js: OK 1105 + kangax-es6/tail-calls.direct.js: crashed (signal 11) 1106 + kangax-es6/tail-calls.mutual.js: crashed (signal 11) 1107 + kangax-es6/template.basic.js: OK 1108 + kangax-es6/template.caching.js: failed 1109 + kangax-es6/template.escape-sequences.js: failed 1110 + kangax-es6/template.frozen-array.js: failed 1111 + kangax-es6/template.line-break.js: failed 1112 + kangax-es6/template.permanent-caching.js: failed 1113 + kangax-es6/template.tagged.js: failed 1114 + kangax-es6/template.toString.js: failed 1115 + kangax-es6/typed-arrays.ArrayBuffer.Symbol.species.js: failed 1116 + kangax-es6/typed-arrays.DataView.Float32.js: failed 1117 + kangax-es6/typed-arrays.DataView.Float64.js: OK 1118 + kangax-es6/typed-arrays.DataView.Int8.js: failed 1119 + kangax-es6/typed-arrays.DataView.Int16.js: OK 1120 + kangax-es6/typed-arrays.DataView.Int32.js: OK 1121 + kangax-es6/typed-arrays.DataView.Uint8.js: OK 1122 + kangax-es6/typed-arrays.DataView.Uint16.js: failed 1123 + kangax-es6/typed-arrays.DataView.Uint32.js: failed 1124 + kangax-es6/typed-arrays.Float32Array.js: failed 1125 + kangax-es6/typed-arrays.Float64Array.js: OK 1126 + kangax-es6/typed-arrays.Int8Array.js: OK 1127 + kangax-es6/typed-arrays.Int16Array.js: OK 1128 + kangax-es6/typed-arrays.Int32Array.js: failed 1129 + kangax-es6/typed-arrays.Symbol.species.js: failed 1130 + kangax-es6/typed-arrays.Uint8Array.js: OK 1131 + kangax-es6/typed-arrays.Uint8ClampedArray.js: failed 1132 + kangax-es6/typed-arrays.Uint16Array.js: OK 1133 + kangax-es6/typed-arrays.Uint32Array.js: failed 1134 + kangax-es6/typed-arrays.constructor-iterables.js: OK 1135 + kangax-es6/typed-arrays.constructor-requires-new.js: failed 1136 + kangax-es6/typed-arrays.correct-prototype-chains.js: failed 1137 + kangax-es6/typed-arrays.from.js: failed 1138 + kangax-es6/typed-arrays.of.js: failed 1139 + kangax-es6/typed-arrays.prototype.Symbol.iterator.js: failed 1140 + kangax-es6/typed-arrays.prototype.copyWithin.js: failed 1141 + kangax-es6/typed-arrays.prototype.entries.js: failed 1142 + kangax-es6/typed-arrays.prototype.every.js: failed 1143 + kangax-es6/typed-arrays.prototype.fill.js: OK 1144 + kangax-es6/typed-arrays.prototype.filter.js: failed 1145 + kangax-es6/typed-arrays.prototype.findIndex.js: failed 1146 + kangax-es6/typed-arrays.prototype.find.js: failed 1147 + kangax-es6/typed-arrays.prototype.forEach.js: failed 1148 + kangax-es6/typed-arrays.prototype.indexOf.js: failed 1149 + kangax-es6/typed-arrays.prototype.join.js: failed 1150 + kangax-es6/typed-arrays.prototype.keys.js: failed 1151 + kangax-es6/typed-arrays.prototype.lastIndexOf.js: failed 1152 + kangax-es6/typed-arrays.prototype.map.js: failed 1153 + kangax-es6/typed-arrays.prototype.reduceRight.js: failed 1154 + kangax-es6/typed-arrays.prototype.reduce.js: failed 1155 + kangax-es6/typed-arrays.prototype.reverse.js: failed 1156 + kangax-es6/typed-arrays.prototype.slice.js: OK 1157 + kangax-es6/typed-arrays.prototype.some.js: failed 1158 + kangax-es6/typed-arrays.prototype.sort.js: failed 1159 + kangax-es6/typed-arrays.prototype.subarray.js: OK 1160 + kangax-es6/typed-arrays.prototype.values.js: failed 1161 + kangax-es6/unicode-escapes.identifier.js: failed 1162 + kangax-es6/unicode-escapes.property-access.js: failed 1163 + kangax-es6/unicode-escapes.property-key.js: failed 1164 + kangax-es6/unicode-escapes.string.js: failed 1165 + kangax-es6/well-known.hasInstance.js: failed 1166 + kangax-es6/well-known.isConcatSpreadable.non-spreadable.js: failed 1167 + kangax-es6/well-known.isConcatSpreadable.poisoned-getter.js: failed 1168 + kangax-es6/well-known.iterator.arguments.js: failed 1169 + kangax-es6/well-known.iterator.js: OK 1170 + kangax-es6/well-known.match.RegExp-constructor.js: failed 1171 + kangax-es6/well-known.match.String.endsWith.js: failed 1172 + kangax-es6/well-known.match.String.includes.js: failed 1173 + kangax-es6/well-known.match.String.startsWith.js: failed 1174 + kangax-es6/well-known.match.js: failed 1175 + kangax-es6/well-known.replace.js: failed 1176 + kangax-es6/well-known.search.js: failed 1177 + kangax-es6/well-known.species.Array.concat.js: failed 1178 + kangax-es6/well-known.species.Array.filter.js: failed 1179 + kangax-es6/well-known.species.Array.map.js: failed 1180 + kangax-es6/well-known.species.Array.slice.js: failed 1181 + kangax-es6/well-known.species.Array.splice.js: failed 1182 + kangax-es6/well-known.species.Promise.then.js: failed 1183 + kangax-es6/well-known.species.RegExp.split.js: failed 1184 + kangax-es6/well-known.species.js: failed 1185 + kangax-es6/well-known.split.js: failed 1186 + kangax-es6/well-known.toPrimitive.js: failed 1187 + kangax-es6/well-known.toStringTag.existing-builtins.js: failed 1188 + kangax-es6/well-known.toStringTag.js: OK 1189 + kangax-es6/well-known.toStringTag.misc-builtins.js: failed 1190 + kangax-es6/well-known.toStringTag.new-builtins.js: failed 1191 + kangax-es6/well-known.unscopables.js: failed 1192 + kangax-es2016/Array.prototype.includes.generic.js: failed 1193 + kangax-es2016/Array.prototype.includes.js: failed 1194 + kangax-es2016/Array.prototype.includes.sparse.js: failed 1195 + kangax-es2016/Array.prototype.includes.typed-array.js: failed 1196 + kangax-es2016/exponentiation.assignment.js: failed 1197 + kangax-es2016/exponentiation.basic.js: OK 1198 + kangax-es2016/exponentiation.unary-negation-error.js: failed 1199 + kangax-es2016/misc.Proxy-Array-includes.js: failed 1200 + kangax-es2016/misc.Proxy-enumerate-removed.js: OK 1201 + kangax-es2016/misc.generator-no-new.js: failed 1202 + kangax-es2016/misc.generator-throw-inner.js: failed 1203 + kangax-es2016/misc.nested-rest-destructuring-decl.js: failed 1204 + kangax-es2016/misc.nested-rest-destructuring-params.js: failed 1205 + kangax-es2016/misc.strict-fn-non-simple-params-error.js: failed 1206 + kangax-es2017/Atomics.add.js: OK 1207 + kangax-es2017/Atomics.and.js: OK 1208 + kangax-es2017/Atomics.compareExchange.js: OK 1209 + kangax-es2017/Atomics.exchange.js: OK 1210 + kangax-es2017/Atomics.isLockFree.js: OK 1211 + kangax-es2017/Atomics.load.js: OK 1212 + kangax-es2017/Atomics.notify.js: OK 1213 + kangax-es2017/Atomics.or.js: OK 1214 + kangax-es2017/Atomics.store.js: OK 1215 + kangax-es2017/Atomics.sub.js: OK 1216 + kangax-es2017/Atomics.wait.js: OK 1217 + kangax-es2017/Atomics.xor.js: OK 1218 + kangax-es2017/Object.entries.js: failed 1219 + kangax-es2017/Object.getOwnPropertyDescriptors.js: failed 1220 + kangax-es2017/Object.getOwnPropertyDescriptors.no-undefined.js: failed 1221 + kangax-es2017/Object.values.js: failed 1222 + kangax-es2017/SharedArrayBuffer.Symbol.species.js: failed 1223 + kangax-es2017/SharedArrayBuffer.js: OK 1224 + kangax-es2017/SharedArrayBuffer.prototype.Symbol.toStringTag.js: OK 1225 + kangax-es2017/SharedArrayBuffer.prototype.byteLength.js: failed 1226 + kangax-es2017/SharedArrayBuffer.prototype.slice.js: OK 1227 + kangax-es2017/String.prototype.padEnd.js: OK 1228 + kangax-es2017/String.prototype.padStart.js: OK 1229 + kangax-es2017/annex-b.Object.prototype.__defineGetter__.ToObject.js: failed 1230 + kangax-es2017/annex-b.Object.prototype.__defineGetter__.js: failed 1231 + kangax-es2017/annex-b.Object.prototype.__defineGetter__.symbols.js: failed 1232 + kangax-es2017/annex-b.Object.prototype.__defineSetter__.ToObject.js: failed 1233 + kangax-es2017/annex-b.Object.prototype.__defineSetter__.js: failed 1234 + kangax-es2017/annex-b.Object.prototype.__defineSetter__.symbols.js: failed 1235 + kangax-es2017/annex-b.Object.prototype.__lookupGetter__.ToObject.js: failed 1236 + kangax-es2017/annex-b.Object.prototype.__lookupGetter__.js: failed 1237 + kangax-es2017/annex-b.Object.prototype.__lookupGetter__.prototype-chain.js: failed 1238 + kangax-es2017/annex-b.Object.prototype.__lookupGetter__.shadow-accessors.js: failed 1239 + kangax-es2017/annex-b.Object.prototype.__lookupGetter__.symbols.js: failed 1240 + kangax-es2017/annex-b.Object.prototype.__lookupSetter__.ToObject.js: failed 1241 + kangax-es2017/annex-b.Object.prototype.__lookupSetter__.js: failed 1242 + kangax-es2017/annex-b.Object.prototype.__lookupSetter__.prototype-chain.js: failed 1243 + kangax-es2017/annex-b.Object.prototype.__lookupSetter__.shadow-accessors.js: failed 1244 + kangax-es2017/annex-b.Object.prototype.__lookupSetter__.symbols.js: failed 1245 + kangax-es2017/annex-b.Proxy.__defineGetter__.js: failed 1246 + kangax-es2017/annex-b.Proxy.__defineSetter__.js: failed 1247 + kangax-es2017/annex-b.Proxy.__lookupGetter__.js: failed 1248 + kangax-es2017/annex-b.Proxy.__lookupSetter__.js: failed 1249 + kangax-es2017/annex-b.for-in-assignment-non-strict.js: failed 1250 + kangax-es2017/async.Symbol.toStringTag.js: failed 1251 + kangax-es2017/async.arrow-in-class.js: OK 1252 + kangax-es2017/async.arrow.js: OK 1253 + kangax-es2017/async.await-non-promise.js: OK 1254 + kangax-es2017/async.await-rejection.js: OK 1255 + kangax-es2017/async.await.js: timeout 1256 + kangax-es2017/async.constructor.js: OK 1257 + kangax-es2017/async.methods-class.js: OK 1258 + kangax-es2017/async.methods-object.js: failed 1259 + kangax-es2017/async.must-await-value.js: OK 1260 + kangax-es2017/async.no-await-in-params.js: failed 1261 + kangax-es2017/async.no-line-break.js: failed 1262 + kangax-es2017/async.no-prototype.js: failed 1263 + kangax-es2017/async.prototype-chain.js: OK 1264 + kangax-es2017/async.return.js: OK 1265 + kangax-es2017/async.throw.js: OK 1266 + kangax-es2017/misc.arguments-caller-removed.js: OK 1267 + kangax-es2017/regex.flags.u.case-folding.js: OK 1268 + kangax-es2017/trailing-comma.arguments.js: OK 1269 + kangax-es2017/trailing-comma.params.js: OK 1270 + kangax-es2018/Promise.prototype.finally.change-rejection.js: OK 1271 + kangax-es2018/Promise.prototype.finally.js: OK 1272 + kangax-es2018/Promise.prototype.finally.no-change-resolution.js: OK 1273 + kangax-es2018/async-iterators.for-await-of.js: failed 1274 + kangax-es2018/async-iterators.generators.js: failed 1275 + kangax-es2018/misc.Proxy-ownKeys-duplicate-keys.js: failed 1276 + kangax-es2018/misc.template-literal-revision.js: failed 1277 + kangax-es2018/object-rest.js: failed 1278 + kangax-es2018/object-spread.js: OK 1279 + kangax-es2018/regex.flags.s.js: failed 1280 + kangax-es2018/regex.lookbehind.js: OK 1281 + kangax-es2018/regex.named-capture-groups.js: failed 1282 + kangax-es2018/regex.unicode-property-escapes.js: OK 1283 + kangax-es2018/regex.unicode-property-escapes.unicode-11.js: failed 1284 + kangax-es2018/regex.unicode-property-escapes.unicode-12.1.js: failed 1285 + kangax-es2018/regex.unicode-property-escapes.unicode-12.js: OK 1286 + kangax-es2018/regex.unicode-property-escapes.unicode-13.js: OK 1287 + kangax-es2018/regex.unicode-property-escapes.unicode-14.js: OK 1288 + kangax-es2018/regex.unicode-property-escapes.unicode-15.1.js: OK 1289 + kangax-es2018/regex.unicode-property-escapes.unicode-15.js: OK 1290 + kangax-es2018/regex.unicode-property-escapes.unicode-16.0.js: OK 1291 + kangax-es2018/regex.unicode-property-escapes.unicode-17.0.js: failed 1292 + kangax-es2019/Array.prototype.flatMap.js: OK 1293 + kangax-es2019/Array.prototype.flat-flatMap.unscopables.js: failed 1294 + kangax-es2019/Array.prototype.flat.js: failed 1295 + kangax-es2019/Object.fromEntries.js: failed 1296 + kangax-es2019/String.prototype.trimEnd.js: OK 1297 + kangax-es2019/String.prototype.trimStart.js: OK 1298 + kangax-es2019/Symbol.prototype.description.empty.js: failed 1299 + kangax-es2019/Symbol.prototype.description.js: OK 1300 + kangax-es2019/Symbol.prototype.description.undefined.js: failed 1301 + kangax-es2019/annex-b.String.prototype.trimLeft.js: failed 1302 + kangax-es2019/annex-b.String.prototype.trimRight.js: failed 1303 + kangax-es2019/misc.Function-toString.Function-constructor.js: failed 1304 + kangax-es2019/misc.Function-toString.arrows.js: failed 1305 + kangax-es2019/misc.Function-toString.class-explicit-constructor.js: failed 1306 + kangax-es2019/misc.Function-toString.class-implicit-constructor.js: failed 1307 + kangax-es2019/misc.Function-toString.computed-names.js: failed 1308 + kangax-es2019/misc.Function-toString.native-code.js: failed 1309 + kangax-es2019/misc.Function-toString.unicode-escapes.js: failed 1310 + kangax-es2019/misc.JSON-stringify-well-formed.js: failed 1311 + kangax-es2019/misc.JSON-superset.line-separator.js: OK 1312 + kangax-es2019/misc.JSON-superset.paragraph-separator.js: OK 1313 + kangax-es2019/misc.optional-catch-binding.await.js: OK 1314 + kangax-es2019/misc.optional-catch-binding.js: OK 1315 + kangax-es2019/misc.optional-catch-binding.yield.js: failed 1316 + kangax-es2020/BigInt64Array.js: failed 1317 + kangax-es2020/BigInt.asIntN.js: OK 1318 + kangax-es2020/BigInt.asUintN.js: OK 1319 + kangax-es2020/BigInt.constructor.js: OK 1320 + kangax-es2020/BigInt.js: OK 1321 + kangax-es2020/BigUint64Array.js: failed 1322 + kangax-es2020/DataView.prototype.getBigInt64.js: failed 1323 + kangax-es2020/DataView.prototype.getBigUint64.js: failed 1324 + kangax-es2020/Promise.allSettled.js: failed 1325 + kangax-es2020/String.prototype.matchAll.js: failed 1326 + kangax-es2020/String.prototype.matchAll.throws-non-global.js: failed 1327 + kangax-es2020/globalThis.descriptor.js: failed 1328 + kangax-es2020/globalThis.js: OK 1329 + kangax-es2020/nullish-coalescing.js: OK 1330 + kangax-es2020/optional-chaining.bracket.js: OK 1331 + kangax-es2020/optional-chaining.function-call.js: failed 1332 + kangax-es2020/optional-chaining.method-call.js: failed 1333 + kangax-es2020/optional-chaining.property.js: OK 1334 + kangax-es2020/optional-chaining.spread-params.js: failed 1335 + kangax-es2021/FinalizationRegistry.js: failed 1336 + kangax-es2021/Promise.any.AggregateError.js: failed 1337 + kangax-es2021/Promise.any.fulfillment.js: OK 1338 + kangax-es2021/String.prototype.replaceAll.js: OK 1339 + kangax-es2021/WeakRef.js: failed 1340 + kangax-es2021/logical-assignment.and.js: OK 1341 + kangax-es2021/logical-assignment.and.setter-not-invoked.js: OK 1342 + kangax-es2021/logical-assignment.and.short-circuit.js: OK 1343 + kangax-es2021/logical-assignment.nullish.js: OK 1344 + kangax-es2021/logical-assignment.nullish.setter-not-invoked.js: OK 1345 + kangax-es2021/logical-assignment.nullish.short-circuit.js: OK 1346 + kangax-es2021/logical-assignment.or.js: OK 1347 + kangax-es2021/logical-assignment.or.setter-not-invoked.js: OK 1348 + kangax-es2021/logical-assignment.or.short-circuit.js: OK 1349 + kangax-es2021/numeric-separators.js: OK 1350 + kangax-es2022/Error.cause.AggregateError-prototype-lacks.js: failed 1351 + kangax-es2022/Error.cause.AggregateError.js: failed 1352 + kangax-es2022/Error.cause.Error-prototype-lacks.js: OK 1353 + kangax-es2022/Error.cause.Error.js: failed 1354 + kangax-es2022/Error.cause.EvalError-prototype-lacks.js: OK 1355 + kangax-es2022/Error.cause.EvalError.js: failed 1356 + kangax-es2022/Error.cause.RangeError-prototype-lacks.js: OK 1357 + kangax-es2022/Error.cause.RangeError.js: failed 1358 + kangax-es2022/Error.cause.ReferenceError-prototype-lacks.js: OK 1359 + kangax-es2022/Error.cause.ReferenceError.js: failed 1360 + kangax-es2022/Error.cause.SyntaxError-prototype-lacks.js: OK 1361 + kangax-es2022/Error.cause.SyntaxError.js: failed 1362 + kangax-es2022/Error.cause.TypeError-prototype-lacks.js: OK 1363 + kangax-es2022/Error.cause.TypeError.js: failed 1364 + kangax-es2022/Error.cause.URIError-prototype-lacks.js: OK 1365 + kangax-es2022/Error.cause.URIError.js: failed 1366 + kangax-es2022/Object.hasOwn.ToObject-first.js: failed 1367 + kangax-es2022/Object.hasOwn.js: OK 1368 + kangax-es2022/at-method.Array.js: OK 1369 + kangax-es2022/at-method.String.js: OK 1370 + kangax-es2022/at-method.TypedArray.js: failed 1371 + kangax-es2022/class-fields.computed-instance.js: failed 1372 + kangax-es2022/class-fields.computed-static.js: failed 1373 + kangax-es2022/class-fields.instance.parent-scope.js: failed 1374 + kangax-es2022/class-fields.private-instance.initializers.js: failed 1375 + kangax-es2022/class-fields.private-instance.js: failed 1376 + kangax-es2022/class-fields.private-instance.optional-access.js: failed 1377 + kangax-es2022/class-fields.private-instance.optional-deep-access.js: failed 1378 + kangax-es2022/class-fields.private-static.js: OK 1379 + kangax-es2022/class-fields.public-instance.js: OK 1380 + kangax-es2022/class-fields.public-static.js: OK 1381 + kangax-es2022/class-fields.static.define.js: OK 1382 + kangax-es2022/class-methods.private-accessor.js: failed 1383 + kangax-es2022/class-methods.private-instance.js: crashed (signal 11) 1384 + kangax-es2022/class-methods.private-static-accessor.js: failed 1385 + kangax-es2022/class-methods.private-static.js: OK 1386 + kangax-es2022/class-static-init-blocks.js: failed 1387 + kangax-es2022/ergonomic-brand-checks.js: failed 1388 + kangax-es2022/regex.flags.d.constructor.js: OK 1389 + kangax-es2022/regex.flags.d.shows-in-flags.js: failed 1390 + kangax-es2023/Array.prototype.findLastIndex.js: OK 1391 + kangax-es2023/Array.prototype.findLast.js: OK 1392 + kangax-es2023/Array.prototype.toReversed.js: OK 1393 + kangax-es2023/Array.prototype.toSorted.js: OK 1394 + kangax-es2023/Array.prototype.toSpliced.js: OK 1395 + kangax-es2023/Array.prototype.with.js: OK 1396 + kangax-es2023/TypedArray.prototype.toReversed.js: failed 1397 + kangax-es2023/TypedArray.prototype.toSorted.js: failed 1398 + kangax-es2023/TypedArray.prototype.with.js: failed 1399 + kangax-es2023/hashbang.js: OK 1400 + kangax-es2024/ArrayBuffer.prototype.detached.js: failed 1401 + kangax-es2024/ArrayBuffer.prototype.transferToFixedLength.js: failed 1402 + kangax-es2024/ArrayBuffer.prototype.transfer.js: failed 1403 + kangax-es2024/Map.groupBy.js: failed 1404 + kangax-es2024/Object.groupBy.js: failed 1405 + kangax-es2024/Promise.withResolvers.js: failed 1406 + kangax-es2024/regex.flags.v.constructor.js: OK 1407 + kangax-es2024/regex.flags.v.properties-of-strings.js: failed 1408 + kangax-es2024/regex.flags.v.set-notations.js: failed 1409 + kangax-es2024/regex.flags.v.shows-in-flags.js: failed 1410 + kangax-es2024/regex.flags.v.unicode-15.1.js: failed 1411 + kangax-es2024/regex.flags.v.unicode-16.0.js: failed 1412 + kangax-es2024/regex.flags.v.unicode-17.0.js: failed 1413 + kangax-es2025/Iterator.extends.js: failed 1414 + kangax-es2025/Iterator.from.iterable.js: failed 1415 + kangax-es2025/Iterator.from.iterator.js: failed 1416 + kangax-es2025/Iterator.instanceof.js: failed 1417 + kangax-es2025/Iterator.prototype.Symbol.toStringTag.js: failed 1418 + kangax-es2025/Iterator.prototype.drop.js: failed 1419 + kangax-es2025/Iterator.prototype.every.js: OK 1420 + kangax-es2025/Iterator.prototype.filter.js: OK 1421 + kangax-es2025/Iterator.prototype.find.js: OK 1422 + kangax-es2025/Iterator.prototype.flatMap.js: OK 1423 + kangax-es2025/Iterator.prototype.forEach.js: OK 1424 + kangax-es2025/Iterator.prototype.map.js: OK 1425 + kangax-es2025/Iterator.prototype.reduce.js: OK 1426 + kangax-es2025/Iterator.prototype.some.js: OK 1427 + kangax-es2025/Iterator.prototype.take.js: failed 1428 + kangax-es2025/Iterator.prototype.toArray.js: failed 1429 + kangax-es2025/Promise.try.js: failed 1430 + kangax-es2025/RegExp.escape.js: failed 1431 + kangax-es2025/Set.prototype.difference.js: failed 1432 + kangax-es2025/Set.prototype.intersection.js: failed 1433 + kangax-es2025/Set.prototype.isDisjointFrom.js: failed 1434 + kangax-es2025/Set.prototype.isSubsetOf.js: failed 1435 + kangax-es2025/Set.prototype.isSupersetOf.js: failed 1436 + kangax-es2025/Set.prototype.symmetricDifference.js: failed 1437 + kangax-es2025/Set.prototype.union.js: failed 1438 + kangax-es2025/regex.duplicate-named-groups.js: failed 1439 + kangax-es2025/regex.pattern-modifiers.i.js: OK 1440 + kangax-es2025/regex.pattern-modifiers.m.js: OK 1441 + kangax-es2025/regex.pattern-modifiers.s.js: failed 1442 + kangax-intl/Array.prototype.toLocaleString.js: OK 1443 + kangax-intl/Date.prototype.toLocaleDateString.js: OK 1444 + kangax-intl/Date.prototype.toLocaleString.js: OK 1445 + kangax-intl/Date.prototype.toLocaleTimeString.js: OK 1446 + kangax-intl/Intl.Collator.js: failed 1447 + kangax-intl/Intl.Collator.new-instances.js: failed 1448 + kangax-intl/Intl.Collator.prototype.compare.js: failed 1449 + kangax-intl/Intl.Collator.prototype.resolvedOptions.js: failed 1450 + kangax-intl/Intl.Collator.rejects-invalid-tags.js: failed 1451 + kangax-intl/Intl.Collator.valid-tags.js: failed 1452 + kangax-intl/Intl.Collator.without-new.js: failed 1453 + kangax-intl/Intl.DateTimeFormat.iana-timezones.js: failed 1454 + kangax-intl/Intl.DateTimeFormat.js: failed 1455 + kangax-intl/Intl.DateTimeFormat.new-instances.js: failed 1456 + kangax-intl/Intl.DateTimeFormat.rejects-invalid-tags.js: failed 1457 + kangax-intl/Intl.DateTimeFormat.resolvedOptions.timeZone-default.js: failed 1458 + kangax-intl/Intl.DateTimeFormat.valid-tags.js: failed 1459 + kangax-intl/Intl.DateTimeFormat.without-new.js: failed 1460 + kangax-intl/Intl.NumberFormat.js: failed 1461 + kangax-intl/Intl.NumberFormat.new-instances.js: failed 1462 + kangax-intl/Intl.NumberFormat.rejects-invalid-tags.js: failed 1463 + kangax-intl/Intl.NumberFormat.valid-tags.js: failed 1464 + kangax-intl/Intl.NumberFormat.without-new.js: failed 1465 + kangax-intl/Intl.js: failed 1466 + kangax-intl/Intl.prototype.js: failed 1467 + kangax-intl/Number.prototype.toLocaleString.js: OK 1468 + kangax-intl/Object.prototype.toLocaleString.js: OK 1469 + kangax-intl/String.prototype.localeCompare.js: OK
+109 -11
examples/spec/async.js
··· 7 7 async function basicAsync() { 8 8 return 42; 9 9 } 10 - basicAsync().then(v => { results.basic = v; }); 10 + basicAsync().then(v => { 11 + results.basic = v; 12 + }); 11 13 12 14 const arrowAsync = async () => 'arrow result'; 13 - arrowAsync().then(v => { results.arrow = v; }); 15 + arrowAsync().then(v => { 16 + results.arrow = v; 17 + }); 14 18 15 19 const singleParam = async x => x * 2; 16 - singleParam(21).then(v => { results.singleParam = v; }); 20 + singleParam(21).then(v => { 21 + results.singleParam = v; 22 + }); 17 23 18 24 const multiParam = async (a, b) => a + b; 19 - multiParam(10, 32).then(v => { results.multiParam = v; }); 25 + multiParam(10, 32).then(v => { 26 + results.multiParam = v; 27 + }); 20 28 21 29 async function withPromise() { 22 30 return Promise.resolve('promise from async'); 23 31 } 24 - withPromise().then(v => { results.withPromise = v; }); 32 + withPromise().then(v => { 33 + results.withPromise = v; 34 + }); 25 35 26 36 async function conditional(flag) { 27 37 if (flag) return 'true branch'; 28 38 return 'false branch'; 29 39 } 30 - conditional(true).then(v => { results.condTrue = v; }); 31 - conditional(false).then(v => { results.condFalse = v; }); 40 + conditional(true).then(v => { 41 + results.condTrue = v; 42 + }); 43 + conditional(false).then(v => { 44 + results.condFalse = v; 45 + }); 32 46 33 47 const obj = { 34 48 value: 100, ··· 36 50 return this.value; 37 51 } 38 52 }; 39 - obj.asyncMethod().then(v => { results.objMethod = v; }); 53 + obj.asyncMethod().then(v => { 54 + results.objMethod = v; 55 + }); 40 56 41 57 Promise.resolve(1) 42 58 .then(v => v + 1) 43 59 .then(v => v + 1) 44 60 .then(v => v + 1) 45 - .then(v => { results.chain = v; }); 61 + .then(v => { 62 + results.chain = v; 63 + }); 46 64 47 65 async function awaiter() { 48 66 const a = await Promise.resolve(1); 49 67 const b = await Promise.resolve(2); 50 68 return a + b; 51 69 } 52 - awaiter().then(v => { results.awaiter = v; }); 70 + awaiter().then(v => { 71 + results.awaiter = v; 72 + }); 53 73 54 74 async function awaitValue() { 55 75 return await 42; 56 76 } 57 - awaitValue().then(v => { results.awaitValue = v; }); 77 + awaitValue().then(v => { 78 + results.awaitValue = v; 79 + }); 80 + 81 + let finallyCalledResolve = false; 82 + Promise.resolve('original') 83 + .finally(() => { 84 + finallyCalledResolve = true; 85 + return 'ignored'; 86 + }) 87 + .then(v => { 88 + results.finallyNoChange = v; 89 + }); 90 + 91 + let finallyCalledReject = false; 92 + Promise.reject('rejected reason') 93 + .finally(() => { 94 + finallyCalledReject = true; 95 + return 'also ignored'; 96 + }) 97 + .catch(e => { 98 + results.finallyRejectPass = e; 99 + }); 100 + 101 + Promise.reject('foobar') 102 + .finally(() => { 103 + throw new Error('bar'); 104 + }) 105 + .catch(e => { 106 + results.finallyThrowError = e.message; 107 + }); 108 + 109 + Promise.reject('foobar') 110 + .finally(() => { 111 + return Promise.reject('changed'); 112 + }) 113 + .catch(e => { 114 + results.finallyRejectChange = e; 115 + }); 116 + 117 + async function awaitLoop() { 118 + let sum = 0; 119 + for (let i = 0; i < 3; i++) { 120 + sum += await Promise.resolve(i); 121 + } 122 + return sum; 123 + } 124 + awaitLoop().then(v => { 125 + results.awaitLoop = v; 126 + }); 127 + 128 + async function inner() { 129 + return await Promise.resolve(10); 130 + } 131 + async function outer() { 132 + return (await inner()) + (await inner()); 133 + } 134 + outer().then(v => { 135 + results.nestedAsync = v; 136 + }); 137 + 138 + async function sequential() { 139 + const a = await Promise.resolve(1); 140 + const b = await Promise.resolve(2); 141 + const c = await Promise.resolve(3); 142 + return a + b + c; 143 + } 144 + sequential().then(v => { 145 + results.sequential = v; 146 + }); 58 147 59 148 setTimeout(() => { 60 149 test('basic async', results.basic, 42); ··· 68 157 test('promise chain', results.chain, 4); 69 158 test('awaiter sum', results.awaiter, 3); 70 159 test('await value', results.awaitValue, 42); 160 + test('finally no change resolve', results.finallyNoChange, 'original'); 161 + test('finally called on resolve', finallyCalledResolve, true); 162 + test('finally passes rejection', results.finallyRejectPass, 'rejected reason'); 163 + test('finally called on reject', finallyCalledReject, true); 164 + test('finally throw changes rejection', results.finallyThrowError, 'bar'); 165 + test('finally reject changes rejection', results.finallyRejectChange, 'changed'); 166 + test('await in loop', results.awaitLoop, 3); 167 + test('nested async', results.nestedAsync, 20); 168 + test('sequential awaits', results.sequential, 6); 71 169 summary(); 72 170 }, 50);
+40
examples/spec/forin.js
··· 1 + import { test, testDeep, summary } from './helpers.js'; 2 + 3 + console.log('For-In Enumeration Tests\n'); 4 + 5 + var strPrim = 'abc'; 6 + var strPrimKeys = []; 7 + for (var k in strPrim) strPrimKeys.push(k); 8 + testDeep('string primitive for-in keys', strPrimKeys, ['0', '1', '2']); 9 + test('string primitive length', strPrim.length, 3); 10 + 11 + var strObj = new String('abc'); 12 + var strObjKeys = []; 13 + for (var k in strObj) strObjKeys.push(k); 14 + testDeep('String object for-in keys', strObjKeys, ['0', '1', '2']); 15 + test('String object length', strObj.length, 3); 16 + 17 + var sparse = []; 18 + sparse[5] = 'hello'; 19 + test('sparse array length', sparse.length, 6); 20 + var sparseKeys = []; 21 + for (var k in sparse) sparseKeys.push(k); 22 + testDeep('sparse array for-in keys', sparseKeys, ['5']); 23 + 24 + var arr = [10, 20, 30]; 25 + var arrKeys = []; 26 + for (var k in arr) arrKeys.push(k); 27 + testDeep('array for-in keys', arrKeys, ['2', '1', '0']); 28 + 29 + var obj = { a: 1, b: 2, c: 3 }; 30 + var objKeys = []; 31 + for (var k in obj) objKeys.push(k); 32 + testDeep('object for-in keys', objKeys, ['c', 'b', 'a']); 33 + 34 + var arrWithProps = [1, 2]; 35 + arrWithProps.foo = 'bar'; 36 + var arrPropsKeys = []; 37 + for (var k in arrWithProps) arrPropsKeys.push(k); 38 + testDeep('array with properties for-in keys', arrPropsKeys, ['foo', '1', '0']); 39 + 40 + summary();
+1
include/config.h
··· 40 40 SLOT_CFUNC, 41 41 SLOT_CORO, 42 42 SLOT_PROTO, 43 + SLOT_ASYNC_PROTO, 43 44 SLOT_FROZEN, 44 45 SLOT_SEALED, 45 46 SLOT_EXTENSIBLE,
+1
include/config.h.in
··· 29 29 SLOT_CFUNC, 30 30 SLOT_CORO, 31 31 SLOT_PROTO, 32 + SLOT_ASYNC_PROTO, 32 33 SLOT_FROZEN, 33 34 SLOT_SEALED, 34 35 SLOT_EXTENSIBLE,
+277 -46
src/ant.c
··· 3136 3136 jsval_t arr = mkobj(js, 0); 3137 3137 jsoff_t off = (jsoff_t) vdata(arr); 3138 3138 jsoff_t header = loadoff(js, off); 3139 + 3139 3140 saveoff(js, off, header | ARRMASK); 3140 3141 jsval_t array_proto = get_ctor_proto(js, "Array", 5); 3141 - if (vtype(array_proto) == T_OBJ) { 3142 - set_proto(js, arr, array_proto); 3143 - } 3144 - return mkval(T_ARR, vdata(arr)); 3142 + if (vtype(array_proto) == T_OBJ) set_proto(js, arr, array_proto); 3143 + 3144 + jsval_t arr_val = mkval(T_ARR, vdata(arr)); 3145 + js_set_descriptor(js, arr_val, "length", 6, JS_DESC_W); 3146 + 3147 + return arr_val; 3145 3148 } 3146 3149 3147 3150 jsval_t js_mkarr(struct js *js) { ··· 8196 8199 8197 8200 if (is_async) { 8198 8201 set_slot(js, func_obj, SLOT_ASYNC, js_mktrue()); 8202 + jsval_t async_proto = get_slot(js, js_glob(js), SLOT_ASYNC_PROTO); 8203 + if (vtype(async_proto) == T_FUNC) set_proto(js, func_obj, async_proto); 8199 8204 } 8200 8205 8201 8206 if (name_len > 0) { ··· 8367 8372 if (is_err(func_obj)) return func_obj; 8368 8373 set_slot(js, func_obj, SLOT_CODE, str); 8369 8374 set_slot(js, func_obj, SLOT_ASYNC, js_mktrue()); 8370 - if (!(flags & F_NOEXEC)) { 8371 - set_slot(js, func_obj, SLOT_SCOPE, js->scope); 8372 - } 8375 + jsval_t async_proto = get_slot(js, js_glob(js), SLOT_ASYNC_PROTO); 8376 + if (vtype(async_proto) == T_FUNC) set_proto(js, func_obj, async_proto); 8377 + if (!(flags & F_NOEXEC)) set_slot(js, func_obj, SLOT_SCOPE, js->scope); 8373 8378 return mkval(T_FUNC, (unsigned long) vdata(func_obj)); 8374 8379 } 8375 8380 return mkcoderef((jsoff_t) id_start, (jsoff_t) id_len); ··· 8515 8520 8516 8521 if (is_async) { 8517 8522 set_slot(js, func_obj, SLOT_ASYNC, js_mktrue()); 8523 + jsval_t async_proto = get_slot(js, js_glob(js), SLOT_ASYNC_PROTO); 8524 + if (vtype(async_proto) == T_FUNC) set_proto(js, func_obj, async_proto); 8518 8525 } 8519 8526 8520 8527 if (!(flags & F_NOEXEC)) { ··· 8760 8767 } 8761 8768 8762 8769 static inline jsval_t resolve_coderef(struct js *js, jsval_t v) { 8763 - if (vtype(v) == T_CODEREF) { 8764 - return lookup(js, &js->code[coderefoff(v)], codereflen(v)); 8765 - } 8770 + if (vtype(v) == T_CODEREF) return lookup(js, &js->code[coderefoff(v)], codereflen(v)); 8766 8771 return v; 8767 8772 } 8768 8773 ··· 9963 9968 if (is_err(func_obj)) return func_obj; 9964 9969 set_slot(js, func_obj, SLOT_CODE, str); 9965 9970 set_slot(js, func_obj, SLOT_ASYNC, js_mktrue()); 9971 + jsval_t async_proto = get_slot(js, js_glob(js), SLOT_ASYNC_PROTO); 9972 + if (vtype(async_proto) == T_FUNC) set_proto(js, func_obj, async_proto); 9966 9973 jsval_t len_key = js_mkstr(js, "length", 6); 9967 9974 if (is_err(len_key)) return len_key; 9968 9975 jsval_t res_len = setprop(js, func_obj, len_key, tov(0)); ··· 10043 10050 if (next(js) != tok) { 10044 10051 *res = js_mkerr_typed(js, JS_ERR_SYNTAX, "parse error"); 10045 10052 return false; 10046 - } else { 10047 - js->consumed = 1; 10048 - return true; 10049 - } 10053 + } else { js->consumed = 1; return true; } 10050 10054 } 10051 10055 10052 10056 static inline bool is_err2(jsval_t *v, jsval_t *res) { 10053 10057 bool r = is_err(*v); 10054 - if (r) *res = *v; 10055 - return r; 10058 + if (r) *res = *v; return r; 10056 10059 } 10057 10060 10058 10061 typedef struct { ··· 10099 10102 return true; 10100 10103 } 10101 10104 10105 + static int for_iter_step(struct js *js, for_iter_ctx_t *ctx, jsval_t key_str, jsval_t *out) { 10106 + jsval_t err = for_iter_bind_var(js, ctx, key_str); 10107 + if (is_err(err)) { *out = err; return 2; } 10108 + 10109 + jsval_t v = for_iter_exec_body(js, ctx); 10110 + if (is_err(v)) { *out = v; return 2; } 10111 + if (for_iter_handle_continue(js, ctx)) return 1; 10112 + if (js->flags & F_BREAK) return 1; 10113 + if (js->flags & F_RETURN) { *out = v; return 2; } 10114 + 10115 + return 0; 10116 + } 10117 + 10118 + static jsval_t for_iter_string_indices(struct js *js, for_iter_ctx_t *ctx, jsval_t str) { 10119 + jsoff_t slen = vstrlen(js, str); 10120 + for (jsoff_t i = 0; i < slen; i++) { 10121 + char idx[16]; 10122 + snprintf(idx, sizeof(idx), "%u", (unsigned)i); 10123 + jsval_t key_str = js_mkstr(js, idx, strlen(idx)); 10124 + 10125 + jsval_t out; 10126 + int rc = for_iter_step(js, ctx, key_str, &out); 10127 + if (rc) return (rc == 2) ? out : js_mkundef(); 10128 + } 10129 + return js_mkundef(); 10130 + } 10131 + 10102 10132 static jsval_t for_in_iter_object(struct js *js, for_iter_ctx_t *ctx, jsval_t obj) { 10103 10133 uint8_t obj_type = vtype(obj); 10104 - 10105 10134 if (obj_type == T_NULL || obj_type == T_UNDEF) return js_mkundef(); 10106 - if (obj_type != T_OBJ && obj_type != T_ARR && obj_type != T_FUNC) return js_mkerr(js, "for-in requires object"); 10135 + if (obj_type == T_STR) return for_iter_string_indices(js, ctx, obj); 10136 + if (obj_type != T_OBJ && obj_type != T_ARR && obj_type != T_FUNC) 10137 + return js_mkerr(js, "for-in requires object"); 10107 10138 10108 10139 jsval_t iter_obj = (obj_type == T_FUNC) ? mkval(T_OBJ, vdata(obj)) : obj; 10109 10140 jsoff_t iter_obj_off = (jsoff_t)vdata(iter_obj); 10110 10141 jsoff_t prop_off = loadoff(js, iter_obj_off) & ~(3U | FLAGMASK); 10111 10142 10143 + jsval_t prim = get_slot(js, obj, SLOT_PRIMITIVE); 10144 + if (vtype(prim) == T_STR) return for_iter_string_indices(js, ctx, prim); 10145 + 10112 10146 const char *tag_sym_key = get_toStringTag_sym_key(); 10113 10147 size_t tag_sym_len = tag_sym_key ? strlen(tag_sym_key) : 0; 10114 10148 ··· 10116 10150 jsoff_t header = loadoff(js, prop_off); 10117 10151 if (is_slot_prop(header)) { prop_off = next_prop(header); continue; } 10118 10152 10119 - jsoff_t koff = loadoff(js, prop_off + (jsoff_t) sizeof(prop_off)); 10153 + jsoff_t koff = loadoff(js, prop_off + (jsoff_t)sizeof(prop_off)); 10120 10154 jsoff_t klen = offtolen(loadoff(js, koff)); 10121 - const char *key = (char *) &js->mem[koff + sizeof(koff)]; 10155 + const char *key = (char *)&js->mem[koff + sizeof(koff)]; 10122 10156 10123 - bool should_skip = streq(key, klen, STR_PROTO, STR_PROTO_LEN); 10124 - if (!should_skip && tag_sym_key) should_skip = streq(key, klen, tag_sym_key, tag_sym_len); 10125 - if (!should_skip) { 10157 + bool skip = streq(key, klen, STR_PROTO, STR_PROTO_LEN); 10158 + if (!skip && tag_sym_key) skip = streq(key, klen, tag_sym_key, tag_sym_len); 10159 + 10160 + if (!skip) { 10126 10161 descriptor_entry_t *desc = lookup_descriptor(iter_obj_off, key, klen); 10127 - if (desc && !desc->enumerable) should_skip = true; 10162 + if (desc && !desc->enumerable) skip = true; 10128 10163 } 10129 10164 10130 - if (!should_skip) { 10131 - jsval_t key_str = js_mkstr(js, key, klen); 10132 - 10133 - jsval_t err = for_iter_bind_var(js, ctx, key_str); 10134 - if (is_err(err)) return err; 10135 - 10136 - jsval_t v = for_iter_exec_body(js, ctx); 10137 - if (is_err(v)) return v; 10138 - if (for_iter_handle_continue(js, ctx)) break; 10139 - if (js->flags & F_BREAK) break; 10140 - if (js->flags & F_RETURN) return v; 10165 + if (!skip) { 10166 + jsval_t out; 10167 + int rc = for_iter_step(js, ctx, js_mkstr(js, key, klen), &out); 10168 + if (rc) return (rc == 2) ? out : js_mkundef(); 10141 10169 } 10142 10170 10143 10171 prop_off = next_prop(header); ··· 11665 11693 set_slot(js, method_obj, SLOT_CODE, method_code); 11666 11694 set_slot(js, method_obj, SLOT_SCOPE, func_scope); 11667 11695 11668 - if (m->is_async) set_slot(js, method_obj, SLOT_ASYNC, js_mktrue()); 11696 + if (m->is_async) { 11697 + set_slot(js, method_obj, SLOT_ASYNC, js_mktrue()); 11698 + jsval_t async_proto = get_slot(js, js_glob(js), SLOT_ASYNC_PROTO); 11699 + if (vtype(async_proto) == T_FUNC) set_proto(js, method_obj, async_proto); 11700 + } 11669 11701 if (super_len > 0) set_slot(js, method_obj, SLOT_SUPER, super_constructor); 11670 11702 11671 11703 jsval_t method_func = mkval(T_FUNC, (unsigned long) vdata(method_obj)); ··· 12091 12123 jsoff_t slen; 12092 12124 vstr(js, sval, &slen); 12093 12125 setprop(js, js->this_val, js_mkstr(js, "length", 6), tov((double)slen)); 12126 + js_set_descriptor(js, js->this_val, "length", 6, 0); 12094 12127 } 12095 12128 return sval; 12096 12129 } ··· 12339 12372 return func; 12340 12373 } 12341 12374 12375 + static jsval_t builtin_AsyncFunction(struct js *js, jsval_t *args, int nargs) { 12376 + if (nargs == 0) { 12377 + jsval_t code_str = js_mkstr(js, "(){}", 4); 12378 + if (is_err(code_str)) return code_str; 12379 + 12380 + jsval_t func_obj = mkobj(js, 0); 12381 + if (is_err(func_obj)) return func_obj; 12382 + 12383 + set_slot(js, func_obj, SLOT_CODE, code_str); 12384 + set_slot(js, func_obj, SLOT_SCOPE, js_glob(js)); 12385 + set_slot(js, func_obj, SLOT_ASYNC, js_mktrue()); 12386 + 12387 + jsval_t async_proto = get_slot(js, js_glob(js), SLOT_ASYNC_PROTO); 12388 + if (vtype(async_proto) == T_FUNC) set_proto(js, func_obj, async_proto); 12389 + 12390 + jsval_t func = mkval(T_FUNC, (unsigned long)vdata(func_obj)); 12391 + jsval_t proto_setup = setup_func_prototype(js, func); 12392 + 12393 + if (is_err(proto_setup)) return proto_setup; 12394 + return func; 12395 + } 12396 + 12397 + size_t total_len = 1; 12398 + 12399 + for (int i = 0; i < nargs - 1; i++) { 12400 + if (vtype(args[i]) != T_STR) { 12401 + const char *str = js_str(js, args[i]); 12402 + args[i] = js_mkstr(js, str, strlen(str)); 12403 + if (is_err(args[i])) return args[i]; 12404 + } 12405 + total_len += vstrlen(js, args[i]); 12406 + if (i < nargs - 2) total_len += 1; 12407 + } 12408 + 12409 + total_len += 2; 12410 + 12411 + jsval_t body = args[nargs - 1]; 12412 + if (vtype(body) != T_STR) { 12413 + const char *str = js_str(js, body); 12414 + body = js_mkstr(js, str, strlen(str)); 12415 + if (is_err(body)) return body; 12416 + } 12417 + total_len += vstrlen(js, body); 12418 + total_len += 1; 12419 + 12420 + jsval_t code_str = js_mkstr(js, NULL, total_len); 12421 + if (is_err(code_str)) return code_str; 12422 + 12423 + jsoff_t code_len, code_off = vstr(js, code_str, &code_len); 12424 + char *code_ptr = (char *)&js->mem[code_off]; 12425 + size_t pos = 0; 12426 + 12427 + code_ptr[pos++] = '('; 12428 + 12429 + for (int i = 0; i < nargs - 1; i++) { 12430 + jsoff_t param_len, param_off = vstr(js, args[i], &param_len); 12431 + memcpy(code_ptr + pos, &js->mem[param_off], param_len); 12432 + pos += param_len; 12433 + if (i < nargs - 2) code_ptr[pos++] = ','; 12434 + } 12435 + 12436 + code_ptr[pos++] = ')'; 12437 + code_ptr[pos++] = '{'; 12438 + 12439 + jsoff_t body_len, body_off = vstr(js, body, &body_len); 12440 + memcpy(code_ptr + pos, &js->mem[body_off], body_len); 12441 + pos += body_len; 12442 + code_ptr[pos++] = '}'; 12443 + 12444 + jsval_t func_obj = mkobj(js, 0); 12445 + if (is_err(func_obj)) return func_obj; 12446 + 12447 + set_slot(js, func_obj, SLOT_CODE, code_str); 12448 + set_slot(js, func_obj, SLOT_SCOPE, js_glob(js)); 12449 + set_slot(js, func_obj, SLOT_ASYNC, js_mktrue()); 12450 + 12451 + jsval_t async_proto = get_slot(js, js_glob(js), SLOT_ASYNC_PROTO); 12452 + if (vtype(async_proto) == T_FUNC) set_proto(js, func_obj, async_proto); 12453 + 12454 + jsval_t func = mkval(T_FUNC, (unsigned long) vdata(func_obj)); 12455 + jsval_t proto_setup = setup_func_prototype(js, func); 12456 + 12457 + if (is_err(proto_setup)) return proto_setup; 12458 + return func; 12459 + } 12460 + 12342 12461 static jsval_t builtin_function_empty(struct js *js, jsval_t *args, int nargs) { 12343 12462 (void)js; (void)args; (void)nargs; 12344 12463 return js_mkundef(); ··· 12521 12640 jsval_t async_slot = get_slot(js, func_obj, SLOT_ASYNC); 12522 12641 if (vtype(async_slot) == T_BOOL && vdata(async_slot) == 1) { 12523 12642 set_slot(js, bound_func, SLOT_ASYNC, js_mktrue()); 12643 + jsval_t async_proto = get_slot(js, js_glob(js), SLOT_ASYNC_PROTO); 12644 + if (vtype(async_proto) == T_FUNC) set_proto(js, bound_func, async_proto); 12524 12645 } 12525 12646 12526 12647 jsval_t data_slot = get_slot(js, func_obj, SLOT_DATA); ··· 18678 18799 } 18679 18800 18680 18801 if (is_err(res)) { 18681 - jsval_t err_str = js_mkstr(js, js->errmsg, strlen(js->errmsg)); 18682 - reject_promise(js, h->nextPromise, err_str); 18802 + jsval_t reject_val = js->thrown_value; 18803 + if (vtype(reject_val) == T_UNDEF) { 18804 + reject_val = js_mkstr(js, js->errmsg, strlen(js->errmsg)); 18805 + } 18806 + js->thrown_value = js_mkundef(); 18807 + reject_promise(js, h->nextPromise, reject_val); 18683 18808 } else resolve_promise(js, h->nextPromise, res); 18684 18809 } else { 18685 18810 if (state == 1) resolve_promise(js, h->nextPromise, val); ··· 18827 18952 18828 18953 if (vtype(onRejected) == T_FUNC || vtype(onRejected) == T_CFUNC) { 18829 18954 pd->has_rejection_handler = true; 18830 - HASH_DELETE(hh_unhandled, unhandled_rejections, pd); 18955 + promise_data_entry_t *in_unhandled = NULL; 18956 + HASH_FIND(hh_unhandled, unhandled_rejections, &pd->promise_id, sizeof(uint32_t), in_unhandled); 18957 + if (in_unhandled) HASH_DELETE(hh_unhandled, unhandled_rejections, pd); 18831 18958 } 18832 18959 } 18833 18960 ··· 18840 18967 return builtin_promise_then(js, args_then, 2); 18841 18968 } 18842 18969 18970 + static jsval_t finally_value_thunk(struct js *js, jsval_t *args, int nargs) { 18971 + jsval_t me = js->current_func; 18972 + return get_slot(js, me, SLOT_DATA); 18973 + } 18974 + 18975 + static jsval_t finally_thrower(struct js *js, jsval_t *args, int nargs) { 18976 + jsval_t me = js->current_func; 18977 + jsval_t reason = get_slot(js, me, SLOT_DATA); 18978 + jsval_t rejected = js_mkpromise(js); 18979 + js_reject_promise(js, rejected, reason); 18980 + return rejected; 18981 + } 18982 + 18983 + static jsval_t finally_identity_reject(struct js *js, jsval_t *args, int nargs) { 18984 + jsval_t reason = nargs > 0 ? args[0] : js_mkundef(); 18985 + jsval_t rejected = js_mkpromise(js); 18986 + js_reject_promise(js, rejected, reason); 18987 + return rejected; 18988 + } 18989 + 18990 + static jsval_t finally_fulfilled_wrapper(struct js *js, jsval_t *args, int nargs) { 18991 + jsval_t me = js->current_func; 18992 + jsval_t callback = get_slot(js, me, SLOT_DATA); 18993 + jsval_t value = nargs > 0 ? args[0] : js_mkundef(); 18994 + 18995 + jsval_t result = js_mkundef(); 18996 + if (vtype(callback) == T_FUNC || vtype(callback) == T_CFUNC) { 18997 + result = js_call(js, callback, NULL, 0); 18998 + if (is_err(result)) return result; 18999 + } 19000 + 19001 + if (vtype(result) == T_PROMISE || (vtype(result) == T_OBJ && vtype(js_get(js, result, "then")) == T_FUNC)) { 19002 + jsval_t thunk_obj = mkobj(js, 0); 19003 + set_slot(js, thunk_obj, SLOT_CFUNC, js_mkfun(finally_value_thunk)); 19004 + set_slot(js, thunk_obj, SLOT_DATA, value); 19005 + jsval_t thunk_fn = mkval(T_FUNC, vdata(thunk_obj)); 19006 + 19007 + jsval_t identity_rej_fn = js_mkfun(finally_identity_reject); 19008 + 19009 + jsval_t then_fn = js_get(js, result, "then"); 19010 + jsval_t call_args[] = { thunk_fn, identity_rej_fn }; 19011 + return js_call_with_this(js, then_fn, result, call_args, 2); 19012 + } 19013 + 19014 + return value; 19015 + } 19016 + 19017 + static jsval_t finally_rejected_wrapper(struct js *js, jsval_t *args, int nargs) { 19018 + jsval_t me = js->current_func; 19019 + jsval_t callback = get_slot(js, me, SLOT_DATA); 19020 + jsval_t reason = nargs > 0 ? args[0] : js_mkundef(); 19021 + 19022 + jsval_t result = js_mkundef(); 19023 + if (vtype(callback) == T_FUNC || vtype(callback) == T_CFUNC) { 19024 + result = js_call(js, callback, NULL, 0); 19025 + if (is_err(result)) return result; 19026 + } 19027 + 19028 + if (vtype(result) == T_PROMISE || (vtype(result) == T_OBJ && vtype(js_get(js, result, "then")) == T_FUNC)) { 19029 + jsval_t thrower_obj = mkobj(js, 0); 19030 + set_slot(js, thrower_obj, SLOT_CFUNC, js_mkfun(finally_thrower)); 19031 + set_slot(js, thrower_obj, SLOT_DATA, reason); 19032 + 19033 + jsval_t thrower_fn = mkval(T_FUNC, vdata(thrower_obj)); 19034 + jsval_t identity_rej_fn = js_mkfun(finally_identity_reject); 19035 + 19036 + jsval_t then_prop = js_get(js, result, "then"); 19037 + jsval_t call_args[] = { thrower_fn, identity_rej_fn }; 19038 + 19039 + return js_call_with_this(js, then_prop, result, call_args, 2); 19040 + } 19041 + 19042 + jsval_t rejected = js_mkpromise(js); 19043 + js_reject_promise(js, rejected, reason); 19044 + return rejected; 19045 + } 19046 + 18843 19047 static jsval_t builtin_promise_finally(struct js *js, jsval_t *args, int nargs) { 18844 - jsval_t fn = nargs > 0 ? args[0] : js_mkundef(); 18845 - jsval_t args_then[] = { fn, fn }; 19048 + jsval_t callback = nargs > 0 ? args[0] : js_mkundef(); 19049 + 19050 + jsval_t fulfilled_obj = mkobj(js, 0); 19051 + set_slot(js, fulfilled_obj, SLOT_CFUNC, js_mkfun(finally_fulfilled_wrapper)); 19052 + set_slot(js, fulfilled_obj, SLOT_DATA, callback); 19053 + jsval_t fulfilled_fn = mkval(T_FUNC, vdata(fulfilled_obj)); 19054 + 19055 + jsval_t rejected_obj = mkobj(js, 0); 19056 + set_slot(js, rejected_obj, SLOT_CFUNC, js_mkfun(finally_rejected_wrapper)); 19057 + set_slot(js, rejected_obj, SLOT_DATA, callback); 19058 + jsval_t rejected_fn = mkval(T_FUNC, vdata(rejected_obj)); 19059 + 19060 + jsval_t args_then[] = { fulfilled_fn, rejected_fn }; 18846 19061 return builtin_promise_then(js, args_then, 2); 18847 19062 } 18848 19063 ··· 18851 19066 jsval_t fn = args[0]; 18852 19067 jsval_t res = js_call(js, fn, NULL, 0); 18853 19068 if (is_err(res)) { 18854 - jsval_t err_str = js_mkstr(js, js->errmsg, strlen(js->errmsg)); 18855 - jsval_t rej_args[] = { err_str }; 18856 - return builtin_Promise_reject(js, rej_args, 1); 19069 + jsval_t err_str = js_mkstr(js, js->errmsg, strlen(js->errmsg)); 19070 + jsval_t rej_args[] = { err_str }; 19071 + return builtin_Promise_reject(js, rej_args, 1); 18857 19072 } 18858 19073 jsval_t res_args[] = { res }; 18859 19074 return builtin_Promise_resolve(js, res_args, 1); ··· 18866 19081 18867 19082 coroutine_t *coro = (coroutine_t *)(uintptr_t)tod(coro_val); 18868 19083 if (!coro) return js_mkundef(); 18869 - 18870 19084 18871 19085 coro->result = nargs > 0 ? args[0] : js_mkundef(); 18872 19086 coro->is_settled = true; ··· 21351 21565 setprop(js, func_ctor_obj, ANT_STRING("name"), ANT_STRING("Function")); 21352 21566 setprop(js, glob, js_mkstr(js, "Function", 8), mkval(T_FUNC, vdata(func_ctor_obj))); 21353 21567 21568 + jsval_t async_func_proto_obj = js_mkobj(js); 21569 + set_proto(js, async_func_proto_obj, function_proto); 21570 + jsval_t async_func_proto = mkval(T_FUNC, vdata(async_func_proto_obj)); 21571 + set_slot(js, glob, SLOT_ASYNC_PROTO, async_func_proto); 21572 + 21573 + jsval_t async_func_ctor_obj = mkobj(js, 0); 21574 + set_proto(js, async_func_ctor_obj, function_proto); 21575 + set_slot(js, async_func_ctor_obj, SLOT_CFUNC, js_mkfun(builtin_AsyncFunction)); 21576 + js_setprop_nonconfigurable(js, async_func_ctor_obj, "prototype", 9, async_func_proto); 21577 + setprop(js, async_func_ctor_obj, js_mkstr(js, "length", 6), tov(1.0)); 21578 + js_set_descriptor(js, async_func_ctor_obj, "length", 6, JS_DESC_C); 21579 + setprop(js, async_func_ctor_obj, ANT_STRING("name"), ANT_STRING("AsyncFunction")); 21580 + jsval_t async_func_ctor = mkval(T_FUNC, vdata(async_func_ctor_obj)); 21581 + 21582 + setprop(js, async_func_proto_obj, js_mkstr(js, "constructor", 11), async_func_ctor); 21583 + js_set_descriptor(js, async_func_proto_obj, "constructor", 11, JS_DESC_W | JS_DESC_C); 21584 + 21354 21585 jsval_t str_ctor_obj = mkobj(js, 0); 21355 21586 set_proto(js, str_ctor_obj, function_proto); 21356 21587 set_slot(js, str_ctor_obj, SLOT_CFUNC, js_mkfun(builtin_String)); ··· 22309 22540 } 22310 22541 22311 22542 static descriptor_entry_t *get_or_create_desc(struct js *js, jsval_t obj, const char *key, size_t klen) { 22312 - if (vtype(obj) != T_OBJ && vtype(obj) != T_FUNC) return NULL; 22543 + if (vtype(obj) != T_OBJ && vtype(obj) != T_FUNC && vtype(obj) != T_ARR) return NULL; 22313 22544 jsoff_t obj_off = (jsoff_t)vdata(obj); 22314 22545 uint64_t desc_key = make_desc_key(obj_off, key, klen); 22315 22546