From 2dde5daef73d9dbfca91d0404841b6bf14c626e0 Mon Sep 17 00:00:00 2001 From: Florian Hammerschmidt Date: Thu, 23 Oct 2025 11:51:57 +0200 Subject: [PATCH 1/2] WeakSet docstrings --- packages/@rescript/runtime/Stdlib_WeakSet.res | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/packages/@rescript/runtime/Stdlib_WeakSet.res b/packages/@rescript/runtime/Stdlib_WeakSet.res index 5316552323..0d1b011711 100644 --- a/packages/@rescript/runtime/Stdlib_WeakSet.res +++ b/packages/@rescript/runtime/Stdlib_WeakSet.res @@ -1,10 +1,48 @@ +/*** +Bindings to JavaScript's `WeakSet`. + +Weak sets store object references without preventing those objects from being garbage collected. +*/ + +/** Mutable weak set storing object references of type `'a`. */ @notUndefined type t<'a> +/** +Creates an empty weak set. + +See [`WeakSet`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet) on MDN. + +## Examples + +```rescript +let visited: WeakSet.t<{..}> = WeakSet.make() +``` +*/ @new external make: unit => t<'a> = "WeakSet" +/** +`add(set, value)` inserts `value` into the weak set and returns the set for chaining. + +## Examples + +```rescript +let set = WeakSet.make() +let node = Stdlib_Object.make() +WeakSet.add(set, node) +WeakSet.has(set, node) == true +``` +*/ @send external add: (t<'a>, 'a) => t<'a> = "add" + +/** +`delete(set, value)` removes `value` and returns `true` if an entry existed. +*/ @send external delete: (t<'a>, 'a) => bool = "delete" + +/** +`has(set, value)` checks whether `value` exists in the weak set. +*/ @send external has: (t<'a>, 'a) => bool = "has" /** From 410f5284ac1779527bc87d1727577ba8c0f0e252 Mon Sep 17 00:00:00 2001 From: Florian Hammerschmidt Date: Thu, 23 Oct 2025 14:57:44 +0200 Subject: [PATCH 2/2] More examples and MDN links --- packages/@rescript/runtime/Stdlib_WeakSet.res | 33 +++++++++++++++++-- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/packages/@rescript/runtime/Stdlib_WeakSet.res b/packages/@rescript/runtime/Stdlib_WeakSet.res index 0d1b011711..51ff206270 100644 --- a/packages/@rescript/runtime/Stdlib_WeakSet.res +++ b/packages/@rescript/runtime/Stdlib_WeakSet.res @@ -1,7 +1,7 @@ /*** Bindings to JavaScript's `WeakSet`. -Weak sets store object references without preventing those objects from being garbage collected. +Weak sets store references to objects without preventing those objects from being garbage collected. */ /** Mutable weak set storing object references of type `'a`. */ @@ -16,7 +16,8 @@ See [`WeakSet`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Referenc ## Examples ```rescript -let visited: WeakSet.t<{..}> = WeakSet.make() +let visited = WeakSet.make() +WeakSet.has(visited, Object.make()) == false ``` */ @new external make: unit => t<'a> = "WeakSet" @@ -24,11 +25,13 @@ let visited: WeakSet.t<{..}> = WeakSet.make() /** `add(set, value)` inserts `value` into the weak set and returns the set for chaining. +See [`WeakSet.prototype.add`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet/add) on MDN. + ## Examples ```rescript let set = WeakSet.make() -let node = Stdlib_Object.make() +let node = Object.make() WeakSet.add(set, node) WeakSet.has(set, node) == true ``` @@ -37,11 +40,35 @@ WeakSet.has(set, node) == true /** `delete(set, value)` removes `value` and returns `true` if an entry existed. + +See [`WeakSet.prototype.delete`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet/delete) on MDN. + +## Examples + +```rescript +let set = WeakSet.make() +let node = Object.make() +let _ = WeakSet.add(set, node) +WeakSet.delete(set, node) == true +WeakSet.delete(set, node) == false +``` */ @send external delete: (t<'a>, 'a) => bool = "delete" /** `has(set, value)` checks whether `value` exists in the weak set. + +See [`WeakSet.prototype.has`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet/has) on MDN. + +## Examples + +```rescript +let set = WeakSet.make() +let node = Object.make() +WeakSet.has(set, node) == false +let _ = WeakSet.add(set, node) +WeakSet.has(set, node) == true +``` */ @send external has: (t<'a>, 'a) => bool = "has"