Skip to content

Commit 43d2d61

Browse files
aiskncw
authored andcommitted
py: fix exception repr
1 parent 53b7b8e commit 43d2d61

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

py/exception.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -368,9 +368,16 @@ func (e *Exception) M__str__() (Object, error) {
368368
}
369369

370370
func (e *Exception) M__repr__() (Object, error) {
371-
msg := e.Args.(Tuple)[0].(String)
372371
typ := e.Base.Name
373-
return String(fmt.Sprintf("%s(%q)", typ, string(msg))), nil
372+
args := e.Args.(Tuple)
373+
if len(args) == 0 {
374+
return String(fmt.Sprintf("%s()", typ)), nil
375+
}
376+
msg, err := args.M__repr__()
377+
if err != nil {
378+
return nil, err
379+
}
380+
return String(fmt.Sprintf("%s%s", typ, string(msg.(String)))), nil
374381
}
375382

376383
// Check Interfaces

vm/tests/exceptions.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,4 +165,10 @@
165165
ok = True
166166
assert ok, "ValueError not raised"
167167

168+
doc = "exception repr"
169+
repr(ValueError()) == "ValueError()"
170+
repr(ValueError(1)) == "ValueError(1)"
171+
repr(ValueError(1, 2, 3)) == "ValueError(1, 2, 3)"
172+
repr(ValueError("failed")) == 'ValueError("failed")'
173+
168174
doc = "finished"

0 commit comments

Comments
 (0)