Skip to content

Commit 7088b49

Browse files
committed
optimize locateObject function code
1 parent 26480b0 commit 7088b49

File tree

1 file changed

+14
-8
lines changed

1 file changed

+14
-8
lines changed

cmd/requestgen/main.go

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1264,12 +1264,18 @@ func main() {
12641264
}
12651265
}
12661266

1267-
func locateObject(ts *requestgen.TypeSelector) (types.Object, error) {
1268-
log.Infof("locating object: %#v", ts)
1267+
func locateObject(ts *requestgen.TypeSelector, selectedPkgs []*packages.Package) (types.Object, error) {
1268+
log.Debugf("locating object: %#v", ts)
12691269

1270-
packages, err := loadPackages([]string{ts.Package}, []string{})
1271-
if err != nil {
1272-
return nil, err
1270+
var packages []*packages.Package
1271+
if len(selectedPkgs) > 0 && (ts.Package == "." || ts.Package == selectedPkgs[0].PkgPath) {
1272+
packages = selectedPkgs
1273+
} else {
1274+
var err error
1275+
packages, err = loadPackages([]string{ts.Package}, []string{})
1276+
if err != nil {
1277+
return nil, err
1278+
}
12731279
}
12741280

12751281
if len(packages) == 0 {
@@ -1319,7 +1325,7 @@ func locateObject(ts *requestgen.TypeSelector) (types.Object, error) {
13191325
return nil, fmt.Errorf("can not find type matches the type selector %+v in the packages %+v", ts, packages)
13201326
}
13211327

1322-
func parseTypeSelector(sel string, pkgs []*packages.Package) (types.Object, *requestgen.TypeSelector, error) {
1328+
func parseTypeSelector(sel string, selectedPkgs []*packages.Package) (types.Object, *requestgen.TypeSelector, error) {
13231329
log.Debugf("parsing type selector: %s", sel)
13241330

13251331
ts, err := requestgen.ParseTypeSelector(sel)
@@ -1330,10 +1336,10 @@ func parseTypeSelector(sel string, pkgs []*packages.Package) (types.Object, *req
13301336
log.Debugf("parsed type selector: %#v", ts)
13311337

13321338
if ts.Package == "." {
1333-
ts.Package = pkgs[0].PkgPath
1339+
ts.Package = selectedPkgs[0].PkgPath
13341340
}
13351341

1336-
o, err := locateObject(ts)
1342+
o, err := locateObject(ts, selectedPkgs)
13371343
if err != nil {
13381344
return nil, ts, err
13391345
}

0 commit comments

Comments
 (0)