BUG: var() group fails to parse when any declaration contains a composite literal with 2+ elements
Version: v0.14.0
Go: 1.26.1
OS: Linux x86_64
Description
A grouped var ( ... ) block fails to parse when any variable is initialised
with a composite literal (slice, array, map, struct) that contains a comma.
The error always points to column 18 of the var ( line:
transpilation error: parse error: file.dingo:N:18: expected ')', found '='
The preprocessor appears to treat commas inside composite literals as
declaration separators, then chokes on the = of the next real declaration.
A brace-depth counter on the comma scan would fix it.
Minimal reproducers
All of the following fail with the error above:
// slice literal
var (
a = []string{"hello", "world"}
)
// int slice
var (
a = []int{1, 2}
)
// map literal
var (
x = map[string]int{"a": 1, "b": 2}
)
// struct literal
var (
x = T{1, 2}
)
Workaround
Expand the group into individual var declarations:
var a = []string{"hello", "world"}
var x = map[string]int{"a": 1, "b": 2}
What does NOT reproduce the bug
// single-element composite literal in var() — ok
var (
a = []string{"hello"}
)
// same literals as top-level var — ok
var a = []string{"hello", "world"}
// const() group with any content — ok
const (
x = "10.0.0.1"
y = 42
)
// var() group with only scalar values — ok
var (
a = "hello"
b = 42
)
BUG:
var()group fails to parse when any declaration contains a composite literal with 2+ elementsVersion: v0.14.0
Go: 1.26.1
OS: Linux x86_64
Description
A grouped
var ( ... )block fails to parse when any variable is initialisedwith a composite literal (slice, array, map, struct) that contains a comma.
The error always points to column 18 of the
var (line:The preprocessor appears to treat commas inside composite literals as
declaration separators, then chokes on the
=of the next real declaration.A brace-depth counter on the comma scan would fix it.
Minimal reproducers
All of the following fail with the error above:
Workaround
Expand the group into individual
vardeclarations:What does NOT reproduce the bug