aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/scheme/base/50-records.csc3
1 files changed, 2 insertions, 1 deletions
diff --git a/lib/scheme/base/50-records.csc b/lib/scheme/base/50-records.csc
index 2830b3c..e0954d3 100644
--- a/lib/scheme/base/50-records.csc
+++ b/lib/scheme/base/50-records.csc
@@ -80,7 +80,8 @@
(let ((id *next-type-id*))
(set! *next-type-id* (call-builtin + 1 *next-type-id*))))
(define (pred r)
- (call-builtin eq? type-id (call-builtin peek r 0)))
+ (and (call-builtin eq? 0 (call-builtin typeof r))
+ (call-builtin eq? type-id (call-builtin peek r 0))))
(define (constructor field ...)
(define r (call-builtin alloc (macro-length (field ...))))
(call-builtin poke type-id r 0)