main: small refactor in error printing

Use a type switch instead of an if/else chain. This results in much more
readable code.
This commit is contained in:
Ayke van Laethem
2019-06-29 19:04:35 +02:00
committed by Ron Evans
parent 4ecd478d82
commit a328bbdff3
+11 -10
View File
@@ -558,23 +558,24 @@ func usage() {
func handleCompilerError(err error) { func handleCompilerError(err error) {
if err != nil { if err != nil {
if errUnsupported, ok := err.(*interp.Unsupported); ok { switch err := err.(type) {
case *interp.Unsupported:
// hit an unknown/unsupported instruction // hit an unknown/unsupported instruction
fmt.Fprintln(os.Stderr, "unsupported instruction during init evaluation:") fmt.Fprintln(os.Stderr, "unsupported instruction during init evaluation:")
errUnsupported.Inst.Dump() err.Inst.Dump()
fmt.Fprintln(os.Stderr) fmt.Fprintln(os.Stderr)
} else if errCompiler, ok := err.(types.Error); ok { case types.Error:
fmt.Fprintln(os.Stderr, errCompiler) fmt.Fprintln(os.Stderr, err)
} else if errLoader, ok := err.(loader.Errors); ok { case loader.Errors:
fmt.Fprintln(os.Stderr, "#", errLoader.Pkg.ImportPath) fmt.Fprintln(os.Stderr, "#", err.Pkg.ImportPath)
for _, err := range errLoader.Errs { for _, err := range err.Errs {
fmt.Fprintln(os.Stderr, err) fmt.Fprintln(os.Stderr, err)
} }
} else if errMulti, ok := err.(*multiError); ok { case *multiError:
for _, err := range errMulti.Errs { for _, err := range err.Errs {
fmt.Fprintln(os.Stderr, err) fmt.Fprintln(os.Stderr, err)
} }
} else { default:
fmt.Fprintln(os.Stderr, "error:", err) fmt.Fprintln(os.Stderr, "error:", err)
} }
os.Exit(1) os.Exit(1)