From 50832a1a14d52d183551e82d146dde7785434595 Mon Sep 17 00:00:00 2001 From: Vagabond Date: Tue, 2 Mar 2010 18:04:08 -0500 Subject: Don't detect the source file as an include of itself --- src/rebar_erlc_compiler.erl | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/rebar_erlc_compiler.erl b/src/rebar_erlc_compiler.erl index 33014cf..473fa20 100644 --- a/src/rebar_erlc_compiler.erl +++ b/src/rebar_erlc_compiler.erl @@ -109,14 +109,14 @@ inspect(Source, IncludePath) -> ModuleDefault = filename:basename(Source, ".erl"), case epp:open(Source, IncludePath) of {ok, Epp} -> - inspect_epp(Epp, ModuleDefault, []); + inspect_epp(Epp, Source, ModuleDefault, []); {error, Reason} -> ?DEBUG("Failed to inspect ~s: ~p\n", [Source, Reason]), {ModuleDefault, []} end. --spec inspect_epp(Epp::pid(), Module::string(), Includes::[string()]) -> {string(), [string()]}. -inspect_epp(Epp, Module, Includes) -> +-spec inspect_epp(Epp::pid(), Source::string(), Module::string(), Includes::[string()]) -> {string(), [string()]}. +inspect_epp(Epp, Source, Module, Includes) -> case epp:parse_erl_form(Epp) of {ok, {attribute, _, module, ModInfo}} -> case ModInfo of @@ -133,16 +133,18 @@ inspect_epp(Epp, Module, Includes) -> {ActualModule, _} when is_list(ActualModule) -> ActualModuleStr = string:join([atom_to_list(P) || P <- ActualModule], ".") end, - inspect_epp(Epp, ActualModuleStr, Includes); + inspect_epp(Epp, Source, ActualModuleStr, Includes); {ok, {attribute, 1, file, {Module, 1}}} -> - inspect_epp(Epp, Module, Includes); + inspect_epp(Epp, Source, Module, Includes); + {ok, {attribute, 1, file, {Source, 1}}} -> + inspect_epp(Epp, Source, Module, Includes); {ok, {attribute, 1, file, {IncFile, 1}}} -> - inspect_epp(Epp, Module, [IncFile | Includes]); + inspect_epp(Epp, Source, Module, [IncFile | Includes]); {eof, _} -> epp:close(Epp), {Module, Includes}; _ -> - inspect_epp(Epp, Module, Includes) + inspect_epp(Epp, Source, Module, Includes) end. -spec needs_compile(Source::string(), Target::string(), Hrls::[string()]) -> boolean(). -- cgit v1.1