erlang: link/unlink/monitor/demonitor + refs (+17 tests)
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Has been cancelled

This commit is contained in:
2026-04-25 02:16:04 +00:00
parent aa7d691028
commit c363856df6
6 changed files with 262 additions and 7 deletions

View File

@@ -372,6 +372,7 @@
(range 0 (len ea)))))
(and (= (type-of a) "string") (= (type-of b) "string")) (= a b)
(and (er-pid? a) (er-pid? b)) (= (get a :id) (get b :id))
(and (er-ref? a) (er-ref? b)) (= (get a :id) (get b :id))
:else false)))
;; Exact equality: 1 =/= 1.0 in Erlang.
@@ -562,9 +563,15 @@
(= name "atom_to_list") (er-bif-atom-to-list vs)
(= name "list_to_atom") (er-bif-list-to-atom vs)
(= name "is_pid") (er-bif-is-pid vs)
(= name "is_reference") (er-bif-is-reference vs)
(= name "self") (er-bif-self vs)
(= name "spawn") (er-bif-spawn vs)
(= name "exit") (er-bif-exit vs)
(= name "make_ref") (er-bif-make-ref vs)
(= name "link") (er-bif-link vs)
(= name "unlink") (er-bif-unlink vs)
(= name "monitor") (er-bif-monitor vs)
(= name "demonitor") (er-bif-demonitor vs)
:else (error
(str "Erlang: undefined function '" name "/" (len vs) "'")))))
@@ -894,6 +901,7 @@
(er-tuple? v) (str "{" (er-format-tuple-elems (get v :elements)) "}")
(er-fun? v) "#Fun"
(er-pid? v) (str "<pid:" (get v :id) ">")
(er-ref? v) (str "#Ref<" (get v :id) ">")
:else (str v))))
(define