| Regression test for 'references' bug golang/go#61618: |
| references to instantiated fields were missing. |
| |
| -- go.mod -- |
| module example.com |
| go 1.18 |
| |
| -- a.go -- |
| package a |
| |
| // This file is adapted from the example in the issue. |
| |
| type builder[S ~[]F, F ~string] struct { |
| name string |
| elements S //@loc(def, "elements"), refs(def, def, assign, use) |
| elemData map[F][]ElemData[F] |
| } |
| |
| type ElemData[F ~string] struct { |
| Name F |
| } |
| |
| type BuilderImpl[S ~[]F, F ~string] struct{ builder[S, F] } |
| |
| func NewBuilderImpl[S ~[]F, F ~string](name string) *BuilderImpl[S, F] { |
| impl := &BuilderImpl[S,F]{ |
| builder[S, F]{ |
| name: name, |
| elements: S{}, //@loc(assign, "elements"), refs(assign, def, assign, use) |
| elemData: map[F][]ElemData[F]{}, |
| }, |
| } |
| |
| _ = impl.elements //@loc(use, "elements"), refs(use, def, assign, use) |
| return impl |
| } |