Fix gc test
This commit is contained in:
parent
ea4f56886d
commit
267646fbe7
7 changed files with 11 additions and 21 deletions
2
deps.edn
2
deps.edn
|
|
@ -20,7 +20,7 @@
|
|||
"reify/src"],
|
||||
:deps {org.clojure/clojure {:mvn/version "1.11.1"},
|
||||
org.babashka/sci {:local/root "sci"}
|
||||
org.babashka/babashka.impl.reify {:mvn/version "0.1.2"}
|
||||
org.babashka/babashka.impl.reify {:mvn/version "0.1.3"}
|
||||
org.babashka/sci.impl.types {:mvn/version "0.0.2"}
|
||||
babashka/babashka.curl {:local/root "babashka.curl"}
|
||||
babashka/fs {:local/root "fs"}
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@
|
|||
[nrepl/bencode "1.1.0"]
|
||||
[borkdude/sci.impl.reflector "0.0.1"]
|
||||
[org.babashka/sci.impl.types "0.0.2"]
|
||||
[org.babashka/babashka.impl.reify "0.1.2"]
|
||||
[org.babashka/babashka.impl.reify "0.1.3"]
|
||||
[org.clojure/core.async "1.5.648"]
|
||||
[org.clojure/test.check "1.1.1"]
|
||||
[com.github.clj-easy/graal-build-time "0.1.0"]
|
||||
|
|
|
|||
2
reify/bb.edn
Normal file
2
reify/bb.edn
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
{:tasks {install (clojure "-T:build install")
|
||||
deploy (clojure "-T:build deploy")}}
|
||||
|
|
@ -3,7 +3,7 @@
|
|||
[clojure.tools.build.api :as b]))
|
||||
|
||||
(def lib 'org.babashka/babashka.impl.reify)
|
||||
(def version "0.1.2")
|
||||
(def version "0.1.3")
|
||||
(def class-dir "target/classes")
|
||||
(def basis (b/create-basis {:project "deps.edn"}))
|
||||
(def jar-file (format "target/%s-%s.jar" (name lib) version))
|
||||
|
|
|
|||
|
|
@ -61,19 +61,6 @@
|
|||
java.lang.Object
|
||||
(toString [this] (toString-fn this)))))
|
||||
|
||||
(defn reify-runnable [m]
|
||||
(let [methods (:methods m)
|
||||
run-fn (or (get methods 'run)
|
||||
(fn [_]))]
|
||||
(reify
|
||||
sci.impl.types.IReified
|
||||
(getMethods [_] (:methods m))
|
||||
(getInterfaces [_] (:interfaces m))
|
||||
(getProtocols [_] (:protocols m))
|
||||
java.lang.Runnable
|
||||
(run [this] (run-fn this))))
|
||||
)
|
||||
|
||||
(defmacro gen-reify-fn []
|
||||
`(fn [~'m]
|
||||
(when (> (count (:interfaces ~'m)) 1)
|
||||
|
|
@ -91,9 +78,7 @@
|
|||
["clojure.lang.IFn"
|
||||
`(reify-ifn ~'m)
|
||||
"java.lang.Object"
|
||||
`(reify-object ~'m)
|
||||
"java.lang.Runnable"
|
||||
`(reify-runnable ~'m)]
|
||||
`(reify-object ~'m)]
|
||||
(for [i interfaces]
|
||||
(let [in (.getName ^Class i)]
|
||||
[in
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@
|
|||
clojure.lang.Reversible
|
||||
clojure.lang.Seqable
|
||||
java.lang.Iterable
|
||||
java.lang.Runnable
|
||||
java.net.http.WebSocket$Listener
|
||||
java.util.Iterator
|
||||
java.util.function.Consumer
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
(:require
|
||||
[babashka.test-utils :as test-utils]
|
||||
[clojure.edn :as edn]
|
||||
[clojure.string :as str]
|
||||
[clojure.test :as test :refer [deftest is testing]]))
|
||||
|
||||
(defn bb [input & args]
|
||||
|
|
@ -52,7 +53,7 @@
|
|||
|
||||
(deftest reify-object
|
||||
(testing "empty methods"
|
||||
(is (clojure.string/starts-with?
|
||||
(is (str/starts-with?
|
||||
(bb nil "
|
||||
(str (reify Object))")
|
||||
"babashka.impl.reify")))
|
||||
|
|
@ -144,7 +145,8 @@
|
|||
(let [t (atom (Object.))
|
||||
wr (java.lang.ref.WeakReference. @t)]
|
||||
(reset! t nil)
|
||||
(while (.get wr)
|
||||
(while (or (.get wr)
|
||||
(not @deleted?))
|
||||
(System/gc)
|
||||
(System/runFinalization))))
|
||||
(make-cleanable-ref)
|
||||
|
|
|
|||
Loading…
Reference in a new issue