Hi, finally got some time to dig deeper. The minimal code to reproduce this has shrunk:
(defprotocol Anonymous (start-job! [this])) (defrecord NoopJob [] Anonymous (start-job! [this] (yabug.services.logger/environment))) The environment macro was called by log/error but not by the other severity level macros. The error macro within a defrecord is the only case where it fails. This is the environment macro definition: (defmacro environment "Expands to code that generates a map of locals: names to values" [] (clojure.pprint/pprint (macroexpand `(zipmap '~(keys &env) [~@(keys &env)]))) `(zipmap '~(keys &env) [~@(keys &env)])) I added the macroexpand in the macro to get what it expands to in the context of the defrecord at compile time. Outside of the defrecord the compiler does not complain (let, ...)). The protocol by itself does not seem to be a significant factor. I got this at different places under different protocols. This is the 1.9 macro expansion outputted at compile time before ending up with exception while evaluating the resulting code: (clojure.core/zipmap '(__hash __meta this __hasheq __extmap) [__hash __meta this __hasheq __extmap]) This is the 1.8 macroexpansion of this macro which is a bit shorter, there's seem to be less context generated by the defrecord macro expansion: (clojure.core/zipmap '(__meta this __extmap) [__meta this __extmap]) The expansion of the defrecord context is slightly bigger but nothing hits me when I compare both expanded vectors at the end. I am assuming that this the expression that the compiler cannot evaluate in 1.9 since it the error originates from the VectorExpr class. Is there anything obvious on with the evaluation of the last vector in the 1.9 expansion that would explain this error ? I don't see it. Just to make things more puzzling the expansion literally works in the 1.9 REPL: => (defrecord NoopJob [] impl/GatewayJob (start-job! [this] (clojure.core/zipmap '(__hash __meta this __hasheq __extmap) [__hash __meta this __hasheq __extmap]))) yabug.jobs.noop.NoopJob Grr... Will sleep on it and toy with it tomorrow by expanding a bit the test cases. It's nearly 22:00 Morocco time here. I need a break and some sleep. Luc P. On Saturday, 30 December 2017 01:00:05 UTC, Alex Miller wrote: > > On Fri, Dec 29, 2017 at 6:17 PM, Luc <lprefo...@softaddicts.ca > <javascript:>> wrote: > > >> here it is, I did not get through the compiler source code yet, it might >> be obvious to you: >> >> java.lang.UnsupportedOperationException: Can't type hint a primitive >> local, compiling:(yabug/jobs/noop.clj:21:9) >> Exception in thread "main" java.lang.UnsupportedOperationException: Can't >> type hint a primitive local, compiling:(*yabug/jobs/noop.clj:21:9*) >> > > What's the code here? ^^ > > > -- 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.