diff --git a/src/jinja2/nodes.py b/src/jinja2/nodes.py index d5133f759..fc576dc7b 100644 --- a/src/jinja2/nodes.py +++ b/src/jinja2/nodes.py @@ -106,7 +106,7 @@ class Node(metaclass=NodeType): """ fields = () - attributes = ("lineno", "environment") + attributes = ("lineno", "environment", "end_line") abstract = True def __init__(self, *fields, **attributes): diff --git a/src/jinja2/parser.py b/src/jinja2/parser.py index eedea7a03..bbb7be069 100644 --- a/src/jinja2/parser.py +++ b/src/jinja2/parser.py @@ -890,7 +890,13 @@ def subparse(self, end_tokens=None): def flush_data(): if data_buffer: lineno = data_buffer[0].lineno - body.append(nodes.Output(data_buffer[:], lineno=lineno)) + if hasattr(data_buffer[0], "data"): + end_line = lineno + data_buffer[0].data.count("\n") + body.append( + nodes.Output(data_buffer[:], lineno=lineno, end_line=end_line) + ) + else: + body.append(nodes.Output(data_buffer[:], lineno=lineno)) del data_buffer[:] try: