Avoid panicking on a method-less receiver.

This is malformed Go code that go/parser accepts;
handle the situation gracefully.

Fixes #134.
diff --git a/lint.go b/lint.go
index 0501e2c..7de99bc 100644
--- a/lint.go
+++ b/lint.go
@@ -312,7 +312,7 @@
 	for _, f := range p.files {
 		f.walk(func(n ast.Node) bool {
 			fn, ok := n.(*ast.FuncDecl)
-			if !ok || fn.Recv == nil {
+			if !ok || fn.Recv == nil || len(fn.Recv.List) == 0 {
 				return true
 			}
 			// TODO(dsymonds): We could check the signature to be more precise.
@@ -780,7 +780,7 @@
 	}
 	kind := "function"
 	name := fn.Name.Name
-	if fn.Recv != nil {
+	if fn.Recv != nil && len(fn.Recv.List) > 0 {
 		// method
 		kind = "method"
 		recv := receiverType(fn)
@@ -1189,7 +1189,7 @@
 	typeReceiver := map[string]string{}
 	f.walk(func(n ast.Node) bool {
 		fn, ok := n.(*ast.FuncDecl)
-		if !ok || fn.Recv == nil {
+		if !ok || fn.Recv == nil || len(fn.Recv.List) == 0 {
 			return true
 		}
 		names := fn.Recv.List[0].Names
diff --git a/testdata/broken.go b/testdata/broken.go
new file mode 100644
index 0000000..6543775
--- /dev/null
+++ b/testdata/broken.go
@@ -0,0 +1,9 @@
+// Test of code that is malformed, but accepted by go/parser.
+// See https://golang.org/issue/11271 for discussion.
+// OK
+
+// Package pkg ...
+package pkg
+
+// Foo is a method with a missing receiver.
+func () Foo() {}