From 746d3776142c9b8072be6e504ba0d34f4ba5dd75 Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Tue, 22 Sep 2020 16:46:01 +0200 Subject: [PATCH] improve array to set deprecation for access to the first item --- lib/util/deprecation.js | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/lib/util/deprecation.js b/lib/util/deprecation.js index 6348d39ed..224e53482 100644 --- a/lib/util/deprecation.js +++ b/lib/util/deprecation.js @@ -134,20 +134,24 @@ exports.arrayToSetDeprecation = (set, name) => { }; return fn; }; - let indexerDefined = 0; + const defineIndexGetter = index => { + Object.defineProperty(set, index, { + get: createIndexGetter(index), + set(value) { + throw new Error( + `${name} was changed from Array to Set (indexing Array with write is not possible)` + ); + } + }); + }; + defineIndexGetter(0); + let indexerDefined = 1; Object.defineProperty(set, "length", { get() { dLength(); const length = this.size; - for (indexerDefined; indexerDefined < length; indexerDefined++) { - Object.defineProperty(set, indexerDefined, { - get: createIndexGetter(indexerDefined), - set(value) { - throw new Error( - `${name} was changed from Array to Set (indexing Array with write is not possible)` - ); - } - }); + for (indexerDefined; indexerDefined < length + 1; indexerDefined++) { + defineIndexGetter(indexerDefined); } return length; },