template: fix comments with different delimiters.

R=golang-dev, dsymonds
CC=golang-dev
https://golang.org/cl/5208042
diff --git a/src/pkg/template/exec_test.go b/src/pkg/template/exec_test.go
index 57c6325..46b89fd 100644
--- a/src/pkg/template/exec_test.go
+++ b/src/pkg/template/exec_test.go
@@ -507,14 +507,21 @@
 	for i := 0; i < len(delimPairs); i += 2 {
 		text := ".Str"
 		left := delimPairs[i+0]
+		trueLeft := left
 		right := delimPairs[i+1]
+		trueRight := right
 		if left == "" { // default case
-			text = "{{" + text
+			trueLeft = "{{"
 		}
 		if right == "" { // default case
-			text = text + "}}"
+			trueRight = "}}"
 		}
-		text = left + text + right
+		text = trueLeft + text + trueRight
+		// Now add a comment
+		text += trueLeft + "/*comment*/" + trueRight
+		// Now add  an action containing a string.
+		text += trueLeft + `"` + trueLeft + `"` + trueRight
+		// At this point text looks like `{{.Str}}{{/*comment*/}}{{"{{"}}`.
 		tmpl, err := New("delims").Delims(left, right).Parse(text)
 		if err != nil {
 			t.Fatalf("delim %q text %q parse err %s", left, text, err)
@@ -524,8 +531,8 @@
 		if err != nil {
 			t.Fatalf("delim %q exec err %s", left, err)
 		}
-		if b.String() != hello {
-			t.Error("expected %q got %q", hello, b.String())
+		if b.String() != hello+trueLeft {
+			t.Error("expected %q got %q", hello+trueLeft, b.String())
 		}
 	}
 }
diff --git a/src/pkg/template/parse/lex.go b/src/pkg/template/parse/lex.go
index 07740d7..16ff590 100644
--- a/src/pkg/template/parse/lex.go
+++ b/src/pkg/template/parse/lex.go
@@ -230,8 +230,8 @@
 const (
 	leftDelim    = "{{"
 	rightDelim   = "}}"
-	leftComment  = "{{/*"
-	rightComment = "*/}}"
+	leftComment  = "/*"
+	rightComment = "*/"
 )
 
 // lexText scans until an opening action delimiter, "{{".
@@ -257,7 +257,7 @@
 
 // lexLeftDelim scans the left delimiter, which is known to be present.
 func lexLeftDelim(l *lexer) stateFn {
-	if strings.HasPrefix(l.input[l.pos:], leftComment) {
+	if strings.HasPrefix(l.input[l.pos:], l.leftDelim+leftComment) {
 		return lexComment
 	}
 	l.pos += len(l.leftDelim)
@@ -267,11 +267,11 @@
 
 // lexComment scans a comment. The left comment marker is known to be present.
 func lexComment(l *lexer) stateFn {
-	i := strings.Index(l.input[l.pos:], rightComment)
+	i := strings.Index(l.input[l.pos:], rightComment+l.rightDelim)
 	if i < 0 {
 		return l.errorf("unclosed comment")
 	}
-	l.pos += i + len(rightComment)
+	l.pos += i + len(rightComment) + len(l.rightDelim)
 	l.ignore()
 	return lexText
 }
diff --git a/src/pkg/template/parse/lex_test.go b/src/pkg/template/parse/lex_test.go
index f2569b1..6ee1b47 100644
--- a/src/pkg/template/parse/lex_test.go
+++ b/src/pkg/template/parse/lex_test.go
@@ -222,7 +222,7 @@
 	}
 }
 
-// Some easy cases from above, but with delimiters are $$ and @@
+// Some easy cases from above, but with delimiters $$ and @@
 var lexDelimTests = []lexTest{
 	{"punctuation", "$$,@%{{}}@@", []item{
 		tLeftDelim,