Skip to content

Commit dc20f41

Browse files
authored
Merge pull request #1890 from stretchr/dolmen/codegen-modernize
_codegen: modernize
2 parents a463c8c + 098f8d7 commit dc20f41

1 file changed

Lines changed: 19 additions & 14 deletions

File tree

_codegen/main.go

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -177,23 +177,22 @@ func parsePackageSource(pkg string) (*types.Scope, *doc.Package, error) {
177177
}
178178

179179
fset := token.NewFileSet()
180-
files := make(map[string]*ast.File)
181180
fileList := make([]*ast.File, len(pd.GoFiles))
182181
for i, fname := range pd.GoFiles {
183182
src, err := os.ReadFile(path.Join(pd.Dir, fname))
184183
if err != nil {
185184
return nil, nil, err
186185
}
187-
f, err := parser.ParseFile(fset, fname, src, parser.ParseComments|parser.AllErrors)
186+
// SkipObjectResolution for less memory usage in the go/types era
187+
f, err := parser.ParseFile(fset, fname, src, parser.ParseComments|parser.AllErrors|parser.SkipObjectResolution)
188188
if err != nil {
189189
return nil, nil, err
190190
}
191-
files[fname] = f
192191
fileList[i] = f
193192
}
194193

195194
cfg := types.Config{
196-
Importer: importer.For("source", nil),
195+
Importer: importer.ForCompiler(fset, "source", nil),
197196
}
198197
info := types.Info{
199198
Defs: make(map[*ast.Ident]types.Object),
@@ -205,8 +204,10 @@ func parsePackageSource(pkg string) (*types.Scope, *doc.Package, error) {
205204

206205
scope := tp.Scope()
207206

208-
ap, _ := ast.NewPackage(fset, files, nil, nil)
209-
docs := doc.New(ap, pkg, 0)
207+
docs, err := doc.NewFromFiles(fset, fileList, pkg)
208+
if err != nil {
209+
return nil, nil, err
210+
}
210211

211212
return scope, docs, nil
212213
}
@@ -227,7 +228,7 @@ func (f *testFunc) Qualifier(p *types.Package) string {
227228
func (f *testFunc) Params() string {
228229
sig := f.TypeInfo.Type().(*types.Signature)
229230
params := sig.Params()
230-
p := ""
231+
var p strings.Builder
231232
comma := ""
232233
to := params.Len()
233234
var i int
@@ -237,20 +238,23 @@ func (f *testFunc) Params() string {
237238
}
238239
for i = 1; i < to; i++ {
239240
param := params.At(i)
240-
p += fmt.Sprintf("%s%s %s", comma, param.Name(), types.TypeString(param.Type(), f.Qualifier))
241+
p.WriteString(comma)
242+
p.WriteString(param.Name())
243+
p.WriteString(" ")
244+
p.WriteString(types.TypeString(param.Type(), f.Qualifier))
241245
comma = ", "
242246
}
243247
if sig.Variadic() {
244248
param := params.At(params.Len() - 1)
245-
p += fmt.Sprintf("%s%s ...%s", comma, param.Name(), types.TypeString(param.Type().(*types.Slice).Elem(), f.Qualifier))
249+
fmt.Fprintf(&p, "%s%s ...%s", comma, param.Name(), types.TypeString(param.Type().(*types.Slice).Elem(), f.Qualifier))
246250
}
247-
return p
251+
return p.String()
248252
}
249253

250254
func (f *testFunc) ForwardedParams() string {
251255
sig := f.TypeInfo.Type().(*types.Signature)
252256
params := sig.Params()
253-
p := ""
257+
var p strings.Builder
254258
comma := ""
255259
to := params.Len()
256260
var i int
@@ -260,14 +264,15 @@ func (f *testFunc) ForwardedParams() string {
260264
}
261265
for i = 1; i < to; i++ {
262266
param := params.At(i)
263-
p += fmt.Sprintf("%s%s", comma, param.Name())
267+
p.WriteString(comma)
268+
p.WriteString(param.Name())
264269
comma = ", "
265270
}
266271
if sig.Variadic() {
267272
param := params.At(params.Len() - 1)
268-
p += fmt.Sprintf("%s%s...", comma, param.Name())
273+
fmt.Fprintf(&p, "%s%s...", comma, param.Name())
269274
}
270-
return p
275+
return p.String()
271276
}
272277

273278
func (f *testFunc) ParamsFormat() string {

0 commit comments

Comments
 (0)