]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/vet: -lostcancel: fix crash in ill-typed code
authorAlan Donovan <adonovan@google.com>
Wed, 22 Mar 2017 16:38:09 +0000 (12:38 -0400)
committerAlan Donovan <adonovan@google.com>
Wed, 22 Mar 2017 17:04:35 +0000 (17:04 +0000)
Fixes golang/go#19656

Change-Id: Ied20d3f25b6e147cc693a1dd1aeb9480adc6687e
Reviewed-on: https://go-review.googlesource.com/38405
Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>

src/cmd/vet/lostcancel.go

index d049a3e8880fd27f77c18fd0161ce361de4362db..ee0342035fe3729efb3774e0d51f1cea10cd0ef3 100644 (file)
@@ -104,7 +104,11 @@ func checkLostCancel(f *File, node ast.Node) {
        var sig *types.Signature
        switch node := node.(type) {
        case *ast.FuncDecl:
-               sig, _ = f.pkg.defs[node.Name].Type().(*types.Signature)
+               obj := f.pkg.defs[node.Name]
+               if obj == nil {
+                       return // type error (e.g. duplicate function declaration)
+               }
+               sig, _ = obj.Type().(*types.Signature)
                g = cfg.New(node.Body, mayReturn)
        case *ast.FuncLit:
                sig, _ = f.pkg.types[node.Type].Type.(*types.Signature)