==================
Missing Endif At End Of Input
==================

{% if a %}x

---

(template
  (content)
  (if_group
    (if_block
      (if_tag
        (predicate
          (filtered_value
            (value
              (variable_attribute
                (identifier))))))
      (template
        (content)))
    (missing_endif_tag)))

==================
Missing Endfor After Empty
==================

{% for x in y %}a{% empty %}b

---

(template
  (content)
  (for_group
    (for_block
      (for_tag
        (identifier)
        (filtered_value
          (value
            (variable_attribute
              (identifier)))))
      (template
        (content)))
    (empty_block
      (empty_tag)
      (template
        (content)))
    (missing_endfor_tag)))

==================
Missing Endblock At End Of Input
==================

{% block content %}x

---

(template
  (content)
  (block_group
    (block_block
      (block_tag
        (push_block))
      (template
        (content)))
    (missing_endblock_tag)))

==================
Missing Endpartialdef At End Of Input
==================

{% partialdef p %}x

---

(template
  (content)
  (partialdef_group
    (partialdef_block
      (partialdef_tag
        (push_partial))
      (template
        (content)))
    (missing_endpartialdef_tag)))

==================
Missing Endverbatim With An Empty Body
==================

{% verbatim %}

---

(template
  (content)
  (verbatim_group
    (verbatim_block
      (verbatim_tag
        (push_verbatim))
      (verbatim_content))
    (missing_endverbatim_tag)))

==================
Missing Endverbatim After A Tag In Its Text
==================

{% verbatim %}{% endif %}x

---

(template
  (content)
  (verbatim_group
    (verbatim_block
      (verbatim_tag
        (push_verbatim))
      (verbatim_content))
    (missing_endverbatim_tag)))

==================
Missing Endcomment At End Of Input
==================

{% comment %}x

---

(template
  (content)
  (comment_group
    (comment_block
      (comment_tag)
      (comment_content))
    (missing_endcomment_tag)))

==================
Missing Endif Before An Outer End Tag
==================

{% for x in y %}{% if a %}{% endfor %}

---

(template
  (content)
  (for_group
    (for_block
      (for_tag
        (identifier)
        (filtered_value
          (value
            (variable_attribute
              (identifier)))))
      (template
        (if_group
          (if_block
            (if_tag
              (predicate
                (filtered_value
                  (value
                    (variable_attribute
                      (identifier)))))))
          (missing_endif_tag))))
    (endfor_tag))
  (content))

==================
Unseen Outer Else Is Not A Missing Tag
==================

{% if a %}{% for x in y %}{% else %}b{% endif %}

---

(template
  (content)
  (if_group
    (if_block
      (if_tag
        (predicate
          (filtered_value
            (value
              (variable_attribute
                (identifier))))))
      (template
        (for_group
          (for_block
            (for_tag
              (identifier)
              (filtered_value
                (value
                  (variable_attribute
                    (identifier)))))
            (template
              (unexpected_tag)
              (content)))
          (missing_endfor_tag))))
    (endif_tag))
  (content))

==================
Missing Endwith Before An Outer Endblock
==================

{% block a %}{% with b=1 %}{% endblock a %}

---

(template
  (content)
  (block_group
    (block_block
      (block_tag
        (push_block))
      (template
        (with_group
          (with_block
            (with_tag
              (identifier)
              (filtered_value
                (value
                  (literal
                    (number))))))
          (missing_endwith_tag))))
    (endblock_tag
      (pop_block)))
  (content))

==================
Missing Two End Tags At End Of Input
==================

{% for x in y %}{% if a %}

---

(template
  (content)
  (for_group
    (for_block
      (for_tag
        (identifier)
        (filtered_value
          (value
            (variable_attribute
              (identifier)))))
      (template
        (if_group
          (if_block
            (if_tag
              (predicate
                (filtered_value
                  (value
                    (variable_attribute
                      (identifier))))))
            (template
              (content)))
          (missing_endif_tag))))
    (missing_endfor_tag)))

==================
Missing Endblock Before An Outer Name
==================

{% block a %}{% block b %}{% endblock a %}

---

(template
  (content)
  (block_group
    (block_block
      (block_tag
        (push_block))
      (template
        (block_group
          (block_block
            (block_tag
              (push_block)))
          (missing_endblock_tag))))
    (endblock_tag
      (pop_block)))
  (content))

==================
Missing Endpartialdef Before An Outer Name
==================

{% partialdef a %}{% partialdef b %}{% endpartialdef a %}

---

(template
  (content)
  (partialdef_group
    (partialdef_block
      (partialdef_tag
        (push_partial))
      (template
        (partialdef_group
          (partialdef_block
            (partialdef_tag
              (push_partial)))
          (missing_endpartialdef_tag))))
    (endpartialdef_tag
      (pop_partial)))
  (content))

==================
Missing Plural At End Of Input
==================

{% blocktrans count n=x %}one

---

(template
  (content)
  (blocktranslate_group
    (blocktrans_block
      (blocktrans_tag
        (identifier)
        (filtered_value
          (value
            (variable_attribute
              (identifier)))))
      (content)
      (missing_plural_tag))
    (missing_endblocktrans_tag)))

==================
Missing Plural Before Endblocktranslate
==================

{% blocktranslate count n=x %}one{% endblocktranslate %}

---

(template
  (content)
  (blocktranslate_group
    (blocktranslate_block
      (blocktranslate_tag
        (identifier)
        (filtered_value
          (value
            (variable_attribute
              (identifier)))))
      (content)
      (missing_plural_tag))
    (endblocktranslate_tag))
  (content))

==================
Missing Endblocktrans After Plural
==================

{% blocktrans count n=x %}one{% plural %}many

---

(template
  (content)
  (blocktranslate_group
    (blocktrans_block
      (blocktrans_tag
        (identifier)
        (filtered_value
          (value
            (variable_attribute
              (identifier)))))
      (content)
      (plural_block
        (plural_tag)
        (content)))
    (missing_endblocktrans_tag)))

==================
Missing Endfor Before A Tag Without Spaces
==================

{% if a %}{% for x in y %}{%endif%}

---

(template
  (content)
  (if_group
    (if_block
      (if_tag
        (predicate
          (filtered_value
            (value
              (variable_attribute
                (identifier))))))
      (template
        (for_group
          (for_block
            (for_tag
              (identifier)
              (filtered_value
                (value
                  (variable_attribute
                    (identifier))))))
          (missing_endfor_tag))))
    (endif_tag))
  (content))

==================
Missing Endfor Before A Tag Across Lines
==================

{% if a %}{% for x in y %}{%
endif %}

---

(template
  (content)
  (if_group
    (if_block
      (if_tag
        (predicate
          (filtered_value
            (value
              (variable_attribute
                (identifier))))))
      (template
        (for_group
          (for_block
            (for_tag
              (identifier)
              (filtered_value
                (value
                  (variable_attribute
                    (identifier))))))
          (missing_endfor_tag))))
    (endif_tag))
  (content))

==================
Missing Endif After A Custom End Tag
==================

{% if a %}{% endmytag %}

---

(template
  (content)
  (if_group
    (if_block
      (if_tag
        (predicate
          (filtered_value
            (value
              (variable_attribute
                (identifier))))))
      (template
        (custom_tag
          (identifier))
        (content)))
    (missing_endif_tag)))

==================
Second Else After A Nested Else Is Unexpected
==================

{% if a %}{% if b %}x{% else %}y{% else %}z{% endif %}

---

(template
  (content)
  (if_group
    (if_block
      (if_tag
        (predicate
          (filtered_value
            (value
              (variable_attribute
                (identifier))))))
      (template
        (if_group
          (if_block
            (if_tag
              (predicate
                (filtered_value
                  (value
                    (variable_attribute
                      (identifier))))))
            (template
              (content)))
          (else_block
            (else_tag)
            (template
              (content)
              (unexpected_tag)
              (content)))
          (endif_tag))
        (content)))
    (missing_endif_tag)))

==================
Second Empty After A Nested Empty Is Unexpected
==================

{% for x in y %}{% for z in w %}a{% empty %}b{% empty %}c{% endfor %}

---

(template
  (content)
  (for_group
    (for_block
      (for_tag
        (identifier)
        (filtered_value
          (value
            (variable_attribute
              (identifier)))))
      (template
        (for_group
          (for_block
            (for_tag
              (identifier)
              (filtered_value
                (value
                  (variable_attribute
                    (identifier)))))
            (template
              (content)))
          (empty_block
            (empty_tag)
            (template
              (content)
              (unexpected_tag)
              (content)))
          (endfor_tag))
        (content)))
    (missing_endfor_tag)))

==================
Else Of An If Nested In An Else
==================

{% if a %}x{% else %}{% if b %}y{% else %}z{% endif %}{% endif %}

---

(template
  (content)
  (if_group
    (if_block
      (if_tag
        (predicate
          (filtered_value
            (value
              (variable_attribute
                (identifier))))))
      (template
        (content)))
    (else_block
      (else_tag)
      (template
        (if_group
          (if_block
            (if_tag
              (predicate
                (filtered_value
                  (value
                    (variable_attribute
                      (identifier))))))
            (template
              (content)))
          (else_block
            (else_tag)
            (template
              (content)))
          (endif_tag))))
    (endif_tag))
  (content))

==================
Elif Of An If Nested In An Elif
==================

{% if a %}x{% elif b %}{% if c %}y{% elif d %}z{% endif %}{% endif %}

---

(template
  (content)
  (if_group
    (if_block
      (if_tag
        (predicate
          (filtered_value
            (value
              (variable_attribute
                (identifier))))))
      (template
        (content)))
    (elif_block
      (elif_tag
        (predicate
          (filtered_value
            (value
              (variable_attribute
                (identifier))))))
      (template
        (if_group
          (if_block
            (if_tag
              (predicate
                (filtered_value
                  (value
                    (variable_attribute
                      (identifier))))))
            (template
              (content)))
          (elif_block
            (elif_tag
              (predicate
                (filtered_value
                  (value
                    (variable_attribute
                      (identifier))))))
            (template
              (content)))
          (endif_tag))))
    (endif_tag))
  (content))

==================
Empty Of A For Nested In An Empty
==================

{% for x in y %}a{% empty %}{% for z in w %}b{% empty %}c{% endfor %}{% endfor %}

---

(template
  (content)
  (for_group
    (for_block
      (for_tag
        (identifier)
        (filtered_value
          (value
            (variable_attribute
              (identifier)))))
      (template
        (content)))
    (empty_block
      (empty_tag)
      (template
        (for_group
          (for_block
            (for_tag
              (identifier)
              (filtered_value
                (value
                  (variable_attribute
                    (identifier)))))
            (template
              (content)))
          (empty_block
            (empty_tag)
            (template
              (content)))
          (endfor_tag))))
    (endfor_tag))
  (content))

==================
Else Of An Ifchanged Nested In An Else Of An If
==================

{% if a %}x{% else %}{% ifchanged %}y{% else %}z{% endifchanged %}{% endif %}

---

(template
  (content)
  (if_group
    (if_block
      (if_tag
        (predicate
          (filtered_value
            (value
              (variable_attribute
                (identifier))))))
      (template
        (content)))
    (else_block
      (else_tag)
      (template
        (ifchanged_group
          (ifchanged_block
            (ifchanged_tag)
            (template
              (content)))
          (else_block
            (else_tag)
            (template
              (content)))
          (endifchanged_tag))))
    (endif_tag))
  (content))

==================
Else Of An If Nested In An Else Of An Ifchanged
==================

{% ifchanged %}a{% else %}{% if b %}y{% else %}z{% endif %}{% endifchanged %}

---

(template
  (content)
  (ifchanged_group
    (ifchanged_block
      (ifchanged_tag)
      (template
        (content)))
    (else_block
      (else_tag)
      (template
        (if_group
          (if_block
            (if_tag
              (predicate
                (filtered_value
                  (value
                    (variable_attribute
                      (identifier))))))
            (template
              (content)))
          (else_block
            (else_tag)
            (template
              (content)))
          (endif_tag))))
    (endifchanged_tag))
  (content))

==================
Third Else Is Unexpected Too
==================

{% if a %}w{% else %}x{% else %}y{% else %}z{% endif %}

---

(template
  (content)
  (if_group
    (if_block
      (if_tag
        (predicate
          (filtered_value
            (value
              (variable_attribute
                (identifier))))))
      (template
        (content)))
    (else_block
      (else_tag)
      (template
        (content)
        (unexpected_tag)
        (content)
        (unexpected_tag)
        (content)))
    (endif_tag))
  (content))

==================
Second And Third Empty Are Unexpected
==================

{% for x in y %}a{% empty %}b{% empty %}c{% empty %}d{% endfor %}

---

(template
  (content)
  (for_group
    (for_block
      (for_tag
        (identifier)
        (filtered_value
          (value
            (variable_attribute
              (identifier)))))
      (template
        (content)))
    (empty_block
      (empty_tag)
      (template
        (content)
        (unexpected_tag)
        (content)
        (unexpected_tag)
        (content)))
    (endfor_tag))
  (content))

==================
Second And Third Else Of An Ifchanged Are Unexpected
==================

{% ifchanged %}a{% else %}b{% else %}c{% else %}d{% endifchanged %}

---

(template
  (content)
  (ifchanged_group
    (ifchanged_block
      (ifchanged_tag)
      (template
        (content)))
    (else_block
      (else_tag)
      (template
        (content)
        (unexpected_tag)
        (content)
        (unexpected_tag)
        (content)))
    (endifchanged_tag))
  (content))

==================
Second Else Inside A Block Is Unexpected
==================

{% block a %}{% if b %}x{% else %}y{% else %}z{% endif %}{% endblock %}

---

(template
  (content)
  (block_group
    (block_block
      (block_tag
        (push_block))
      (template
        (if_group
          (if_block
            (if_tag
              (predicate
                (filtered_value
                  (value
                    (variable_attribute
                      (identifier))))))
            (template
              (content)))
          (else_block
            (else_tag)
            (template
              (content)
              (unexpected_tag)
              (content)))
          (endif_tag))))
    (endblock_tag
      (pop_block)))
  (content))

==================
Second Else Of An If In A For Is Unexpected
==================

{% for x in y %}{% if a %}b{% else %}c{% else %}d{% endif %}{% endfor %}

---

(template
  (content)
  (for_group
    (for_block
      (for_tag
        (identifier)
        (filtered_value
          (value
            (variable_attribute
              (identifier)))))
      (template
        (if_group
          (if_block
            (if_tag
              (predicate
                (filtered_value
                  (value
                    (variable_attribute
                      (identifier))))))
            (template
              (content)))
          (else_block
            (else_tag)
            (template
              (content)
              (unexpected_tag)
              (content)))
          (endif_tag))))
    (endfor_tag))
  (content))

==================
Stray End Tag After A Missing One
==================

{% if a %}{% endfor %}

---

(template
  (content)
  (if_group
    (if_block
      (if_tag
        (predicate
          (filtered_value
            (value
              (variable_attribute
                (identifier))))))
      (template
        (unexpected_tag)
        (content)))
    (missing_endif_tag)))

==================
Endblock Naming No Open Block
==================

{% block a %}{% block b %}{% endblock c %}

---

(template
  (content)
  (block_group
    (block_block
      (block_tag
        (push_block))
      (template
        (block_group
          (block_block
            (block_tag
              (push_block))
            (template
              (unexpected_tag
                (unexpected_argument))
              (content)))
          (missing_endblock_tag))))
    (missing_endblock_tag)))

==================
Second Else Is Not A Missing Tag
==================

{% if a %}{% else %}{% else %}{% endif %}

---

(template
  (content)
  (if_group
    (if_block
      (if_tag
        (predicate
          (filtered_value
            (value
              (variable_attribute
                (identifier)))))))
    (else_block
      (else_tag)
      (template
        (unexpected_tag)))
    (endif_tag))
  (content))

==================
Plural Without Count Is Not A Missing Tag
:error
==================

{% blocktrans %}one{% plural %}many{% endblocktrans %}

---

