From 65deb9c3cea2a57b2cba892bc3dc4344ff0783c8 Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Thu, 22 Sep 2022 20:56:38 -0400 Subject: [PATCH] text/template/parse: fix confusion about markers near right delims Fixes #52527. Fixes #55336. Change-Id: I8f5c521c693e74451a558788909e7e4ad1cc797a Reviewed-on: https://go-review.googlesource.com/c/go/+/433036 Run-TryBot: Russ Cox TryBot-Result: Gopher Robot Reviewed-by: Rob Pike Auto-Submit: Russ Cox Reviewed-by: Cherry Mui --- src/text/template/parse/lex.go | 2 +- src/text/template/parse/lex_test.go | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/text/template/parse/lex.go b/src/text/template/parse/lex.go index 3562e0abc9a..3e60a1ecef5 100644 --- a/src/text/template/parse/lex.go +++ b/src/text/template/parse/lex.go @@ -369,7 +369,7 @@ func lexComment(l *lexer) stateFn { // lexRightDelim scans the right delimiter, which is known to be present, possibly with a trim marker. func lexRightDelim(l *lexer) stateFn { - trimSpace := hasRightTrimMarker(l.input[l.pos:]) + _, trimSpace := l.atRightDelim() if trimSpace { l.pos += trimMarkerLen l.ignore() diff --git a/src/text/template/parse/lex_test.go b/src/text/template/parse/lex_test.go index 947889a80bd..d47f10f9d5e 100644 --- a/src/text/template/parse/lex_test.go +++ b/src/text/template/parse/lex_test.go @@ -491,6 +491,23 @@ func TestDelimsAlphaNumeric(t *testing.T) { } } +func TestDelimsAndMarkers(t *testing.T) { + test := lexTest{"delims that look like markers", "{{- .x -}} {{- - .x - -}}", []item{ + mkItem(itemLeftDelim, "{{- "), + mkItem(itemField, ".x"), + mkItem(itemRightDelim, " -}}"), + mkItem(itemLeftDelim, "{{- "), + mkItem(itemField, ".x"), + mkItem(itemRightDelim, " -}}"), + tEOF, + }} + items := collect(&test, "{{- ", " -}}") + + if !equal(items, test.items, false) { + t.Errorf("%s: got\n\t%v\nexpected\n\t%v", test.name, items, test.items) + } +} + var lexPosTests = []lexTest{ {"empty", "", []item{{itemEOF, 0, "", 1}}}, {"punctuation", "{{,@%#}}", []item{