From a328bbdff3035c31c1bd0b16618eabd4ab757b9e Mon Sep 17 00:00:00 2001 From: Ayke van Laethem Date: Sat, 29 Jun 2019 19:04:35 +0200 Subject: [PATCH] main: small refactor in error printing Use a type switch instead of an if/else chain. This results in much more readable code. --- main.go | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/main.go b/main.go index 3c331523..99d021d3 100644 --- a/main.go +++ b/main.go @@ -558,23 +558,24 @@ func usage() { func handleCompilerError(err error) { if err != nil { - if errUnsupported, ok := err.(*interp.Unsupported); ok { + switch err := err.(type) { + case *interp.Unsupported: // hit an unknown/unsupported instruction fmt.Fprintln(os.Stderr, "unsupported instruction during init evaluation:") - errUnsupported.Inst.Dump() + err.Inst.Dump() fmt.Fprintln(os.Stderr) - } else if errCompiler, ok := err.(types.Error); ok { - fmt.Fprintln(os.Stderr, errCompiler) - } else if errLoader, ok := err.(loader.Errors); ok { - fmt.Fprintln(os.Stderr, "#", errLoader.Pkg.ImportPath) - for _, err := range errLoader.Errs { + case types.Error: + fmt.Fprintln(os.Stderr, err) + case loader.Errors: + fmt.Fprintln(os.Stderr, "#", err.Pkg.ImportPath) + for _, err := range err.Errs { fmt.Fprintln(os.Stderr, err) } - } else if errMulti, ok := err.(*multiError); ok { - for _, err := range errMulti.Errs { + case *multiError: + for _, err := range err.Errs { fmt.Fprintln(os.Stderr, err) } - } else { + default: fmt.Fprintln(os.Stderr, "error:", err) } os.Exit(1)