Browse Source

EnumerableSet: Remove Boundary Check in _at (#2606)

* remove boundary check

* fix tests for EnumerableSet "index out of bound"

* Changelog

Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
William Morriss 4 years ago
parent
commit
165e6f1948

+ 1 - 0
CHANGELOG.md

@@ -2,6 +2,7 @@
 
 
 ## Unreleased
 ## Unreleased
  * Enumerables: Improve gas cost of removal in `EnumerableSet` and `EnumerableMap`.
  * Enumerables: Improve gas cost of removal in `EnumerableSet` and `EnumerableMap`.
+ * Enumerables: Improve gas cost of lookup in `EnumerableSet` and `EnumerableMap`.
 
 
 ## Unreleased
 ## Unreleased
 
 

+ 0 - 1
contracts/utils/structs/EnumerableSet.sol

@@ -127,7 +127,6 @@ library EnumerableSet {
     * - `index` must be strictly less than {length}.
     * - `index` must be strictly less than {length}.
     */
     */
     function _at(Set storage set, uint256 index) private view returns (bytes32) {
     function _at(Set storage set, uint256 index) private view returns (bytes32) {
-        require(set._values.length > index, "EnumerableSet: index out of bounds");
         return set._values[index];
         return set._values[index];
     }
     }
 
 

+ 1 - 1
test/utils/structs/EnumerableSet.behavior.js

@@ -51,7 +51,7 @@ function shouldBehaveLikeSet (valueA, valueB, valueC) {
 
 
   describe('at', function () {
   describe('at', function () {
     it('reverts when retrieving non-existent elements', async function () {
     it('reverts when retrieving non-existent elements', async function () {
-      await expectRevert(this.set.at(0), 'EnumerableSet: index out of bounds');
+      await expectRevert.unspecified(this.set.at(0));
     });
     });
   });
   });