--- /dev/null
+// run
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+       "fmt"
+       "strings"
+)
+
+type ET struct{}
+
+func (*ET) Error() string { return "err" }
+
+func main() {
+       check("false", fmt.Sprintf("(*ET)(nil) == error(nil): %v", (*ET)(nil) == error(nil)))
+       check("true", fmt.Sprintf("(*ET)(nil) != error(nil): %v", (*ET)(nil) != error(nil)))
+
+       nilET := (*ET)(nil)
+       nilError := error(nil)
+
+       check("false", fmt.Sprintf("nilET == nilError: %v", nilET == nilError))
+       check("true", fmt.Sprintf("nilET != nilError: %v", nilET != nilError))
+}
+
+func check(want, gotfull string) {
+       got := gotfull[strings.Index(gotfull, ": ")+len(": "):]
+       if got != want {
+               panic("want " + want + " got " + got + " from " + gotfull)
+       }
+}