[erlang-questions] compile transforms which change the module name

Ulf Wiger <>
Fri Jul 10 12:00:54 CEST 2009


Peter Andersson wrote:
> The  'no_error_module_mismatch' option should do the trick:
> 
> -module(foo).
> -compile({parse_transform,rename}).
> ...
> 
> 1> compile:file(foo, [no_error_module_mismatch]).
> {ok,xyz}

...except it still produces a file called foo.beam,
so c(foo, [no_error_module_mismatch]) still won't work.

It seems as if a wrapper is needed:

compile(F, Opts) ->
   case compile:file(F, [{parse_transform,rename},binary,
                         no_error_module_mismatch|Opts]) of
     {ok, Mod, Bin} ->
       Dir = filename:dirname(F),
       OutF = filename:join(Dir, atom_to_list(Mod) ++ ".beam"),
       ok = file:write_file(OutF, Bin),
       {ok, Mod};
     Error ->
       Error
   end.

(Above code not compiled - let alone tested.)

BR,
Ulf W


>   /Peppe
> 
> 
> Joe Armstrong wrote:
>> If I change the module name in a compile transform I get an error.
>>
>> If there a work-around for this?
>>
>> I really want to change the module name so that when I compile foo.erl it
>> produces a new name xyz.beam containing code for the module xyz.
>>
>> /Joe
>>
>> ________________________________________________________________
>> erlang-questions mailing list. See http://www.erlang.org/faq.html
>> erlang-questions (at) erlang.org
>>
>>   
> 
> 
> ________________________________________________________________
> erlang-questions mailing list. See http://www.erlang.org/faq.html
> erlang-questions (at) erlang.org
> 


-- 
Ulf Wiger
CTO, Erlang Training & Consulting Ltd
http://www.erlang-consulting.com


More information about the erlang-questions mailing list