Ignore invalid types as keys in context.WithValue

Signed-off-by: Joe Tsai <joetsai@google.com>
diff --git a/lint.go b/lint.go
index ccc5cff..6b6183f 100644
--- a/lint.go
+++ b/lint.go
@@ -1414,7 +1414,7 @@
 	}
 	key := f.pkg.typesInfo.Types[x.Args[1]]
 
-	if _, ok := key.Type.(*types.Basic); ok {
+	if ktyp, ok := key.Type.(*types.Basic); ok && ktyp.Kind() != types.Invalid {
 		f.errorf(x, 1.0, category("context"), fmt.Sprintf("should not use basic type %s as key in context.WithValue", key.Type))
 	}
 }
diff --git a/testdata/contextkeytypes.go b/testdata/contextkeytypes.go
index 6433e62..68dc36a 100644
--- a/testdata/contextkeytypes.go
+++ b/testdata/contextkeytypes.go
@@ -34,4 +34,5 @@
 	context.WithValue(c, complex128(1i), "bar") // MATCH /should not use basic type complex128 as key in context.WithValue/
 	context.WithValue(c, ctxKey{}, "bar")       // ok
 	context.WithValue(c, &ctxKey{}, "bar")      // ok
+	context.WithValue(c, invalid{}, "bar")      // ok
 }