Skip to content

Commit 9098d3b

Browse files
Unify package and archive modes - step 2
1 parent a22ae75 commit 9098d3b

File tree

4 files changed

+10
-15
lines changed

4 files changed

+10
-15
lines changed

CHANGELOG.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@ All notable changes to this project will be documented in this file.
44
This project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
55

66
## Unreleased
7-
- No changes yet.
7+
- [#273][]: Archive mode: supports same capabilities as "package" mode, including:
8+
erroring out on type constraints and handling type aliases explicitly
9+
10+
[#273]: https://github.com/uber-go/mock/pull/273
811

912
## 0.6.0 (18 Aug 2025)
1013
### Added

mockgen/archive.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import (
1111
"golang.org/x/tools/go/gcexportdata"
1212
)
1313

14-
func archiveMode(importPath string, symbols []string, archive string) (*model.Package, error) {
14+
func parseExportFile(importPath string, symbols []string, archive string) (*model.Package, error) {
1515
f, err := os.Open(archive)
1616
if err != nil {
1717
return nil, err

mockgen/mockgen.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ func main() {
100100
checkArgs()
101101
packageName = flag.Arg(0)
102102
interfaces := strings.Split(flag.Arg(1), ",")
103-
pkg, err = archiveMode(packageName, interfaces, *archive)
103+
pkg, err = parseExportFile(packageName, interfaces, *archive)
104104

105105
default: // package mode
106106
checkArgs()

mockgen/package_mode.go

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,28 +15,20 @@ var (
1515
buildFlags = flag.String("build_flags", "", "(package mode) Additional flags for go build.")
1616
)
1717

18-
type packageModeParser struct {
19-
pkgName string
20-
}
18+
type packageModeParser struct{}
2119

2220
func (p *packageModeParser) parsePackage(packageName string, ifaces []string) (*model.Package, error) {
23-
p.pkgName = packageName
24-
2521
pkg, err := p.loadPackage(packageName)
2622
if err != nil {
2723
return nil, fmt.Errorf("load package: %w", err)
2824
}
2925

30-
interfaces, err := extractInterfacesFromPackageTypes(pkg.Types, ifaces)
26+
modelPackage, err := parseExportFile(packageName, ifaces, pkg.ExportFile)
3127
if err != nil {
3228
return nil, fmt.Errorf("extract interfaces from package: %w", err)
3329
}
3430

35-
return &model.Package{
36-
Name: pkg.Types.Name(),
37-
PkgPath: packageName,
38-
Interfaces: interfaces,
39-
}, nil
31+
return modelPackage, nil
4032
}
4133

4234
func (p *packageModeParser) loadPackage(packageName string) (*packages.Package, error) {
@@ -46,7 +38,7 @@ func (p *packageModeParser) loadPackage(packageName string) (*packages.Package,
4638
}
4739

4840
cfg := &packages.Config{
49-
Mode: packages.NeedDeps | packages.NeedImports | packages.NeedTypes | packages.NeedTypesInfo | packages.NeedEmbedFiles | packages.LoadSyntax,
41+
Mode: packages.NeedExportFile,
5042
BuildFlags: buildFlagsSet,
5143
}
5244
pkgs, err := packages.Load(cfg, packageName)

0 commit comments

Comments
 (0)