| // Copyright 2024 The Go Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style | |
| // license that can be found in the LICENSE file. | |
| // This file holds test cases for individual issues | |
| // for which there is (currently) no better location. | |
| 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 { | |
| // identify column position of @ and remove it from src | |
| 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 | |
| } | |
| // locate KeyValueExpr | |
| 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 | |
| }) | |
| } | |
| } |