Skip to content

Commit fa81f99

Browse files
CrowdHailerlpil
authored andcommitted
add reference_equal function
1 parent 315967f commit fa81f99

File tree

3 files changed

+18
-0
lines changed

3 files changed

+18
-0
lines changed

src/ffi.mjs

+4
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,10 @@ export function set_reference(ref, value) {
127127
return previous;
128128
}
129129

130+
export function reference_equal(a,b) {
131+
return a === b
132+
}
133+
130134
export function all_promises(...promises) {
131135
if (promises.length === 1) {
132136
return Promise.all(promises[0]);

src/gleam/javascript.gleam

+3
Original file line numberDiff line numberDiff line change
@@ -35,3 +35,6 @@ pub fn update_reference(ref: Reference(a), f: fn(a) -> a) -> a {
3535
set_reference(ref, f(value))
3636
value
3737
}
38+
39+
@external(javascript, "../ffi.mjs", "reference_equal")
40+
pub fn reference_equal(a: Reference(a), b: Reference(a)) -> Bool

test/gleam/javascript_test.gleam

+11
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import gleam/javascript.{
22
BooleanType, FunctionType, NumberType, ObjectType, StringType, SymbolType,
33
UndefinedType,
44
}
5+
import gleeunit/should
56

67
pub fn type_of_test() {
78
let assert UndefinedType = javascript.type_of(Nil)
@@ -34,3 +35,13 @@ pub fn reference_test() {
3435
let assert 2 = javascript.set_reference(ref, 3)
3536
let assert 3 = javascript.dereference(ref)
3637
}
38+
39+
pub fn reference_equality_test() {
40+
javascript.make_reference(0)
41+
|> javascript.reference_equal(javascript.make_reference(0))
42+
|> should.equal(False)
43+
44+
let ref = javascript.make_reference(0)
45+
javascript.reference_equal(ref, ref)
46+
|> should.equal(True)
47+
}

0 commit comments

Comments
 (0)