babashka / obb

Ad-hoc ClojureScript scripting of Mac applications via Apple's Open Scripting Architecture.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

`def`ing a value and referring to it by name can trigger an error

zane opened this issue · comments

It appears that defing some values to a variable and then referring to that variable by name can trigger an error.

This works:

$ obb -e '(-> (js/Application "System Events") (.-applicationProcesses) (.byName "SystemUIServer"))'
Application("System Events").applicationProcesses.byName("SystemUIServer")

So does this:

$ obb -e '(let [server (-> (js/Application "System Events") (.-applicationProcesses) (.byName "SystemUIServer"))] server)'
Application("System Events").applicationProcesses.byName("SystemUIServer")

But the following does not:

Reproduction steps

$ obb -e '(do (def ui-server (-> (js/Application "System Events") (.-applicationProcesses) (.byName "SystemUIServer"))) ui-server)'

Expected results

Application("System Events").applicationProcesses.byName("SystemUIServer")

Actual results

/…/obb: execution error: Error: Error: Can't convert types. (-1700)

Interestingly:

$ obb -e '(def x (let [server (-> (js/Application "System Events") (.-applicationProcesses) (.byName "SystemUIServer"))] (atom server))) @x'
Application("System Events").applicationProcesses.byName("SystemUIServer")

Also:

$ obb -e '(def ui-server (-> (js/Application "System Events") (.-applicationProcesses) (.byName "SystemUIServer")))'

So apparently the issue happens when the var is dereferenced:

$ obb -e '(def ui-server (-> (js/Application "System Events") (.-applicationProcesses) (.byName "SystemUIServer"))) (str (var ui-server))'
#'user/ui-server

But not always...:

$ obb -e '(def ui-server (-> (js/Application "System Events") (.-applicationProcesses) (.byName "SystemUIServer"))) (var? (deref (var ui-server)))'
false