Skip to content

Commit e943f8d

Browse files
authored
iterators and utilities (#17441)
1 parent 1142cf6 commit e943f8d

File tree

8 files changed

+828
-639
lines changed

8 files changed

+828
-639
lines changed

aptos-move/framework/aptos-framework/doc/big_ordered_map.md

Lines changed: 335 additions & 185 deletions
Large diffs are not rendered by default.

aptos-move/framework/aptos-framework/doc/ordered_map.md

Lines changed: 166 additions & 168 deletions
Large diffs are not rendered by default.

aptos-move/framework/aptos-framework/sources/datastructures/big_ordered_map.move

Lines changed: 208 additions & 150 deletions
Large diffs are not rendered by default.

aptos-move/framework/aptos-framework/sources/datastructures/big_ordered_map.spec.move

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ spec aptos_std::big_ordered_map {
9797
pragma verify = false;
9898
}
9999

100-
spec lower_bound {
100+
spec internal_lower_bound {
101101
pragma opaque;
102102
pragma verify = false;
103103
}
@@ -221,17 +221,17 @@ spec aptos_std::big_ordered_map {
221221
}
222222

223223

224-
spec find {
224+
spec internal_find {
225225
pragma opaque;
226226
pragma verify = false;
227227
}
228228

229-
spec new_begin_iter {
229+
spec internal_new_begin_iter {
230230
pragma opaque;
231231
pragma verify = false;
232232
}
233233

234-
spec new_end_iter {
234+
spec internal_new_end_iter {
235235
pragma opaque;
236236
pragma verify = false;
237237
}

aptos-move/framework/aptos-framework/sources/datastructures/ordered_map.move

Lines changed: 95 additions & 116 deletions
Large diffs are not rendered by default.

aptos-move/framework/aptos-framework/sources/datastructures/ordered_map.spec.move

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ spec aptos_std::ordered_map {
119119
}
120120

121121

122-
spec lower_bound {
122+
spec internal_lower_bound {
123123
pragma opaque;
124124
pragma verify = false;
125125
}
@@ -257,17 +257,17 @@ spec aptos_std::ordered_map {
257257
}
258258

259259

260-
spec find {
260+
spec internal_find {
261261
pragma opaque;
262262
pragma verify = false;
263263
}
264264

265-
spec new_begin_iter {
265+
spec internal_new_begin_iter {
266266
pragma opaque;
267267
pragma verify = false;
268268
}
269269

270-
spec new_end_iter {
270+
spec internal_new_end_iter {
271271
pragma opaque;
272272
pragma verify = false;
273273
}
@@ -282,5 +282,9 @@ spec aptos_std::ordered_map {
282282
pragma verify = false;
283283
}
284284

285+
spec remove_or_none {
286+
pragma opaque;
287+
pragma verify = false;
288+
}
285289

286290
}

third_party/move/move-compiler-v2/tests/checking/receiver/bad_receiver.exp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@ error: undeclared receiver function `borrow` for type `vector<Entry<K, V>>`
66
25 │ &map.entries.borrow(self.index).key
77
│ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
88

9-
error: undeclared receiver function `lower_bound` for type `OrderedMap<K, V>`
10-
┌─ tests/checking/receiver/bad_receiver.move:29:27
9+
error: undeclared receiver function `internal_lower_bound` for type `OrderedMap<K, V>`
10+
┌─ tests/checking/receiver/bad_receiver.move:29:36
1111
12-
29 │ let lower_bound = self.lower_bound(key);
13-
│ ^^^^^^^^^^^^^^^^^^^^^
12+
29 │ let internal_lower_bound = self.internal_lower_bound(key);
13+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1414

1515
error: type cannot have type arguments
1616
┌─ tests/checking/receiver/bad_receiver.move:39:36

third_party/move/move-compiler-v2/tests/checking/receiver/bad_receiver.move

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,22 +25,22 @@ module aptos_std::ordered_map {
2525
&map.entries.borrow(self.index).key
2626
}
2727

28-
public fun find<K, V>(self: &OrderedMap<K, V>, key: &K): Iterator {
29-
let lower_bound = self.lower_bound(key);
30-
if (lower_bound.iter_is_end(self)) {
31-
lower_bound
32-
} else if (lower_bound.iter_borrow_key(self) == key) {
33-
lower_bound
28+
public fun internal_find<K, V>(self: &OrderedMap<K, V>, key: &K): Iterator {
29+
let internal_lower_bound = self.internal_lower_bound(key);
30+
if (internal_lower_bound.iter_is_end(self)) {
31+
internal_lower_bound
32+
} else if (internal_lower_bound.iter_borrow_key(self) == key) {
33+
internal_lower_bound
3434
} else {
35-
self.new_end_iter()
35+
self.internal_new_end_iter()
3636
}
3737
}
3838

3939
public fun borrow<K, V>(self: &OrderedMao<K, V>, key: &K): &V {
4040
self.find(key).iter_borrow(self)
4141
}
4242

43-
public fun new_end_iter<K, V>(self: &OrderedMap<K, V>): Iterator {
43+
public fun internal_new_end_iter<K, V>(self: &OrderedMap<K, V>): Iterator {
4444
Iterator::End
4545
}
4646

0 commit comments

Comments
 (0)