diff options
author | Ryo Nihei <nihei.dev@gmail.com> | 2021-07-17 13:41:44 +0900 |
---|---|---|
committer | Ryo Nihei <nihei.dev@gmail.com> | 2021-07-17 13:41:44 +0900 |
commit | 2d3fed9f2992a11ab76601484a735d5500d84dba (patch) | |
tree | 643e1995e7b012af1fc0ff48e3bcb1b0ec95489b /cmd/vartan/parse.go | |
parent | Add a line number to token error messages (diff) | |
download | cotia-2d3fed9f2992a11ab76601484a735d5500d84dba.tar.gz cotia-2d3fed9f2992a11ab76601484a735d5500d84dba.tar.xz |
Improve syntax error messages
- Add a source file name to error messages.
- Add a line that an error occurred at to error messages.
Diffstat (limited to '')
-rw-r--r-- | cmd/vartan/parse.go | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/cmd/vartan/parse.go b/cmd/vartan/parse.go index 8089c5e..ef22ff3 100644 --- a/cmd/vartan/parse.go +++ b/cmd/vartan/parse.go @@ -28,6 +28,24 @@ func init() { } func runParse(cmd *cobra.Command, args []string) (retErr error) { + defer func() { + v := recover() + if v != nil { + err, ok := v.(error) + if !ok { + retErr = fmt.Errorf("an unexpected error occurred: %v\n", v) + fmt.Fprintln(os.Stderr, retErr) + return + } + + retErr = err + } + + if retErr != nil { + fmt.Fprintln(os.Stderr, retErr) + } + }() + cgram, err := readCompiledGrammar(args[0]) if err != nil { return fmt.Errorf("Cannot read a compiled grammar: %w", err) |