Closed
Description
What version of Go are you using (go version
)?
$ go version go version go1.12.6 darwin/amd64
Does this issue reproduce with the latest release?
Yes.
What operating system and processor architecture are you using (go env
)?
go env
Output
$ go env GOARCH="amd64" GOBIN="" GOCACHE="/Users/bartek/Library/Caches/go-build" GOEXE="" GOFLAGS="" GOHOSTARCH="amd64" GOHOSTOS="darwin" GOOS="darwin" GOPATH="/Users/bartek/gocode" GOPROXY="" GORACE="" GOROOT="/Users/bartek/Downloads/go" GOTMPDIR="" GOTOOLDIR="/Users/bartek/Downloads/go/pkg/tool/darwin_amd64" GCCGO="gccgo" CC="clang" CXX="clang++" CGO_ENABLED="1" GOMOD="" CGO_CFLAGS="-g -O2" CGO_CPPFLAGS="" CGO_CXXFLAGS="-g -O2" CGO_FFLAGS="-g -O2" CGO_LDFLAGS="-g -O2" PKG_CONFIG="pkg-config" GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/zv/kh35w1j12wn5_4md98dl9zfr0000gn/T/go-build400417808=/tmp/go-build -gno-record-gcc-switches -fno-common"
What did you do?
https://play.golang.org/p/da7SYpb02ed
A switch
statement on a custom int32
type with negative values behaves differently in two consecutive calls to the same function. What is strange is that each of the following changes make this application work correctly:
- Changing
BucketEntryTypeMetaentry
to a positive number. - Commenting one or more empty
case
clauses. - Adding
fmt.Println("ok")
betweenentry.MustMetaEntry()
lines (lines 40 and 41). - Adding
fmt.Println("ok")
anywhere insideMustMetaEntry()
. - Removing
MetaEntry
onBucketEntry
.
What did you expect to see?
No output:
What did you see instead?
panic: oh no
goroutine 1 [running]:
main.BucketEntry.MustMetaEntry(...)
/Users/bartek/gocode/src/github.com/stellar/go/custom_type.go:31
main.main()
/Users/bartek/gocode/src/github.com/stellar/go/custom_type.go:41 +0x81
exit status 2
Please note that function call in line 40 does not panic.