https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100389
Bug ID: 100389 Summary: "invalid type conversion" error for string-based error type Product: gcc Version: 10.2.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: go Assignee: ian at airs dot com Reporter: ben.hutchings at essensium dot com CC: cmang at google dot com Target Milestone: --- Given the following source files: $ cat main.go package main import ( "foo" "os" ) func main() { if !foo.IsInUse(foo.Remove()) { os.Exit(1) } } $ cat src/foo/foo.go package foo const ( errVolumeInUse conflictError = "volume is in use" ) type conflictError string func (e conflictError) Error() string { return string(e) } func IsInUse(err error) bool { return isErr(err, errVolumeInUse) } func isErr(err error, expected error) bool { return err == expected } func Remove() error { return errVolumeInUse } gccgo (from Debian package version 10.2.1-6) reports: $ GOPATH=$PWD go build . # _/home/bwh/tmp/gotest ./src/foo/foo.go:22: error: invalid type conversion (type has no methods) ./src/foo/foo.go:14: error: invalid type conversion (type has no methods) Whereas gc (from Debian package version 1.15.9-1) builds these successfully.