`def`ing a value and referring to it by name can trigger an error
zane opened this issue · comments
It appears that def
ing 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