From 198784e4167a8fd2b92cbcbdb3659a787f56d28f Mon Sep 17 00:00:00 2001 From: Michael Leon Date: Thu, 16 Jan 2025 12:00:04 -0800 Subject: [PATCH] Update tests Summary: Update skiplist and add another edge case in LIT tests. Reviewed By: avp Differential Revision: D67920532 fbshipit-source-id: b6b75611eb52f84a2c40d57cb89bb5bfd37b4857 --- test/hermes/super-references.js | 44 +++++++++++++++++++++++++++++++++ utils/testsuite/skiplist.json | 8 ++++-- 2 files changed, 50 insertions(+), 2 deletions(-) diff --git a/test/hermes/super-references.js b/test/hermes/super-references.js index 226dbaf7bb6..b15af6e63a9 100644 --- a/test/hermes/super-references.js +++ b/test/hermes/super-references.js @@ -160,3 +160,47 @@ c3.asyncFun(); } //CHECK-NEXT: Pass })(); + +// super throws on null prototype. +(function () { + function key() { + return "x"; + } + var obj = { + reads() { + try { + super.x; + print("read fail"); + } catch (err) { + print("read threw", err.constructor.name); + } +//CHECK-NEXT: read threw TypeError + try { + super[key()]; + print("read fail"); + } catch (err) { + print("read threw", err.constructor.name); + } +//CHECK-NEXT: read threw TypeError + }, + writes() { + try { + super.x = 42; + print("write fail"); + } catch (err) { + print("write threw", err.constructor.name); + } +//CHECK-NEXT: write threw TypeError + try { + super[key()] = 42; + print("write fail"); + } catch (err) { + print("write threw", err.constructor.name); + } +//CHECK-NEXT: write threw TypeError + } + }; + Object.setPrototypeOf(obj, null); + obj.reads(); + obj.writes(); +})(); diff --git a/utils/testsuite/skiplist.json b/utils/testsuite/skiplist.json index 876eb408e29..d0d5e25001c 100644 --- a/utils/testsuite/skiplist.json +++ b/utils/testsuite/skiplist.json @@ -7,7 +7,6 @@ "test262/test/language/expressions/async-generator/", "test262/test/language/expressions/dynamic-import/", "test262/test/language/expressions/import.meta/", - "test262/test/language/expressions/super/", "test262/test/language/module-code/", "test262/test/language/statements/async-generator/", "test262/test/language/statements/let/", @@ -3968,7 +3967,12 @@ "test262/test/language/statements/with/unscopables-prop-get-err.js", "test262/test/staging/Temporal/UserCalendar/old/calendar-non-trivial-mergefields.js", "test262/test/staging/Temporal/UserCalendar/old/calendar-extra-fields.js", - "test262/test/language/expressions/arrow-function/arrow/capturing-closure-variables-2.js" + "test262/test/language/expressions/arrow-function/arrow/capturing-closure-variables-2.js", + "test262/test/language/expressions/super/prop-expr-obj-val-from-eval.js", + "test262/test/language/expressions/super/prop-dot-cls-val-from-eval.js", + "test262/test/language/expressions/super/prop-dot-obj-val-from-eval.js", + "test262/test/language/expressions/super/prop-expr-cls-val-from-eval.js" + ], "comment": "These tests require `eval` or `with`." }