main: small refactor in error printing
Use a type switch instead of an if/else chain. This results in much more readable code.
Этот коммит содержится в:
родитель
4ecd478d82
коммит
a328bbdff3
1 изменённых файлов: 11 добавлений и 10 удалений
21
main.go
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)
|
||||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче