@@ -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 {
227228func (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
250254func (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
273278func (f * testFunc ) ParamsFormat () string {
0 commit comments