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.

Reply via email to