[go] text/template/parse: respect delims in String representations

12 views
Skip to first unread message

Paul Jolly (Gerrit)

unread,
Jan 16, 2025, 3:29:17 AM1/16/25
to goph...@pubsubhelper.golang.org, golang-co...@googlegroups.com

Paul Jolly has uploaded the change for review

Commit message

text/template/parse: respect delims in String representations

Use the same delimiters in String() representation of nodes that were
used during the parsing of a template.

This means that that when using custom delims we can roundtrip back to
the original Parse input (modulo superfluous whitespace within actions).
Change-Id: I5c33e92965c7b548b854390f1189c6cc37d4d687

Change diff

diff --git a/src/text/template/parse/node.go b/src/text/template/parse/node.go
index a313098..31d663c 100644
--- a/src/text/template/parse/node.go
+++ b/src/text/template/parse/node.go
@@ -171,9 +171,9 @@
}

func (c *CommentNode) writeTo(sb *strings.Builder) {
- sb.WriteString("{{")
+ sb.WriteString(c.tr.leftDelim)
sb.WriteString(c.Text)
- sb.WriteString("}}")
+ sb.WriteString(c.tr.rightDelim)
}

func (c *CommentNode) tree() *Tree {
@@ -277,9 +277,9 @@
}

func (a *ActionNode) writeTo(sb *strings.Builder) {
- sb.WriteString("{{")
+ sb.WriteString(a.tr.leftDelim)
a.Pipe.writeTo(sb)
- sb.WriteString("}}")
+ sb.WriteString(a.tr.rightDelim)
}

func (a *ActionNode) tree() *Tree {
@@ -793,7 +793,7 @@
}

func (e *endNode) String() string {
- return "{{end}}"
+ return e.tr.leftDelim + "end" + e.tr.rightDelim
}

func (e *endNode) writeTo(sb *strings.Builder) {
@@ -825,7 +825,7 @@
}

func (e *elseNode) String() string {
- return "{{else}}"
+ return e.tr.leftDelim + "else" + e.tr.rightDelim
}

func (e *elseNode) writeTo(sb *strings.Builder) {
@@ -869,17 +869,21 @@
default:
panic("unknown branch type")
}
- sb.WriteString("{{")
+ sb.WriteString(b.tr.leftDelim)
sb.WriteString(name)
sb.WriteByte(' ')
b.Pipe.writeTo(sb)
- sb.WriteString("}}")
+ sb.WriteString(b.tr.rightDelim)
b.List.writeTo(sb)
if b.ElseList != nil {
- sb.WriteString("{{else}}")
+ sb.WriteString(b.tr.leftDelim)
+ sb.WriteString("else")
+ sb.WriteString(b.tr.rightDelim)
b.ElseList.writeTo(sb)
}
- sb.WriteString("{{end}}")
+ sb.WriteString(b.tr.leftDelim)
+ sb.WriteString("end")
+ sb.WriteString(b.tr.rightDelim)
}

func (b *BranchNode) tree() *Tree {
@@ -925,9 +929,9 @@
}

func (b *BreakNode) Copy() Node { return b.tr.newBreak(b.Pos, b.Line) }
-func (b *BreakNode) String() string { return "{{break}}" }
+func (b *BreakNode) String() string { return b.tr.leftDelim + "break" + b.tr.rightDelim }
func (b *BreakNode) tree() *Tree { return b.tr }
-func (b *BreakNode) writeTo(sb *strings.Builder) { sb.WriteString("{{break}}") }
+func (b *BreakNode) writeTo(sb *strings.Builder) { sb.WriteString(b.String()) }

// ContinueNode represents a {{continue}} action.
type ContinueNode struct {
@@ -942,9 +946,9 @@
}

func (c *ContinueNode) Copy() Node { return c.tr.newContinue(c.Pos, c.Line) }
-func (c *ContinueNode) String() string { return "{{continue}}" }
+func (c *ContinueNode) String() string { return c.tr.leftDelim + "continue" + c.tr.rightDelim }
func (c *ContinueNode) tree() *Tree { return c.tr }
-func (c *ContinueNode) writeTo(sb *strings.Builder) { sb.WriteString("{{continue}}") }
+func (c *ContinueNode) writeTo(sb *strings.Builder) { sb.WriteString(c.String()) }

// RangeNode represents a {{range}} action and its commands.
type RangeNode struct {
@@ -993,13 +997,14 @@
}

func (t *TemplateNode) writeTo(sb *strings.Builder) {
- sb.WriteString("{{template ")
+ sb.WriteString(t.tr.leftDelim)
+ sb.WriteString("template ")
sb.WriteString(strconv.Quote(t.Name))
if t.Pipe != nil {
sb.WriteByte(' ')
t.Pipe.writeTo(sb)
}
- sb.WriteString("}}")
+ sb.WriteString(t.tr.rightDelim)
}

func (t *TemplateNode) tree() *Tree {
diff --git a/src/text/template/parse/parse.go b/src/text/template/parse/parse.go
index 27c84f3..364c528 100644
--- a/src/text/template/parse/parse.go
+++ b/src/text/template/parse/parse.go
@@ -32,6 +32,9 @@
treeSet map[string]*Tree
actionLine int // line of left delim starting action
rangeDepth int
+
+ leftDelim string
+ rightDelim string
}

// A mode value is a set of flags (or 0). Modes control parser behavior.
@@ -48,10 +51,12 @@
return nil
}
return &Tree{
- Name: t.Name,
- ParseName: t.ParseName,
- Root: t.Root.CopyList(),
- text: t.text,
+ Name: t.Name,
+ ParseName: t.ParseName,
+ Root: t.Root.CopyList(),
+ text: t.text,
+ leftDelim: t.leftDelim,
+ rightDelim: t.rightDelim,
}
}

@@ -245,7 +250,8 @@
func (t *Tree) Parse(text, leftDelim, rightDelim string, treeSet map[string]*Tree, funcs ...map[string]any) (tree *Tree, err error) {
defer t.recover(&err)
t.ParseName = t.Name
- lexer := lex(t.Name, text, leftDelim, rightDelim)
+ t.setDelims(leftDelim, rightDelim)
+ lexer := lex(t.Name, text, t.leftDelim, t.rightDelim)
t.startParse(funcs, lexer, treeSet)
t.text = text
t.parse()
@@ -254,6 +260,17 @@
return t, nil
}

+func (t *Tree) setDelims(lhs, rhs string) {
+ if lhs == "" {
+ lhs = leftDelim
+ }
+ t.leftDelim = lhs
+ if rhs == "" {
+ rhs = rightDelim
+ }
+ t.rightDelim = rhs
+}
+
// add adds tree to t.treeSet.
func (t *Tree) add() {
tree := t.treeSet[t.Name]
@@ -305,6 +322,8 @@
newT := New("definition") // name will be updated once we know it.
newT.text = t.text
newT.Mode = t.Mode
+ newT.leftDelim = t.leftDelim
+ newT.rightDelim = t.rightDelim
newT.ParseName = t.ParseName
newT.startParse(t.funcs, t.lex, t.treeSet)
newT.parseDefinition()
@@ -637,6 +656,8 @@
block := New(name) // name will be updated once we know it.
block.text = t.text
block.Mode = t.Mode
+ block.leftDelim = t.leftDelim
+ block.rightDelim = t.rightDelim
block.ParseName = t.ParseName
block.startParse(t.funcs, t.lex, t.treeSet)
var end Node
diff --git a/src/text/template/parse/parse_test.go b/src/text/template/parse/parse_test.go
index 26aff33..9935a22 100644
--- a/src/text/template/parse/parse_test.go
+++ b/src/text/template/parse/parse_test.go
@@ -428,6 +428,19 @@
}
}

+func TestParseCustomDelims(t *testing.T) {
+ const input = "{{{range .X}}}{{{end}}}"
+ parseTrees, err := Parse("test", input, "{{{", "}}}")
+ if err != nil {
+ t.Fatalf("unexpected error: %v", err)
+ }
+ listNode := parseTrees["test"].Root
+ expected := input
+ if result := listNode.String(); result != expected {
+ t.Errorf("got\n\t%v\nexpected\n\t%v", result, expected)
+ }
+}
+
func TestSkipFuncCheck(t *testing.T) {
oldTextFormat := textFormat
textFormat = "%q"

Change information

Files:
  • M src/text/template/parse/node.go
  • M src/text/template/parse/parse.go
  • M src/text/template/parse/parse_test.go
Change size: M
Delta: 3 files changed, 60 insertions(+), 21 deletions(-)
Open in Gerrit

Related details

Attention set is empty
Submit Requirements:
  • requirement is not satisfiedCode-Review
  • requirement satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
  • requirement is not satisfiedTryBots-Pass
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: newchange
Gerrit-Project: go
Gerrit-Branch: master
Gerrit-Change-Id: I5c33e92965c7b548b854390f1189c6cc37d4d687
Gerrit-Change-Number: 642019
Gerrit-PatchSet: 1
Gerrit-Owner: Paul Jolly <pa...@myitcv.org.uk>
unsatisfied_requirement
satisfied_requirement
open
diffy

Daniel Martí (Gerrit)

unread,
Jan 16, 2025, 4:56:58 AM1/16/25
to Paul Jolly, goph...@pubsubhelper.golang.org, Rob Pike, Gopher Robot, golang-co...@googlegroups.com
Attention needed from Paul Jolly and Rob Pike

Daniel Martí voted and added 4 comments

Votes added by Daniel Martí

Code-Review+2

4 comments

Patchset-level comments
File-level comment, Patchset 1 (Latest):
Daniel Martí . resolved

SGTM. This makes Tree slightly bigger but that doesn't feel like a problem. I would suggest that we wait to merge for 1.25 because it feels a bit too risky for 1.24 at this point in the freeze and with rc1 done; there could easily be users expecting the previous behavior.

Commit Message
Line 9, Patchset 1 (Latest):Use the same delimiters in String() representation of nodes that were
Daniel Martí . unresolved

nit: drop the parentheses for consistency

Line 12, Patchset 1 (Latest):This means that that when using custom delims we can roundtrip back to
Daniel Martí . unresolved

duplicate "that"

File src/text/template/parse/parse.go
Line 272, Patchset 1 (Latest):}
Daniel Martí . unresolved

this is only used once, and it's just a few lines, so personally I would inline.

you could also use `cmp.Or`:

```
t.leftDelim = cmp.Or(lhs, leftDelim)
t.rightDelim = cmp.Or(rhs, rightDelim)
```

Open in Gerrit

Related details

Attention is currently required from:
  • Paul Jolly
  • Rob Pike
Submit Requirements:
  • requirement satisfiedCode-Review
  • requirement is not satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
  • requirement is not satisfiedTryBots-Pass
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: go
Gerrit-Branch: master
Gerrit-Change-Id: I5c33e92965c7b548b854390f1189c6cc37d4d687
Gerrit-Change-Number: 642019
Gerrit-PatchSet: 1
Gerrit-Owner: Paul Jolly <pa...@myitcv.org.uk>
Gerrit-Reviewer: Daniel Martí <mv...@mvdan.cc>
Gerrit-Reviewer: Rob Pike <r...@golang.org>
Gerrit-CC: Gopher Robot <go...@golang.org>
Gerrit-Attention: Paul Jolly <pa...@myitcv.org.uk>
Gerrit-Attention: Rob Pike <r...@golang.org>
Gerrit-Comment-Date: Thu, 16 Jan 2025 09:56:51 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: Yes
satisfied_requirement
unsatisfied_requirement
open
diffy

Daniel Martí (Gerrit)

unread,
Jan 16, 2025, 4:59:45 AM1/16/25
to Paul Jolly, goph...@pubsubhelper.golang.org, Rob Pike, Gopher Robot, golang-co...@googlegroups.com
Attention needed from Paul Jolly and Rob Pike

Daniel Martí added 1 comment

File src/text/template/parse/parse_test.go
Line 442, Patchset 1 (Latest):}
Daniel Martí . unresolved

Why not extend the existing TestDelims test? You could add a few lines there to test properties about the expected String outcome, or even that it's exactly the same as the input if the input follows correct spacing etc.

If you need an extra test, call it something more specific, like TestDelimsStringRoundtrip.

Open in Gerrit

Related details

Attention is currently required from:
  • Paul Jolly
  • Rob Pike
Submit Requirements:
  • requirement satisfiedCode-Review
  • requirement is not satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
  • requirement is not satisfiedTryBots-Pass
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: go
Gerrit-Branch: master
Gerrit-Change-Id: I5c33e92965c7b548b854390f1189c6cc37d4d687
Gerrit-Change-Number: 642019
Gerrit-PatchSet: 1
Gerrit-Owner: Paul Jolly <pa...@myitcv.org.uk>
Gerrit-Reviewer: Daniel Martí <mv...@mvdan.cc>
Gerrit-Reviewer: Rob Pike <r...@golang.org>
Gerrit-CC: Gopher Robot <go...@golang.org>
Gerrit-Attention: Paul Jolly <pa...@myitcv.org.uk>
Gerrit-Attention: Rob Pike <r...@golang.org>
Gerrit-Comment-Date: Thu, 16 Jan 2025 09:59:38 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Rob Pike (Gerrit)

unread,
Jan 16, 2025, 7:19:24 PM1/16/25
to Paul Jolly, goph...@pubsubhelper.golang.org, Daniel Martí, Rob Pike, Gopher Robot, golang-co...@googlegroups.com
Attention needed from Paul Jolly

Rob Pike added 1 comment

File src/text/template/parse/parse.go
Line 272, Patchset 1 (Latest):}
Daniel Martí . unresolved

this is only used once, and it's just a few lines, so personally I would inline.

you could also use `cmp.Or`:

```
t.leftDelim = cmp.Or(lhs, leftDelim)
t.rightDelim = cmp.Or(rhs, rightDelim)
```

Rob Pike

no need to add a new dependency (cmp) here.
and i agree it's really not worth a separate function anyway.

Open in Gerrit

Related details

Attention is currently required from:
  • Paul Jolly
Submit Requirements:
    • requirement satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    • requirement is not satisfiedNo-Wait-Release
    • requirement is not satisfiedReview-Enforcement
    • requirement is not satisfiedTryBots-Pass
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: go
    Gerrit-Branch: master
    Gerrit-Change-Id: I5c33e92965c7b548b854390f1189c6cc37d4d687
    Gerrit-Change-Number: 642019
    Gerrit-PatchSet: 1
    Gerrit-Owner: Paul Jolly <pa...@myitcv.org.uk>
    Gerrit-Reviewer: Daniel Martí <mv...@mvdan.cc>
    Gerrit-Reviewer: Rob Pike <r...@golang.org>
    Gerrit-CC: Gopher Robot <go...@golang.org>
    Gerrit-Attention: Paul Jolly <pa...@myitcv.org.uk>
    Gerrit-Comment-Date: Fri, 17 Jan 2025 00:19:16 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Daniel Martí <mv...@mvdan.cc>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Paul Jolly (Gerrit)

    unread,
    Jun 3, 2026, 8:00:06 AM (4 days ago) Jun 3
    to goph...@pubsubhelper.golang.org, golang-co...@googlegroups.com
    Attention needed from Daniel Martí and Paul Jolly

    Paul Jolly uploaded new patchset

    Paul Jolly uploaded patch set #2 to this change.
    Following approvals got outdated and were removed:
    • Code-Review: +2 by Daniel Martí
    Open in Gerrit

    Related details

    Attention is currently required from:
    • Daniel Martí
    • Paul Jolly
    Submit Requirements:
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    • requirement is not satisfiedReview-Enforcement
    • requirement is not satisfiedTryBots-Pass
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: newpatchset
    Gerrit-Project: go
    Gerrit-Branch: master
    Gerrit-Change-Id: I5c33e92965c7b548b854390f1189c6cc37d4d687
    Gerrit-Change-Number: 642019
    Gerrit-PatchSet: 2
    Gerrit-Owner: Paul Jolly <pa...@myitcv.org.uk>
    Gerrit-Reviewer: Daniel Martí <mv...@mvdan.cc>
    Gerrit-Reviewer: Rob Pike <r...@golang.org>
    Gerrit-CC: Gopher Robot <go...@golang.org>
    Gerrit-Attention: Paul Jolly <pa...@myitcv.org.uk>
    Gerrit-Attention: Daniel Martí <mv...@mvdan.cc>
    unsatisfied_requirement
    open
    diffy

    Paul Jolly (Gerrit)

    unread,
    Jun 3, 2026, 8:32:14 AM (4 days ago) Jun 3
    to goph...@pubsubhelper.golang.org, golang-co...@googlegroups.com
    Attention needed from Daniel Martí and Paul Jolly

    Paul Jolly uploaded new patchset

    Paul Jolly uploaded patch set #3 to this change.
    Open in Gerrit

    Related details

    Attention is currently required from:
    • Daniel Martí
    • Paul Jolly
    Submit Requirements:
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    • requirement is not satisfiedReview-Enforcement
    • requirement is not satisfiedTryBots-Pass
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: newpatchset
    Gerrit-Project: go
    Gerrit-Branch: master
    Gerrit-Change-Id: I5c33e92965c7b548b854390f1189c6cc37d4d687
    Gerrit-Change-Number: 642019
    Gerrit-PatchSet: 3
    unsatisfied_requirement
    open
    diffy

    Paul Jolly (Gerrit)

    unread,
    Jun 3, 2026, 8:34:32 AM (4 days ago) Jun 3
    to goph...@pubsubhelper.golang.org, Daniel Martí, Rob Pike, Gopher Robot, golang-co...@googlegroups.com
    Attention needed from Daniel Martí and Rob Pike

    Paul Jolly added 4 comments

    Commit Message
    Line 9, Patchset 1:Use the same delimiters in String() representation of nodes that were
    Daniel Martí . resolved

    nit: drop the parentheses for consistency

    Paul Jolly

    Done

    Line 12, Patchset 1:This means that that when using custom delims we can roundtrip back to
    Daniel Martí . resolved

    duplicate "that"

    Paul Jolly

    Done

    File src/text/template/parse/parse.go
    Line 272, Patchset 1:}
    Daniel Martí . resolved

    this is only used once, and it's just a few lines, so personally I would inline.

    you could also use `cmp.Or`:

    ```
    t.leftDelim = cmp.Or(lhs, leftDelim)
    t.rightDelim = cmp.Or(rhs, rightDelim)
    ```

    Rob Pike

    no need to add a new dependency (cmp) here.
    and i agree it's really not worth a separate function anyway.

    Paul Jolly

    Done — inlined without cmp, per Rob's note.

    File src/text/template/parse/parse_test.go
    Line 442, Patchset 1:}
    Daniel Martí . resolved

    Why not extend the existing TestDelims test? You could add a few lines there to test properties about the expected String outcome, or even that it's exactly the same as the input if the input follows correct spacing etc.

    If you need an extra test, call it something more specific, like TestDelimsStringRoundtrip.

    Paul Jolly

    Done — extended TestDelims in exec_test.go for the action roundtrip across all delim pairs, and added TestDelimsStringRoundtrip in parse_test.go covering the remaining node types (if/else/end, range/break/continue, with, template, comment).

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Daniel Martí
    • Rob Pike
    Submit Requirements:
      • requirement is not satisfiedCode-Review
      • requirement satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      • requirement is not satisfiedTryBots-Pass
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: go
      Gerrit-Branch: master
      Gerrit-Change-Id: I5c33e92965c7b548b854390f1189c6cc37d4d687
      Gerrit-Change-Number: 642019
      Gerrit-PatchSet: 3
      Gerrit-Owner: Paul Jolly <pa...@myitcv.org.uk>
      Gerrit-Reviewer: Daniel Martí <mv...@mvdan.cc>
      Gerrit-Reviewer: Rob Pike <r...@golang.org>
      Gerrit-CC: Gopher Robot <go...@golang.org>
      Gerrit-Attention: Rob Pike <r...@golang.org>
      Gerrit-Attention: Daniel Martí <mv...@mvdan.cc>
      Gerrit-Comment-Date: Wed, 03 Jun 2026 12:34:26 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      Comment-In-Reply-To: Rob Pike <r...@golang.org>
      Comment-In-Reply-To: Daniel Martí <mv...@mvdan.cc>
      unsatisfied_requirement
      satisfied_requirement
      open
      diffy

      Paul Jolly (Gerrit)

      unread,
      Jun 3, 2026, 9:12:20 AM (4 days ago) Jun 3
      to goph...@pubsubhelper.golang.org, golang...@luci-project-accounts.iam.gserviceaccount.com, Daniel Martí, Rob Pike, Gopher Robot, golang-co...@googlegroups.com
      Attention needed from Daniel Martí and Rob Pike

      Paul Jolly added 1 comment

      File src/text/template/parse/parse_test.go
      Line 442, Patchset 1:}
      Daniel Martí . resolved

      Why not extend the existing TestDelims test? You could add a few lines there to test properties about the expected String outcome, or even that it's exactly the same as the input if the input follows correct spacing etc.

      If you need an extra test, call it something more specific, like TestDelimsStringRoundtrip.

      Paul Jolly

      Done — extended TestDelims in exec_test.go for the action roundtrip across all delim pairs, and added TestDelimsStringRoundtrip in parse_test.go covering the remaining node types (if/else/end, range/break/continue, with, template, comment).

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Daniel Martí
      • Rob Pike
      Submit Requirements:
        • requirement is not satisfiedCode-Review
        • requirement satisfiedNo-Unresolved-Comments
        • requirement is not satisfiedReview-Enforcement
        • requirement satisfiedTryBots-Pass
        Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
        Gerrit-MessageType: comment
        Gerrit-Project: go
        Gerrit-Branch: master
        Gerrit-Change-Id: I5c33e92965c7b548b854390f1189c6cc37d4d687
        Gerrit-Change-Number: 642019
        Gerrit-PatchSet: 1
        Gerrit-Owner: Paul Jolly <pa...@myitcv.org.uk>
        Gerrit-Reviewer: Daniel Martí <mv...@mvdan.cc>
        Gerrit-CC: Gopher Robot <go...@golang.org>
        Gerrit-Attention: Rob Pike <r...@golang.org>
        Gerrit-Attention: Daniel Martí <mv...@mvdan.cc>
        Gerrit-Comment-Date: Wed, 03 Jun 2026 13:12:12 +0000
        Gerrit-HasComments: Yes
        Gerrit-Has-Labels: No
        Comment-In-Reply-To: Daniel Martí <mv...@mvdan.cc>
        unsatisfied_requirement
        satisfied_requirement
        open
        diffy

        Daniel Martí (Gerrit)

        unread,
        Jun 3, 2026, 9:23:42 AM (4 days ago) Jun 3
        to Paul Jolly, goph...@pubsubhelper.golang.org, golang...@luci-project-accounts.iam.gserviceaccount.com, Rob Pike, Gopher Robot, golang-co...@googlegroups.com
        Attention needed from Paul Jolly and Rob Pike

        Daniel Martí voted Code-Review+2

        Code-Review+2
        Open in Gerrit

        Related details

        Attention is currently required from:
        • Paul Jolly
        • Rob Pike
        Submit Requirements:
        • requirement satisfiedCode-Review
        • requirement satisfiedNo-Unresolved-Comments
        • requirement is not satisfiedReview-Enforcement
        • requirement satisfiedTryBots-Pass
        Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
        Gerrit-MessageType: comment
        Gerrit-Project: go
        Gerrit-Branch: master
        Gerrit-Change-Id: I5c33e92965c7b548b854390f1189c6cc37d4d687
        Gerrit-Change-Number: 642019
        Gerrit-PatchSet: 4
        Gerrit-Owner: Paul Jolly <pa...@myitcv.org.uk>
        Gerrit-Reviewer: Daniel Martí <mv...@mvdan.cc>
        Gerrit-Reviewer: Paul Jolly <pa...@myitcv.org.uk>
        Gerrit-Reviewer: Rob Pike <r...@golang.org>
        Gerrit-CC: Gopher Robot <go...@golang.org>
        Gerrit-Attention: Paul Jolly <pa...@myitcv.org.uk>
        Gerrit-Attention: Rob Pike <r...@golang.org>
        Gerrit-Comment-Date: Wed, 03 Jun 2026 13:23:32 +0000
        Gerrit-HasComments: No
        Gerrit-Has-Labels: Yes
        satisfied_requirement
        unsatisfied_requirement
        open
        diffy

        Mark Freeman (Gerrit)

        unread,
        Jun 4, 2026, 12:55:03 PM (3 days ago) Jun 4
        to Paul Jolly, goph...@pubsubhelper.golang.org, Daniel Martí, golang...@luci-project-accounts.iam.gserviceaccount.com, Rob Pike, Gopher Robot, golang-co...@googlegroups.com
        Attention needed from Paul Jolly and Rob Pike

        Mark Freeman voted Code-Review+1

        Code-Review+1
        Open in Gerrit

        Related details

        Attention is currently required from:
        • Paul Jolly
        • Rob Pike
        Submit Requirements:
        • requirement satisfiedCode-Review
        • requirement satisfiedNo-Unresolved-Comments
        • requirement is not satisfiedReview-Enforcement
        • requirement satisfiedTryBots-Pass
        Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
        Gerrit-MessageType: comment
        Gerrit-Project: go
        Gerrit-Branch: master
        Gerrit-Change-Id: I5c33e92965c7b548b854390f1189c6cc37d4d687
        Gerrit-Change-Number: 642019
        Gerrit-PatchSet: 4
        Gerrit-Owner: Paul Jolly <pa...@myitcv.org.uk>
        Gerrit-Reviewer: Daniel Martí <mv...@mvdan.cc>
        Gerrit-Reviewer: Mark Freeman <markf...@google.com>
        Gerrit-Reviewer: Paul Jolly <pa...@myitcv.org.uk>
        Gerrit-Reviewer: Rob Pike <r...@golang.org>
        Gerrit-CC: Gopher Robot <go...@golang.org>
        Gerrit-Attention: Paul Jolly <pa...@myitcv.org.uk>
        Gerrit-Attention: Rob Pike <r...@golang.org>
        Gerrit-Comment-Date: Thu, 04 Jun 2026 16:54:59 +0000
        Gerrit-HasComments: No
        Gerrit-Has-Labels: Yes
        satisfied_requirement
        unsatisfied_requirement
        open
        diffy

        David Chase (Gerrit)

        unread,
        Jun 4, 2026, 1:00:06 PM (3 days ago) Jun 4
        to Paul Jolly, goph...@pubsubhelper.golang.org, Mark Freeman, Daniel Martí, golang...@luci-project-accounts.iam.gserviceaccount.com, Rob Pike, Gopher Robot, golang-co...@googlegroups.com
        Attention needed from Paul Jolly and Rob Pike

        David Chase voted Commit-Queue+1

        Commit-Queue+1
        Open in Gerrit

        Related details

        Attention is currently required from:
        • Paul Jolly
        • Rob Pike
        Submit Requirements:
        • requirement satisfiedCode-Review
        • requirement satisfiedNo-Unresolved-Comments
        • requirement is not satisfiedReview-Enforcement
        • requirement satisfiedTryBots-Pass
        Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
        Gerrit-MessageType: comment
        Gerrit-Project: go
        Gerrit-Branch: master
        Gerrit-Change-Id: I5c33e92965c7b548b854390f1189c6cc37d4d687
        Gerrit-Change-Number: 642019
        Gerrit-PatchSet: 4
        Gerrit-Owner: Paul Jolly <pa...@myitcv.org.uk>
        Gerrit-Reviewer: Daniel Martí <mv...@mvdan.cc>
        Gerrit-Reviewer: David Chase <drc...@google.com>
        Gerrit-Reviewer: Mark Freeman <markf...@google.com>
        Gerrit-Reviewer: Paul Jolly <pa...@myitcv.org.uk>
        Gerrit-Reviewer: Rob Pike <r...@golang.org>
        Gerrit-CC: Gopher Robot <go...@golang.org>
        Gerrit-Attention: Paul Jolly <pa...@myitcv.org.uk>
        Gerrit-Attention: Rob Pike <r...@golang.org>
        Gerrit-Comment-Date: Thu, 04 Jun 2026 16:59:59 +0000
        Gerrit-HasComments: No
        Gerrit-Has-Labels: Yes
        satisfied_requirement
        unsatisfied_requirement
        open
        diffy

        Daniel Martí (Gerrit)

        unread,
        Jun 6, 2026, 7:01:26 AM (19 hours ago) Jun 6
        to Paul Jolly, goph...@pubsubhelper.golang.org, David Chase, Mark Freeman, golang...@luci-project-accounts.iam.gserviceaccount.com, Rob Pike, Gopher Robot, golang-co...@googlegroups.com
        Attention needed from David Chase, Paul Jolly and Rob Pike

        Daniel Martí voted Commit-Queue+1

        Commit-Queue+1
        Open in Gerrit

        Related details

        Attention is currently required from:
        • David Chase
        • Paul Jolly
        • Rob Pike
        Submit Requirements:
          • requirement satisfiedCode-Review
          • requirement satisfiedNo-Unresolved-Comments
          • requirement is not satisfiedReview-Enforcement
          • requirement is not satisfiedTryBots-Pass
          Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
          Gerrit-MessageType: comment
          Gerrit-Project: go
          Gerrit-Branch: master
          Gerrit-Change-Id: I5c33e92965c7b548b854390f1189c6cc37d4d687
          Gerrit-Change-Number: 642019
          Gerrit-PatchSet: 4
          Gerrit-Owner: Paul Jolly <pa...@myitcv.org.uk>
          Gerrit-Reviewer: Daniel Martí <mv...@mvdan.cc>
          Gerrit-Reviewer: David Chase <drc...@google.com>
          Gerrit-Reviewer: Mark Freeman <markf...@google.com>
          Gerrit-Reviewer: Paul Jolly <pa...@myitcv.org.uk>
          Gerrit-Reviewer: Rob Pike <r...@golang.org>
          Gerrit-CC: Gopher Robot <go...@golang.org>
          Gerrit-Attention: David Chase <drc...@google.com>
          Gerrit-Attention: Paul Jolly <pa...@myitcv.org.uk>
          Gerrit-Attention: Rob Pike <r...@golang.org>
          Gerrit-Comment-Date: Sat, 06 Jun 2026 11:01:18 +0000
          Gerrit-HasComments: No
          Gerrit-Has-Labels: Yes
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy
          Reply all
          Reply to author
          Forward
          0 new messages