42 lines
		
	
	
		
			918 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			918 B
		
	
	
	
		
			Go
		
	
	
	
	
	
package goanalysis
 | 
						|
 | 
						|
import (
 | 
						|
	"go/types"
 | 
						|
 | 
						|
	"golang.org/x/tools/go/analysis"
 | 
						|
	"golang.org/x/tools/go/loader" //nolint:staticcheck // it's an adapter for golang.org/x/tools/go/packages
 | 
						|
)
 | 
						|
 | 
						|
func MakeFakeLoaderProgram(pass *analysis.Pass) *loader.Program {
 | 
						|
	var info types.Info
 | 
						|
	if pass.TypesInfo != nil {
 | 
						|
		info = *pass.TypesInfo
 | 
						|
	}
 | 
						|
 | 
						|
	prog := &loader.Program{
 | 
						|
		Fset: pass.Fset,
 | 
						|
		Created: []*loader.PackageInfo{
 | 
						|
			{
 | 
						|
				Pkg:                   pass.Pkg,
 | 
						|
				Importable:            true, // not used
 | 
						|
				TransitivelyErrorFree: true, // TODO ???
 | 
						|
 | 
						|
				Files:  pass.Files,
 | 
						|
				Errors: nil,
 | 
						|
				Info:   info,
 | 
						|
			},
 | 
						|
		},
 | 
						|
		AllPackages: map[*types.Package]*loader.PackageInfo{
 | 
						|
			pass.Pkg: {
 | 
						|
				Pkg:                   pass.Pkg,
 | 
						|
				Importable:            true,
 | 
						|
				TransitivelyErrorFree: true,
 | 
						|
				Files:                 pass.Files,
 | 
						|
				Errors:                nil,
 | 
						|
				Info:                  info,
 | 
						|
			},
 | 
						|
		},
 | 
						|
	}
 | 
						|
	return prog
 | 
						|
}
 |