Browse Source

Give proper error message on badly placed extends tag.

Fixes #31. Related to #85, #60.

The extends tag really should be the very first thing in the template.
Andreas Stenius 11 years ago
parent
commit
e976f07dcb
2 changed files with 4 additions and 3 deletions
  1. 2 0
      src/erlydtl_compiler.erl
  2. 2 3
      tests/src/erlydtl_functional_tests.erl

+ 2 - 0
src/erlydtl_compiler.erl

@@ -817,6 +817,8 @@ body_ast(DjangoParseTree, Context, TreeWalker) ->
 						       with_ast(Args, Contents, Context, TreeWalkerAcc);
                                        ({'extension', Tag}, TreeWalkerAcc) ->
                                            extension_ast(Tag, Context, TreeWalkerAcc);
+                       ({'extends', _}, TreeWalkerAcc) ->
+                           throw({error, "The extends tag must be at the very top of the template"});
 				       (ValueToken, TreeWalkerAcc) -> 
 						       {{ValueAst,ValueInfo},ValueTreeWalker} = value_ast(ValueToken, true, true, Context, TreeWalkerAcc),
 						       {{format(ValueAst, Context, ValueTreeWalker),ValueInfo},ValueTreeWalker}

+ 2 - 3
tests/src/erlydtl_functional_tests.erl

@@ -74,6 +74,8 @@ setup_compile("ifnotequal_preset") ->
 setup_compile("var_preset") ->
     CompileVars = [{preset_var1, "preset-var1"}, {preset_var2, "preset-var2"}],
     {ok, CompileVars};
+setup_compile("extends2") ->
+    {error, []};
 setup_compile(_) ->
     {ok, []}.
 
@@ -88,9 +90,6 @@ setup("autoescape") ->
 setup("extends") ->
     RenderVars = [{base_var, "base-barstring"}, {test_var, "test-barstring"}],
     {ok, RenderVars};
-setup("extends2") ->
-    RenderVars = [{base_var, "base-barstring"}, {test_var, "test-barstring"}],
-    {ok, RenderVars};
 setup("filters") ->
     RenderVars = [
         {date_var1, {1975,7,24}},