athos / Pinpointer

Pinpointer is yet another clojure.spec error reporter based on a precise error analysis
Eclipse Public License 1.0
94 stars 3 forks source link

Lumo error on require of pinpointer.core #9

Open arichiardi opened 6 years ago

arichiardi commented 6 years ago

Hi!

I am trying this wonderful library with lumo and I get the following error when I require the main namespace:

Could not require pinpointer.core in file ep_cloud/dev.cljs
     (new)
     Function.cljs.core.ex_info.cljs$core$IFn$_invoke$arity$3 (NO_SOURCE_FILE <embedded>:2024:72)
     Function.cljs.analyzer.error.cljs$core$IFn$_invoke$arity$3 (NO_SOURCE_FILE <embedded>:2660:92)
     (NO_SOURCE_FILE <embedded>:5660:320)
     (Object.lumo.repl.run_sync_BANG_)
     Object.cljs.js.process_deps (NO_SOURCE_FILE <embedded>:5637:185)
     Object.cljs.js.process_libs_deps (NO_SOURCE_FILE <embedded>:5640:60)
     (NO_SOURCE_FILE <embedded>:5658:474)
     (Object.lumo.repl.run_sync_BANG_)
     Object.cljs.js.process_deps (NO_SOURCE_FILE <embedded>:5637:185)

Unexpected eval or arguments in strict mode
     createScript (vm.cljs:80:10)
     Object.runInThisContext (vm.cljs:152:10)
     (Object._t)
     lumo.repl.caching_node_eval (NO_SOURCE_FILE <embedded>:6481:68)
     (NO_SOURCE_FILE <embedded>:5659:410)
     (Object.lumo.repl.run_sync_BANG_)
     Object.cljs.js.process_deps (NO_SOURCE_FILE <embedded>:5637:185)
     Object.cljs.js.process_libs_deps (NO_SOURCE_FILE <embedded>:5640:60)
     (NO_SOURCE_FILE <embedded>:5658:474)
     (Object.lumo.repl.run_sync_BANG_)

Any hint of what that can be?

athos commented 6 years ago

Hi, @arichiardi

Thank you for reporting the issue :) That error can be reproduced in my environment too. It looks like the error message is complaining Pinpointer's use of eval, which is necessary for the error analysis and so seems hard to remove it completely from Pinpointer.

Perhaps a quick workaround is to disable Lumo's --use-strict flag for your development time (see here for the details), but I'll dig into it a little more.

arichiardi commented 6 years ago

Will try that out and report back!

arichiardi commented 6 years ago

I have tried to have a dev.cljs in a file:

(ns pkg.dev
  (:require
            [cljs.spec.alpha :as s]
            [cljs.test :as test]
            lumo.core
            lumo.repl
            [cljs.spec.test.alpha :as stest]))

(enable-console-print!)

;; https://github.com/anmonteiro/lumo/issues/28
(def v8 (js/require "v8"))
(.setFlagsFromString v8 "--no-use_strict")

;; Trying out a couple of libs for better spec printing
;; (set! s/*explain-out* expound/printer)
(require '[pinpointer.core :as pinpointer])
(set! s/*explain-out* (partial pinpointer/pinpoint-out
                               {:colorize true
                                :eval lumo.core/eval}))

And while this works at the REPL, it does not when loading with the -i file.

Probably something still connected to https://github.com/anmonteiro/lumo/issues/28