From 7b183d1766471e53676fdfa7405ef0ff40229720 Mon Sep 17 00:00:00 2001 From: Robert Griesemer Date: Fri, 8 Nov 2013 12:52:57 -0800 Subject: [PATCH] go.tools/go/types, cmd/gotype: fix early bailout Clients must have chance to look at panics they are raising. R=adonovan CC=golang-dev https://golang.org/cl/23820043 --- cmd/gotype/gotype.go | 6 ++++-- go/types/check.go | 10 ++-------- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/cmd/gotype/gotype.go b/cmd/gotype/gotype.go index 7132ca94..789d8223 100644 --- a/cmd/gotype/gotype.go +++ b/cmd/gotype/gotype.go @@ -196,10 +196,12 @@ func checkPkgFiles(files []*ast.File) { } defer func() { - switch err := recover().(type) { + switch p := recover().(type) { case nil, bailout: + // normal return or early exit default: - panic(err) + // re-panic + panic(p) } }() diff --git a/go/types/check.go b/go/types/check.go index 9bc7a471..39c5811d 100644 --- a/go/types/check.go +++ b/go/types/check.go @@ -7,7 +7,6 @@ package types import ( - "fmt" "go/ast" "go/token" "path" @@ -173,13 +172,8 @@ func (check *checker) handleBailout(err *error) { // normal return or early exit *err = check.firstErr default: - // unexpected panic: don't crash clients - // TODO(gri) add a test case for this scenario - *err = fmt.Errorf("types internal error: %v", p) - if debug { - check.dump("INTERNAL PANIC: %v", p) - panic(p) - } + // re-panic + panic(p) } }