The type-hint on init-state is wrong.

It has to be either

(defn {:tag 'longs} init-state [] (long-array 1))
or (preferred)
(defn init-state ^longs [] (long-array 1))


shlomivak...@gmail.com writes:

> I tried playing around with the new primitive type hints and got the
> following weird behavior on [org.clojure/clojure "1.7.0-beta2"]:
>
> (defn ^longs init-state []  (long-array 1))
>
> (defn ^long store-state [^longs c ^long a] (aset c 0 a))
>
> running the following line resulted in an exception:
>
> (let [x (init-state)]
>   (store-state x 5))
>
> 1. Caused by java.lang.VerifyError
>    (class: clojure_7/core$eval13270, method: invoke signature:
>    ()Ljava/lang/Object;) Unable to pop operand off an empty stack
>
>                     Class.java:   -2
>  java.lang.Class/getDeclaredConstructors0
>                     Class.java: 2671
>  java.lang.Class/privateGetDeclaredConstructors
>                     Class.java: 3075  java.lang.Class/getConstructor0
>                     Class.java:  412  java.lang.Class/newInstance
>                  Compiler.java: 4843  clojure.lang.Compiler$ObjExpr/eval
>                  Compiler.java: 6791  clojure.lang.Compiler/eval
>                  Compiler.java: 7237  clojure.lang.Compiler/load
>                           REPL:    1  reverse-index.main/eval13258
>                  Compiler.java: 6792  clojure.lang.Compiler/eval
>                  Compiler.java: 6755  clojure.lang.Compiler/eval
>                       core.clj: 3079  clojure.core/eval
>                       main.clj:  240  clojure.main/repl/read-eval-print/fn
>                       main.clj:  240  clojure.main/repl/read-eval-print
>                       main.clj:  258  clojure.main/repl/fn
>                       main.clj:  258  clojure.main/repl
>                    RestFn.java: 1523  clojure.lang.RestFn/invoke
>         interruptible_eval.clj:   58
>  clojure.tools.nrepl.middleware.interruptible-eval/evaluate/fn
>                       AFn.java:  152  clojure.lang.AFn/applyToHelper
>                       AFn.java:  144  clojure.lang.AFn/applyTo
>                       core.clj:  628  clojure.core/apply
>                       core.clj: 1866  clojure.core/with-bindings*
>                    RestFn.java:  425  clojure.lang.RestFn/invoke
>         interruptible_eval.clj:   56
>  clojure.tools.nrepl.middleware.interruptible-eval/evaluate
>         interruptible_eval.clj:  188
>  clojure.tools.nrepl.middleware.interruptible-eval/interruptible-eval/fn/fn
>         interruptible_eval.clj:  157
>  clojure.tools.nrepl.middleware.interruptible-eval/run-next/fn
>                       AFn.java:   22  clojure.lang.AFn/run
>        ThreadPoolExecutor.java: 1142
>  java.util.concurrent.ThreadPoolExecutor/runWorker
>        ThreadPoolExecutor.java:  617
>  java.util.concurrent.ThreadPoolExecutor$Worker/run
>                    Thread.java:  745  java.lang.Thread/run
>
> while the following line worked just fine:
>
> (store-state (init-state) 5)
>
> and also this works fine:
>
> (def a (init-state))
> (store-state a 5)
>
> (aget a 0) ;; 5
>
> What do you think?
>
> On Friday, April 24, 2015 at 11:27:40 AM UTC-7, Alex Miller wrote:
>>
>> Clojure 1.7.0-beta2 is now available.
>>
>> Try it via
>> - Download:
>> https://repo1.maven.org/maven2/org/clojure/clojure/1.7.0-beta2/
>> - Leiningen: [org.clojure/clojure "1.7.0-beta2"]
>>
>> Regression fixes since 1.7.0-beta1:
>>
>> 1) CLJ-1711 - structmap iterator broken
>> 2) CLJ-1709 - range wrong for step != 1
>> 3) CLJ-1713 - range chunks are not serializable
>> 4) CLJ-1698 - fix reader conditional bugs
>>
>> Additional enhancements to new features since 1.7.0-beta1:
>>
>> 1) CLJ-1703 - Pretty print #error and new public function Throwable->map
>> 2) CLJ-1700 - Reader conditionals now allowed in the REPL
>> 3) CLJ-1699 - Allow data_readers.cljc as well as data_readers.clj
>>
>> For a full list of changes since 1.6.0, see:
>> https://github.com/clojure/clojure/blob/master/changes.md
>>
>> Please give it a try and let us know if things are working (or not)!
>>
>> - Alex
>>
>>

--

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to