diff --git a/harness/temporalHelpers.js b/harness/temporalHelpers.js index 66672f558d..318ef6f35f 100644 --- a/harness/temporalHelpers.js +++ b/harness/temporalHelpers.js @@ -7,6 +7,8 @@ defines: [TemporalHelpers] features: [Symbol.species, Symbol.iterator, Temporal] ---*/ +const IDENTIFIER = /^[$_\p{ID_Start}][$\u200C\u200D\p{ID_Continue}]*$/u; + function formatPropertyName(propertyKey, objectName = "") { switch (typeof propertyKey) { case "symbol": @@ -17,13 +19,20 @@ function formatPropertyName(propertyKey, objectName = "") { } else { return `${objectName}[Symbol('${propertyKey.description}')]` } - case "number": - return `${objectName}[${propertyKey}]`; + case "string": + if (propertyKey !== String(Number(propertyKey))) { + if (IDENTIFIER.test(propertyKey)) { + return objectName ? `${objectName}.${propertyKey}` : propertyKey; + } + return `${objectName}['${propertyKey.replace(/'/g, "\\'")}']` + } + // fall through default: - // TODO: check if propertyKey is an integer index. - return objectName ? `${objectName}.${propertyKey}` : propertyKey; + // integer or string integer-index + return `${objectName}[${propertyKey}]`; } } + const SKIP_SYMBOL = Symbol("Skip"); var TemporalHelpers = { diff --git a/test/built-ins/Array/fromAsync/asyncitems-arraylike-promise.js b/test/built-ins/Array/fromAsync/asyncitems-arraylike-promise.js index 932ca0b0fe..e01919314f 100644 --- a/test/built-ins/Array/fromAsync/asyncitems-arraylike-promise.js +++ b/test/built-ins/Array/fromAsync/asyncitems-arraylike-promise.js @@ -25,7 +25,7 @@ asyncTest(async function () { "get items.length", "get items.length.valueOf", "call items.length.valueOf", - "get items.0", - "get items.1", + "get items[0]", + "get items[1]", ]); }); diff --git a/test/built-ins/Temporal/Calendar/prototype/mergeFields/order-of-operations.js b/test/built-ins/Temporal/Calendar/prototype/mergeFields/order-of-operations.js index b455b1f760..bcc750600c 100644 --- a/test/built-ins/Temporal/Calendar/prototype/mergeFields/order-of-operations.js +++ b/test/built-ins/Temporal/Calendar/prototype/mergeFields/order-of-operations.js @@ -21,8 +21,8 @@ const expected = [ "get fields.extra", // CopyDataProperties on additionalFields "ownKeys additionalFields", - "getOwnPropertyDescriptor additionalFields.3", - "get additionalFields.3", + "getOwnPropertyDescriptor additionalFields[3]", + "get additionalFields[3]", "getOwnPropertyDescriptor additionalFields.monthCode", "get additionalFields.monthCode", "getOwnPropertyDescriptor additionalFields[Symbol('extra')]",