Ah, I see - that makes sense, thanks.
On 14 January 2014 19:49, Andy Fingerhut <andy.finger...@gmail.com> wrote: > defn is a macro, and thus macro-expanded during Eastwood analysis, I > believe ignoring the :arglists. I think it is really only the :arglists of > functions that matter for Eastwood :wrong-arity warnings > > Andy > > > On Mon, Jan 13, 2014 at 10:22 PM, Colin Fleming < > colin.mailingl...@gmail.com> wrote: > >> Interesting - but there must be some sort of magic there since otherwise >> every call to defn would be flagged, since its :arglists implies it has 6 >> arguments. And in fact, there's nothing there indicating that the body is >> in fact the body. >> >> >> On 14 January 2014 18:56, Andy Fingerhut <andy.finger...@gmail.com>wrote: >> >>> Nicola can answer more authoritatively, as I haven't checked that part >>> of tools.analyzer recently, but I am pretty sure that the :arglists with >>> things like doc-string? attr-map? are simply treated as if they were normal >>> positional arguments, with no 'guessing' that they are optional due their >>> symbols ending with a question mark. >>> >>> A function with :arglists ([x & xs]) is checked that it takes 1 or more >>> args, so only warning if a call is made with 0 args. That is why the >>> current release of Eastwood will give incorrect :wrong-arity warning >>> messages if one manually sets :arglists for a function to something other >>> than what defn would make it. >>> >>> For macros, they are all expanded during Eastwood analysis, so any >>> incorrect number of arguments should cause an exception to be thrown during >>> analysis, much like it would if you attempted to compile such code. >>> >>> Andy >>> >>> >>> On Mon, Jan 13, 2014 at 6:57 PM, Colin Fleming < >>> colin.mailingl...@gmail.com> wrote: >>> >>>> This is an interesting discussion, I've been thinking about some of >>>> these problems as I move towards adding inspections in Cursive. arglist >>>> parsing is a real problem in Clojure. I'd like to be able to flag >>>> invocations of functions with bad arities in the editor, but it's very >>>> difficult. Even defn is complicated, given that its :arglists is: >>>> >>>> :arglists '([name doc-string? attr-map? [params*] prepost-map? body] >>>> [name doc-string? attr-map? ([params*] prepost-map? body)+ >>>> attr-map?]) >>>> >>>> and its actual args declaration is: >>>> >>>> [&form &env name & fdecl] >>>> >>>> There's really no way to parse either of them automatically well. Does >>>> Eastwood use the actual fn declaration or :arglists for linting? What would >>>> it do in the case above? It's impossible to tell if doc-string? is a >>>> boolean or if it's an optional arg. >>>> >>>> Oh, and I agree that invalid :arglists as documentation is probably a >>>> bad idea, since it'll inevitably make this sort of tooling more difficult >>>> than it already is. >>>> >>>> >>>> On 14 January 2014 14:03, Sean Corfield <s...@corfield.org> wrote: >>>> >>>>> On Jan 13, 2014, at 3:09 PM, Nicola Mometto <brobro...@gmail.com> >>>>> wrote: >>>>> > To be honest I don't like the idea of libraries attaching not-valid >>>>> > :arglists meta to Vars at all since the doc[1] for `def` says that >>>>> :arglists >>>>> > will be "a list of vector(s) of argument forms, as were supplied to >>>>> > defn" and the clojure Compiler uses :arglists for type-hints >>>>> handling. >>>>> >>>>> I agree with you in principle - and I'm happy to change java.jdbc to >>>>> avoid the issue. >>>>> >>>>> Could Eastwood (or j.t.a) flag invalid :arglists? The "example" ones >>>>> in both java.jdbc and congomongo are clearly "invalid" according the >>>>> special forms page (but they silently "work"). Perhaps if Eastwood finds >>>>> invalid / suspicious metadata in :arglists, it could use a different >>>>> linter >>>>> warning? >>>>> >>>>> Sean Corfield -- (904) 302-SEAN >>>>> An Architect's View -- http://corfield.org/ >>>>> >>>>> "Perfection is the enemy of the good." >>>>> -- Gustave Flaubert, French realist novelist (1821-1880) >>>>> >>>>> >>>>> >>>>> >>>> -- >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "Clojure" group. >>>> To post to this group, send email to clojure@googlegroups.com >>>> Note that posts from new members are moderated - please be patient with >>>> your first post. >>>> To unsubscribe from this group, send email to >>>> clojure+unsubscr...@googlegroups.com >>>> For more options, visit this group at >>>> http://groups.google.com/group/clojure?hl=en >>>> --- >>>> You received this message because you are subscribed to the Google >>>> Groups "Clojure" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to clojure+unsubscr...@googlegroups.com. >>>> For more options, visit https://groups.google.com/groups/opt_out. >>>> >>> >>> -- >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Clojure" group. >>> To post to this group, send email to clojure@googlegroups.com >>> Note that posts from new members are moderated - please be patient with >>> your first post. >>> To unsubscribe from this group, send email to >>> clojure+unsubscr...@googlegroups.com >>> For more options, visit this group at >>> http://groups.google.com/group/clojure?hl=en >>> --- >>> You received this message because you are subscribed to the Google >>> Groups "Clojure" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to clojure+unsubscr...@googlegroups.com. >>> For more options, visit https://groups.google.com/groups/opt_out. >>> >> >> -- >> -- >> You received this message because you are subscribed to the Google >> Groups "Clojure" group. >> To post to this group, send email to clojure@googlegroups.com >> Note that posts from new members are moderated - please be patient with >> your first post. >> To unsubscribe from this group, send email to >> clojure+unsubscr...@googlegroups.com >> For more options, visit this group at >> http://groups.google.com/group/clojure?hl=en >> --- >> You received this message because you are subscribed to the Google Groups >> "Clojure" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to clojure+unsubscr...@googlegroups.com. >> For more options, visit https://groups.google.com/groups/opt_out. >> > > -- > -- > You received this message because you are subscribed to the Google > Groups "Clojure" group. > To post to this group, send email to clojure@googlegroups.com > Note that posts from new members are moderated - please be patient with > your first post. > To unsubscribe from this group, send email to > clojure+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/clojure?hl=en > --- > You received this message because you are subscribed to the Google Groups > "Clojure" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to clojure+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > -- -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.