stathissideris / spec-provider

Infer Clojure specs from sample data. Inspired by F#'s type providers.
519 stars 22 forks source link

goog.string/format used incorrectly #22

Closed mfikes closed 6 years ago

mfikes commented 6 years ago

This require form doesn't look right: https://github.com/stathissideris/spec-provider/blob/2ebeae08f73a888cf7a34ad48b14ea7f3030a905/src/spec_provider/provider.cljc#L10

See https://clojurescript.org/reference/google-closure-library#requiring-a-function for a way to use format.

An alternative, since it appears to be only used once for string concatenation is to use str.

Repro:

deps.edn:

{:deps {org.clojure/clojurescript {:mvn/version "1.10.238"}
        spec-provider {:mvn/version "0.4.12"}
        org.clojure/test.check {:mvn/version "0.10.0-alpha2"}}}
$ clj -Srepro -m cljs.main -re node
ClojureScript 1.10.238
cljs.user=> (require 'spec-provider.provider)
nil
cljs.user=> (spec-provider.provider/infer-specs nil :foo)
repl:13
throw e__6388__auto__;
^

TypeError: goog.string.format.format is not a function
    at Function.spec_provider.provider.infer_specs.cljs$core$IFn$_invoke$arity$3 (/private/var/folders/gx/nymj3l7x4zq3gxb97v2zwzb40000gn/T/out7158618387314285623868872509503290/spec_provider/provider.js:424:54)
    at spec_provider$provider$infer_specs (/private/var/folders/gx/nymj3l7x4zq3gxb97v2zwzb40000gn/T/out7158618387314285623868872509503290/spec_provider/provider.js:408:43)
    at Function.spec_provider.provider.infer_specs.cljs$core$IFn$_invoke$arity$2 (/private/var/folders/gx/nymj3l7x4zq3gxb97v2zwzb40000gn/T/out7158618387314285623868872509503290/spec_provider/provider.js:418:43)
    at spec_provider$provider$infer_specs (/private/var/folders/gx/nymj3l7x4zq3gxb97v2zwzb40000gn/T/out7158618387314285623868872509503290/spec_provider/provider.js:404:43)
    at repl:1:114
    at repl:9:3
    at repl:14:4
    at Script.runInThisContext (vm.js:65:33)
    at Object.runInThisContext (vm.js:197:38)
    at Domain.<anonymous> ([stdin]:76:38)