From 4c86c0cabb16a219cf6051831313c2d839e12739 Mon Sep 17 00:00:00 2001 From: Dmitry Savintsev Date: Wed, 8 Jan 2020 12:02:51 +0100 Subject: [PATCH 1/2] internal/wire: fix panic in objectCache.processExpr --- go.sum | 3 +++ internal/wire/parse.go | 9 ++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/go.sum b/go.sum index 88ea58c5..132636db 100644 --- a/go.sum +++ b/go.sum @@ -7,6 +7,9 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223 h1:DH4skfRX4EBpamg7iV4ZlCpblAHI6s6TDM39bFZumv8= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/tools v0.0.0-20190422233926-fe54fb35175b h1:NVD8gBK33xpdqCaZVVtd6OFJp+3dxkXuz7+U7KaVN6s= golang.org/x/tools v0.0.0-20190422233926-fe54fb35175b/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= diff --git a/internal/wire/parse.go b/internal/wire/parse.go index d72e171c..3f19b428 100644 --- a/internal/wire/parse.go +++ b/internal/wire/parse.go @@ -529,7 +529,14 @@ func (oc *objectCache) processExpr(info *types.Info, pkgPath string, expr ast.Ex } if call, ok := expr.(*ast.CallExpr); ok { fnObj := qualifiedIdentObject(info, call.Fun) - if fnObj == nil || !isWireImport(fnObj.Pkg().Path()) { + if fnObj == nil { + return nil, []error{notePosition(exprPos, errors.New("unknown pattern fnObj nil"))} + } + pkg := fnObj.Pkg() + if pkg == nil { + return nil, []error{notePosition(exprPos, errors.New("unknown pattern - pkg in fnObj is nil - "+fmt.Sprintf("%s", fnObj)))} + } + if !isWireImport(pkg.Path()) { return nil, []error{notePosition(exprPos, errors.New("unknown pattern"))} } switch fnObj.Name() { From 76a74980d0e72946561c141ecd84062d9e6720a7 Mon Sep 17 00:00:00 2001 From: Dmitry Savintsev Date: Thu, 9 Jan 2020 13:42:08 +0100 Subject: [PATCH 2/2] use fmt.Errorf with placeholder --- internal/wire/parse.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/wire/parse.go b/internal/wire/parse.go index 3f19b428..7a2e1a8b 100644 --- a/internal/wire/parse.go +++ b/internal/wire/parse.go @@ -534,7 +534,7 @@ func (oc *objectCache) processExpr(info *types.Info, pkgPath string, expr ast.Ex } pkg := fnObj.Pkg() if pkg == nil { - return nil, []error{notePosition(exprPos, errors.New("unknown pattern - pkg in fnObj is nil - "+fmt.Sprintf("%s", fnObj)))} + return nil, []error{notePosition(exprPos, fmt.Errorf("unknown pattern - pkg in fnObj is nil - %s", fnObj))} } if !isWireImport(pkg.Path()) { return nil, []error{notePosition(exprPos, errors.New("unknown pattern"))}