cljs-dev 2025-11-30

For the proxy stuff, is there a reason this isn't working?

(aget ((cljs.proxy/builder) [{}]) 0)
I get:
;!Execution error (TypeError) at (<cljs repl>:1).
;!proxy must report the same value for the non-writable, non-configurable property '"cljs$lang$protocol_mask$partition0$"'
It seems to not appreciate the nested map but the docs claim to handle recursion. The docstring example works OK:
(def foo (proxy [{:foo 1 :bar 2}]))
   (-> foo (aget 0) (o/get "foo"))
The proxy doesn't seem to be compatible with for (... of ...) syntax either, which is how I discovered the above:
(set! (.-y js/window) (proxy ["foo"]))
with: for (const x of y) {console.log(x)} gives:
Uncaught TypeError: can't convert symbol to number
    get proxy.cljs:50
    <anonymous> debugger eval code:1

it would be good to capture browser, I've tested mostly against Node REPL and w/ Safari, but I did basic validation in Chrome and Firefox.

I did this all in Firefox.

Ok trying this specific thing in Firefox

worked fine in Firefox

Ok. I'll try and figure out what's messed this up. I assumed this was simple enough to not be influenced by outside factors. How often I'm wrong! I hope the for...of thing is good though as it's mostly browser based rather than repl. But maybe my proxy namespace is all building wrong.

replicated the for ... in issue here

ok, fixed some things, but this is a recursive case that has to be properly handled

might not get to it today, but this should be fixed up before the next release, thanks for the report!

(aget ((cljs.proxy/builder) [{}]) 0) works fine for me at the REPL, can you create something minimal w/ master?

Hmm, I'll have a go. Strange.