Skip to content

Commit

Permalink
Fix compiler warnings on unused variables in templates
Browse files Browse the repository at this point in the history
When compiled with [report,return] the compile:forms/3 function
complains about unused variables in the emitted template code. This
patch solves the issue.
  • Loading branch information
saleyn committed Oct 22, 2012
1 parent a6a6983 commit 7aa5392
Showing 1 changed file with 20 additions and 20 deletions.
40 changes: 20 additions & 20 deletions src/erlydtl_compiler.erl
Expand Up @@ -176,11 +176,11 @@ compile_multiple_to_binary(Dir, ParserResults, Context) ->
{{BodyAst, BodyInfo}, TreeWalker1} = with_dependency({FilePath, CheckSum}, body_ast(DjangoParseTree, Context, TreeWalker)),
FunctionName = filename:rootname(filename:basename(File)),
Function1 = erl_syntax:function(erl_syntax:atom(FunctionName),
[erl_syntax:clause([erl_syntax:variable("Variables")], none,
[erl_syntax:clause([erl_syntax:variable("_Variables")], none,
[erl_syntax:application(none, erl_syntax:atom(FunctionName),
[erl_syntax:variable("Variables"), erl_syntax:atom(none)])])]),
[erl_syntax:variable("_Variables"), erl_syntax:atom(none)])])]),
Function2 = erl_syntax:function(erl_syntax:atom(FunctionName),
[erl_syntax:clause([erl_syntax:variable("Variables"), erl_syntax:variable("TranslationFun")], none,
[erl_syntax:clause([erl_syntax:variable("_Variables"), erl_syntax:variable("_TranslationFun")], none,
[BodyAst])]),
{{FunctionName, Function1, Function2}, {merge_info(AstInfo, BodyInfo), TreeWalker1}}
end, {#ast_info{}, #treewalker{}}, ParserResults),
Expand Down Expand Up @@ -352,7 +352,7 @@ custom_tags_clauses_ast1([Tag|CustomTags], ExcludeTags, ClauseAcc, InfoAcc, Cont
{ok, DjangoParseTree, CheckSum} ->
{{BodyAst, BodyAstInfo}, TreeWalker1} = with_dependency({CustomTagFile, CheckSum},
body_ast(DjangoParseTree, Context, TreeWalker)),
Clause = erl_syntax:clause([erl_syntax:string(Tag), erl_syntax:variable("Variables"), options_ast()],
Clause = erl_syntax:clause([erl_syntax:string(Tag), erl_syntax:variable("_Variables"), options_ast()],
none, [BodyAst]),
custom_tags_clauses_ast1(CustomTags, [Tag|ExcludeTags], [Clause|ClauseAcc], merge_info(BodyAstInfo, InfoAcc),
Context, TreeWalker1);
Expand Down Expand Up @@ -418,12 +418,12 @@ forms(File, Module, {BodyAst, BodyInfo}, {CustomTagsFunctionAst, CustomTagsInfo}
[erl_syntax:clause([], none, [erl_syntax:application(none,
erl_syntax:atom(render), [erl_syntax:list([])])])]),
Render1FunctionAst = erl_syntax:function(erl_syntax:atom(render),
[erl_syntax:clause([erl_syntax:variable("Variables")], none,
[erl_syntax:clause([erl_syntax:variable("_Variables")], none,
[erl_syntax:application(none,
erl_syntax:atom(render),
[erl_syntax:variable("Variables"), erl_syntax:list([])])])]),
[erl_syntax:variable("_Variables"), erl_syntax:list([])])])]),
Function2 = erl_syntax:application(none, erl_syntax:atom(render_internal),
[erl_syntax:variable("Variables"),
[erl_syntax:variable("_Variables"),
erl_syntax:application(
erl_syntax:atom(proplists),
erl_syntax:atom(get_value),
Expand All @@ -442,7 +442,7 @@ forms(File, Module, {BodyAst, BodyInfo}, {CustomTagsFunctionAst, CustomTagsInfo}
ClauseCatch = erl_syntax:clause([erl_syntax:variable("Err")], none,
[erl_syntax:tuple([erl_syntax:atom(error), erl_syntax:variable("Err")])]),
Render2FunctionAst = erl_syntax:function(erl_syntax:atom(render),
[erl_syntax:clause([erl_syntax:variable("Variables"),
[erl_syntax:clause([erl_syntax:variable("_Variables"),
erl_syntax:variable("Options")], none,
[erl_syntax:try_expr([Function2], [ClauseOk], [ClauseCatch])])]),

Expand All @@ -467,8 +467,8 @@ forms(File, Module, {BodyAst, BodyInfo}, {CustomTagsFunctionAst, CustomTagsInfo}

RenderInternalFunctionAst = erl_syntax:function(
erl_syntax:atom(render_internal),
[erl_syntax:clause([erl_syntax:variable("Variables"), erl_syntax:variable("TranslationFun"),
erl_syntax:variable("CurrentLocale"), erl_syntax:variable("CustomTagsContext")], none,
[erl_syntax:clause([erl_syntax:variable("_Variables"), erl_syntax:variable("_TranslationFun"),
erl_syntax:variable("_CurrentLocale"), erl_syntax:variable("_CustomTagsContext")], none,
[BodyAstTmp])]),

ModuleAst = erl_syntax:attribute(erl_syntax:atom(module), [erl_syntax:atom(Module)]),
Expand Down Expand Up @@ -644,7 +644,7 @@ body_ast(DjangoParseTree, Context, TreeWalker) ->
Ast1 = erl_syntax:application(none, erl_syntax:atom(Name),
[erl_syntax:list(PresetVars)]),
PreRenderAst = erl_syntax:function(erl_syntax:atom(Name),
[erl_syntax:clause([erl_syntax:variable("Variables")], none, [Ast])]),
[erl_syntax:clause([erl_syntax:variable("_Variables")], none, [Ast])]),
PreRenderAsts = Info#ast_info.pre_render_asts,
Info1 = Info#ast_info{pre_render_asts = [PreRenderAst | PreRenderAsts]},
{Ast1, {merge_info(Info1, InfoAcc), TreeWalkerAcc#treewalker{counter = Counter + 1}}}
Expand Down Expand Up @@ -750,7 +750,7 @@ blocktrans_ast(ArgList, Contents, Context, TreeWalker) ->
[erl_syntax:clause([erl_syntax:string(Locale)], none, [ThisAst])|ClauseAcc]}
end
end, {MergedInfo, TreeWalker2, []}, Context#dtl_context.blocktrans_locales),
Ast = erl_syntax:case_expr(erl_syntax:variable("CurrentLocale"),
Ast = erl_syntax:case_expr(erl_syntax:variable("_CurrentLocale"),
Clauses ++ [erl_syntax:clause([erl_syntax:underscore()], none, [DefaultAst])]),
{{Ast, FinalAstInfo#ast_info{ translated_blocks = [SourceText] }}, FinalTreeWalker}
end.
Expand All @@ -771,7 +771,7 @@ translated_ast2(NewStrAst, DefaultStringAst, AstInfo, TreeWalker) ->
StringLookupAst = erl_syntax:application(
erl_syntax:atom(erlydtl_runtime),
erl_syntax:atom(translate),
[NewStrAst, erl_syntax:variable("TranslationFun"), DefaultStringAst]),
[NewStrAst, erl_syntax:variable("_TranslationFun"), DefaultStringAst]),
{{StringLookupAst, AstInfo}, TreeWalker}.

% Completely unnecessary in ErlyDTL (use {{ "{%" }} etc), but implemented for compatibility.
Expand Down Expand Up @@ -980,7 +980,7 @@ resolve_variable_ast({variable, {identifier, _, VarName}}, Context, FinderFuncti
VarValue = case resolve_scoped_variable_ast(VarName, Context) of
undefined ->
erl_syntax:application(erl_syntax:atom(erlydtl_runtime), erl_syntax:atom(FinderFunction),
[erl_syntax:atom(VarName), erl_syntax:variable("Variables")]);
[erl_syntax:atom(VarName), erl_syntax:variable("_Variables")]);
Val ->
Val
end,
Expand Down Expand Up @@ -1236,16 +1236,16 @@ tag_ast(Name, Args, Context, TreeWalker) ->

custom_tags_modules_ast(Name, InterpretedArgs, #dtl_context{ custom_tags_modules = [], is_compiling_dir = false }) ->
{erl_syntax:application(none, erl_syntax:atom(render_tag),
[erl_syntax:string(Name), erl_syntax:list(InterpretedArgs), erl_syntax:variable("CustomTagsContext")]),
[erl_syntax:string(Name), erl_syntax:list(InterpretedArgs), erl_syntax:variable("_CustomTagsContext")]),
#ast_info{custom_tags = [Name]}};
custom_tags_modules_ast(Name, InterpretedArgs, #dtl_context{ custom_tags_modules = [], is_compiling_dir = true, module = Module }) ->
{erl_syntax:application(erl_syntax:atom(Module), erl_syntax:atom(Name),
[erl_syntax:list(InterpretedArgs), erl_syntax:variable("CustomTagsContext")]), #ast_info{ custom_tags = [Name] }};
[erl_syntax:list(InterpretedArgs), erl_syntax:variable("_CustomTagsContext")]), #ast_info{ custom_tags = [Name] }};
custom_tags_modules_ast(Name, InterpretedArgs, #dtl_context{ custom_tags_modules = [Module|Rest] } = Context) ->
case lists:member({Name, 2}, Module:module_info(exports)) of
true ->
{erl_syntax:application(erl_syntax:atom(Module), erl_syntax:atom(Name),
[erl_syntax:list(InterpretedArgs), erl_syntax:variable("CustomTagsContext")]), #ast_info{}};
[erl_syntax:list(InterpretedArgs), erl_syntax:variable("_CustomTagsContext")]), #ast_info{}};
false ->
case lists:member({Name, 1}, Module:module_info(exports)) of
true ->
Expand All @@ -1258,12 +1258,12 @@ custom_tags_modules_ast(Name, InterpretedArgs, #dtl_context{ custom_tags_modules

options_ast() ->
erl_syntax:list([
erl_syntax:tuple([erl_syntax:atom(translation_fun), erl_syntax:variable("TranslationFun")]),
erl_syntax:tuple([erl_syntax:atom(locale), erl_syntax:variable("CurrentLocale")])
erl_syntax:tuple([erl_syntax:atom(translation_fun), erl_syntax:variable("_TranslationFun")]),
erl_syntax:tuple([erl_syntax:atom(locale), erl_syntax:variable("_CurrentLocale")])
]).

call_ast(Module, TreeWalkerAcc) ->
call_ast(Module, erl_syntax:variable("Variables"), #ast_info{}, TreeWalkerAcc).
call_ast(Module, erl_syntax:variable("_Variables"), #ast_info{}, TreeWalkerAcc).

call_with_ast(Module, Variable, Context, TreeWalker) ->
{VarAst, VarName} = resolve_variable_ast(Variable, Context),
Expand Down

0 comments on commit 7aa5392

Please sign in to comment.