| | |
| | |
| | |
| |
|
| | |
| | |
| |
|
| | package syntax |
| |
|
| | import ( |
| | "strings" |
| | "testing" |
| | ) |
| |
|
| | func TestIssue67866(t *testing.T) { |
| | var tests = []string{ |
| | "package p; var _ = T{@0: 0}", |
| | "package p; var _ = T{@1 + 2: 0}", |
| | "package p; var _ = T{@x[i]: 0}", |
| | "package p; var _ = T{@f(1, 2, 3): 0}", |
| | "package p; var _ = T{@a + f(b) + <-ch: 0}", |
| | } |
| |
|
| | for _, src := range tests { |
| | |
| | i := strings.Index(src, "@") |
| | if i < 0 { |
| | t.Errorf("%s: invalid test case (missing @)", src) |
| | continue |
| | } |
| | src = src[:i] + src[i+1:] |
| | want := colbase + uint(i) |
| |
|
| | f, err := Parse(nil, strings.NewReader(src), nil, nil, 0) |
| | if err != nil { |
| | t.Errorf("%s: %v", src, err) |
| | continue |
| | } |
| |
|
| | |
| | Inspect(f, func(n Node) bool { |
| | _, ok := n.(*KeyValueExpr) |
| | if ok { |
| | if got := StartPos(n).Col(); got != want { |
| | t.Errorf("%s: got col = %d, want %d", src, got, want) |
| | } |
| | } |
| | return !ok |
| | }) |
| | } |
| | } |
| |
|