diff --git a/resources/META-INF/babashka/deps.edn b/resources/META-INF/babashka/deps.edn index 217270f0..25faf037 100644 --- a/resources/META-INF/babashka/deps.edn +++ b/resources/META-INF/babashka/deps.edn @@ -54,14 +54,11 @@ {:extra-paths ["process/src" "process/test" "test-resources/lib_tests"] :extra-deps {org.clj-commons/clj-http-lite {:mvn/version "0.4.392"} org.babashka/spec.alpha {:git/url "https://github.com/babashka/spec.alpha" - :sha "1deb5702da3747a42f3aff769307672e59fc8ed8"} - lambdaisland/regal {:git/url "https://github.com/lambdaisland/regal" - :sha "f902d2c43121f9e1c48603d6eb99f5900eb6a9f6"} - weavejester/medley {:git/url "https://github.com/weavejester/medley" - :sha "a4e5fb5383f5c0d83cb2d005181a35b76d8a136d"} + :sha "0dec1f88cbde74a0470b454396f09a03adb4ae39"} + lambdaisland/regal {:mvn/version "0.0.143"} cprop/cprop {:mvn/version "0.1.16"} comb/comb {:mvn/version "0.1.1"} - mvxcvi/arrangement {:mvn/version "1.2.0"} + mvxcvi/arrangement {:mvn/version "2.0.0"} org.clojure/data.zip {:mvn/version "1.0.0"} clojure-csv/clojure-csv {:mvn/version "2.0.2"} org.clojure/math.combinatorics {:mvn/version "0.1.6"} @@ -69,16 +66,16 @@ henryw374/cljc.java-time {:git/url "https://github.com/henryw374/cljc.java-time.git" :sha "e3d184b78e933322b3fcaa6ca66cbb8f42a6b35c"} - camel-snake-kebab/camel-snake-kebab {:mvn/version "0.4.1"} + camel-snake-kebab/camel-snake-kebab {:mvn/version "0.4.2"} aero/aero {:mvn/version "1.1.6"} org.clojure/data.generators {:mvn/version "1.0.0"} - honeysql/honeysql {:mvn/version "1.0.444"} - com.github.seancorfield/honeysql {:mvn/version "2.0.0-rc2"} - minimallist/minimallist {:mvn/version "0.0.6"} - circleci/bond {:mvn/version "0.4.0"} - version-clj/version-clj {:mvn/version "2.0.1"} + honeysql/honeysql {:mvn/version "1.0.461"} + com.github.seancorfield/honeysql {:mvn/version "2.2.840"} + minimallist/minimallist {:mvn/version "0.0.10"} + circleci/bond {:mvn/version "0.6.0"} + version-clj/version-clj {:mvn/version "2.0.2"} gaka/gaka {:mvn/version "0.3.0"} - failjure/failjure {:mvn/version "2.1.1"} + failjure/failjure {:mvn/version "2.2.0"} io.helins/binf {:mvn/version "1.1.0-beta0"} rm-hull/jasentaa {:mvn/version "0.2.5"} slingshot/slingshot {:mvn/version "0.12.2"} @@ -95,11 +92,29 @@ hato/hato {:mvn/version "0.8.2"} better-cond/better-cond {:mvn/version "2.1.1"} org.clojure/core.specs.alpha {:mvn/version "0.2.62"} - reifyhealth/specmonstah {:mvn/version "2.0.0"} + reifyhealth/specmonstah {:git/url "https://github.com/reifyhealth/specmonstah", :sha "a2b357009a3aa99a0c2d2361f3bbcd0b0e36505e"} exoscale/coax {:mvn/version "1.0.0-alpha14"} orchestra/orchestra {:mvn/version "2021.01.01-1"} expound/expound {:mvn/version "0.8.10"} - integrant/integrant {:mvn/version "0.8.0"}} + integrant/integrant {:mvn/version "0.8.0"} + com.stuartsierra/dependency {:mvn/version "1.0.0"} + listora/again {:mvn/version "1.0.0"} + org.clojure/tools.gitlibs {:mvn/version "2.4.172"} + environ/environ {:mvn/version "1.2.0"} + table/table {:git/url "https://github.com/cldwalker/table", :sha "f6293c5f3dac1dd6f525a80fc80930f8ccdf16b7"} + markdown-clj/markdown-clj {:mvn/version "1.10.8"} + org.clojure/tools.namespace {:git/url "https://github.com/babashka/tools.namespace", :sha "a13b037215e21a2e71aa34b27e1dd52c801a2a7b"} + medley/medley {:mvn/version "1.3.0"} + io.github.cognitect-labs/test-runner {:git/tag "v0.5.0", :git/sha "b3fd0d2"} + borkdude/missing.test.assertions {:git/url "https://github.com/borkdude/missing.test.assertions", :sha "603cb01bee72fb17addacc53c34c85612684ad70"} + dev.nubank/docopt {:mvn/version "0.6.1-fix7"} + testdoc/testdoc {:mvn/version "1.4.1"} + org.clojars.lispyclouds/contajners {:mvn/version "0.0.4"} + borkdude/rewrite-edn {:mvn/version "0.1.0"} + clojure-term-colors/clojure-term-colors {:mvn/version "0.1.0"} + io.aviso/pretty {:mvn/version "1.1.1"} + progrock/progrock {:mvn/version "0.1.2"} + djblue/portal {:mvn/version "0.19.0"}} :classpath-overrides {org.clojure/clojure nil org.clojure/spec.alpha nil}} :clj-nvd diff --git a/src/babashka/impl/clojure/core.clj b/src/babashka/impl/clojure/core.clj index 42e9ae27..d3611b6b 100644 --- a/src/babashka/impl/clojure/core.clj +++ b/src/babashka/impl/clojure/core.clj @@ -1,7 +1,7 @@ (ns babashka.impl.clojure.core {:no-doc true} (:refer-clojure :exclude [future read+string clojure-version with-precision - send-via send send-off sync]) + send-via send send-off sync into-array]) (:require [babashka.impl.common :as common] [borkdude.graal.locking :as locking] [clojure.core :as c] @@ -142,6 +142,21 @@ [_flags-ignored-for-now & body] `(clojure.core/-run-in-transaction (fn [] ~@body))) +(defn into-array + "Returns an array with components set to the values in aseq. The array's + component type is type if provided, or the type of the first value in + aseq if present, or Object. All values in aseq must be compatible with + the component type. Class objects for the primitive types can be obtained + using, e.g., Integer/TYPE." + {:added "1.0" + :static true} + ([aseq] + (try (clojure.lang.RT/seqToTypedArray (seq aseq)) + (catch IllegalArgumentException _ + (clojure.lang.RT/seqToTypedArray Object (seq aseq))))) + ([type aseq] + (clojure.lang.RT/seqToTypedArray type (seq aseq)))) + (def core-extras {;; agents 'agent (copy-core-var agent) @@ -202,5 +217,6 @@ 'NaN? (sci/copy-var NaN? clojure-core-ns) 'infinite? (sci/copy-var infinite? clojure-core-ns) 'StackTraceElement->vec (sci/copy-var StackTraceElement->vec clojure-core-ns) - 'memfn (sci/copy-var memfn clojure-core-ns)} + 'memfn (sci/copy-var memfn clojure-core-ns) + 'into-array (sci/copy-var into-array clojure-core-ns)} ) diff --git a/test/babashka/main_test.clj b/test/babashka/main_test.clj index a3a3f687..0e215388 100644 --- a/test/babashka/main_test.clj +++ b/test/babashka/main_test.clj @@ -813,6 +813,10 @@ true"))) (deftest aget-test (is (= 1 (bb nil "(def array-2d (into-array [(int-array [1 2]) (int-array [3 4])])) (aget array-2d 0 0)")))) +(deftest into-array-fallback-test + (is (= :f (bb nil "(first (into-array [:f]))"))) + (is (= :f (bb nil "(first (first (into-array [(into-array [:f])])))")))) + ;;;; Scratch (comment