==============
macro
==============

{% macro foo(x) %}[{{ x }}][{{ async_func() }}]{% endmacro %}{{ foo(42) }}
{% macro test() %}[{{ foo }}|{{ bar }}]{% endmacro %}
{% macro toplevel() %}...{% endmacro %}
{% macro __private() %}...{% endmacro %}
{% macro m(a, b, c='c', d='d') %}{{ a }}|{{ b }}|{{ c }}|{{ d }}{% endmacro %}

----

(source
  (content)
  (control
    (statement
      (macro_statement
        (function_call
          (identifier)
          (arg
            (expression
              (binary_expression
                (unary_expression
                  (primary_expression
                    (identifier))))))))))
  (content)
  (render_expression
    (expression
      (binary_expression
        (unary_expression
          (primary_expression
            (identifier))))))
  (content)
  (render_expression
    (expression
      (binary_expression
        (unary_expression
          (primary_expression
            (function_call
              (identifier)))))))
  (content)
  (control
    (statement))
  (render_expression
    (expression
      (binary_expression
        (unary_expression
          (primary_expression
            (function_call
              (identifier)
              (arg
                (expression
                  (binary_expression
                    (unary_expression
                      (primary_expression
                        (literal
                          (number_literal
                            (dec_literal))))))))))))))
  (content)
  (control
    (statement
      (macro_statement
        (function_call
          (identifier)))))
  (content)
  (render_expression
    (expression
      (binary_expression
        (unary_expression
          (primary_expression
            (identifier))))))
  (content)
  (render_expression
    (expression
      (binary_expression
        (unary_expression
          (primary_expression
            (identifier))))))
  (content)
  (control
    (statement))
  (content)
  (control
    (statement
      (macro_statement
        (function_call
          (identifier)))))
  (content)
  (control
    (statement))
  (content)
  (control
    (statement
      (macro_statement
        (function_call
          (identifier)))))
  (content)
  (control
    (statement))
  (content)
  (control
    (statement
      (macro_statement
        (function_call
          (identifier)
          (arg
            (expression
              (binary_expression
                (unary_expression
                  (primary_expression
                    (identifier))))))
          (arg
            (expression
              (binary_expression
                (unary_expression
                  (primary_expression
                    (identifier))))))
          (arg
            (identifier)
            (binary_operator)
            (expression
              (binary_expression
                (unary_expression
                  (primary_expression
                    (literal
                      (string_literal)))))))
          (arg
            (identifier)
            (binary_operator)
            (expression
              (binary_expression
                (unary_expression
                  (primary_expression
                    (literal
                      (string_literal)))))))))))
  (render_expression
    (expression
      (binary_expression
        (unary_expression
          (primary_expression
            (identifier))))))
  (content)
  (render_expression
    (expression
      (binary_expression
        (unary_expression
          (primary_expression
            (identifier))))))
  (content)
  (render_expression
    (expression
      (binary_expression
        (unary_expression
          (primary_expression
            (identifier))))))
  (content)
  (render_expression
    (expression
      (binary_expression
        (unary_expression
          (primary_expression
            (identifier))))))
  (control
    (statement))
  (content))
