console, internal/jsre: colorize JavaScript exceptions too

This commit is contained in:
Péter Szilágyi
2016-05-11 17:28:29 +03:00
parent ffaf58f0a9
commit 14ae5708d6
4 changed files with 37 additions and 12 deletions

View File

@ -182,7 +182,11 @@ func (c *Console) init(preload []string) error {
// Preload any JavaScript files before starting the console
for _, path := range preload {
if err := c.jsre.Exec(path); err != nil {
return fmt.Errorf("%s: %v", path, jsErrorString(err))
failure := err.Error()
if ottoErr, ok := err.(*otto.Error); ok {
failure = ottoErr.String()
}
return fmt.Errorf("%s: %v", path, failure)
}
}
// Configure the console's input prompter for scrollback and tab completion
@ -269,7 +273,6 @@ func (c *Console) Evaluate(statement string) error {
}
}()
if err := c.jsre.Evaluate(statement, c.printer); err != nil {
fmt.Fprintf(c.printer, "%v\n", jsErrorString(err))
return err
}
return nil
@ -359,11 +362,3 @@ func (c *Console) Stop(graceful bool) error {
c.jsre.Stop(graceful)
return nil
}
// jsErrorString adds a backtrace to errors generated by otto.
func jsErrorString(err error) string {
if ottoErr, ok := err.(*otto.Error); ok {
return ottoErr.String()
}
return err.Error()
}