summaryrefslogtreecommitdiff
path: root/modules/language/python/try.scm
diff options
context:
space:
mode:
Diffstat (limited to 'modules/language/python/try.scm')
-rw-r--r--modules/language/python/try.scm26
1 files changed, 15 insertions, 11 deletions
diff --git a/modules/language/python/try.scm b/modules/language/python/try.scm
index 9778f3b..a36263b 100644
--- a/modules/language/python/try.scm
+++ b/modules/language/python/try.scm
@@ -11,17 +11,21 @@
(define-syntax-rule (aif it p x y) (let ((it p)) (if it x y)))
(define-inlinable (standard-check class obj l)
- (if (struct? obj)
- (if (is-a? obj <p>)
- (if (is-a? class <p>)
- (is-a? obj (ref class '__goops__))
- (is-a? obj class))
- (if (is-a? obj <object>)
- (is-a? obj class)
- (eq? obj class)))
- (if (and (procedure? class) (not (pyclass? class)))
- (apply class obj l)
- (eq? class obj))))
+ (cond
+ ((eq? class #t)
+ #t)
+ ((struct? obj)
+ (if (is-a? obj <p>)
+ (if (is-a? class <p>)
+ (is-a? obj (ref class '__goops__))
+ (is-a? obj class))
+ (if (is-a? obj <object>)
+ (is-a? obj class)
+ (eq? obj class))))
+ ((and (procedure? class) (not (pyclass? class)))
+ (apply class obj l))
+ (else
+ (eq? class obj))))
(define (check class obj l)