main: small refactor in error printing

Use a type switch instead of an if/else chain. This results in much more
readable code.
Этот коммит содержится в:
Ayke van Laethem 2019-06-29 19:04:35 +02:00 коммит произвёл Ron Evans
родитель 4ecd478d82
коммит a328bbdff3

21
main.go
Просмотреть файл

@ -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)