func mkType()

in processor/processor.go [446:466]


func mkType(pkg *loader.Package, t gotypes.Type) (*types.Type, bool) {
	qualifier := gotypes.RelativeTo(pkg.Types)
	cleanTypeName := strings.TrimLeft(gotypes.TypeString(t, qualifier), "*[]")

	typeDef := &types.Type{
		UID:     t.String(),
		Name:    cleanTypeName,
		Package: pkg.PkgPath,
	}

	// Check if the type is imported
	rawType := strings.HasPrefix(cleanTypeName, "struct{") || strings.HasPrefix(cleanTypeName, "interface{")
	dotPos := strings.LastIndexByte(cleanTypeName, '.')
	if !rawType && dotPos >= 0 {
		typeDef.Name = cleanTypeName[dotPos+1:]
		typeDef.Package = cleanTypeName[:dotPos]
		typeDef.Imported = true
	}

	return typeDef, rawType
}