[erlang-questions] Preprocessor bug?
Richard Carlsson
richardc@REDACTED
Thu Feb 21 10:19:23 CET 2008
David King wrote:
> I'm not sure if this is a bug or, if it is a bug, it even needs to be
> fixed. This code:
>
> f(F,A) when is_function(F,1) ->
> F(A);
> f(F,B) when is_function(F,2) ->
> F(B,B).
>
> main() ->
> f(fun(a) -> ... end, a),
> f(fun(b,b) -> ... end, b).
>
> compiles and works as expected, unless -compile(inline) is specified.
> If -compile(inline) is specified, the compiler dies with "error:
> function called with wrong number of arguments!".
Hmm, yes, it's not unreasonable to call it a bug. For now, if you have
fun-calls that are guarded by is_function test that check the arity, you
should not turn on inlining.
I might have a look at it and see if the inliner can be taught about the
is_function/2 test, so it can throw away the unselectable clauses. No
guarantees or time line for that project, though.
/Richard
More information about the erlang-questions
mailing list