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>
pull/2643/head
William Morriss 4 years ago committed by GitHub
parent 750a17653d
commit 165e6f1948
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 1
      CHANGELOG.md
  2. 1
      contracts/utils/structs/EnumerableSet.sol
  3. 2
      test/utils/structs/EnumerableSet.behavior.js

@ -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

@ -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];
} }

@ -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));
}); });
}); });

Loading…
Cancel
Save