diff options
author | Andy Wingo <wingo@pobox.com> | 2009-11-28 01:19:31 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2009-12-01 21:00:26 +0100 |
commit | 83c76550024c4a96c06cb75d40ab0ba122a0a57c (patch) | |
tree | 495c6429a3ad37f0937e1901eb4082e9d08d28ab | |
parent | c58b8c5aed8884f044e7c3af116e649e7e855381 (diff) | |
download | guile-83c76550024c4a96c06cb75d40ab0ba122a0a57c.tar.gz |
goops moving away from evaluator opcodes, and a primitive compilation fix
* module/oop/goops.scm (@slot-ref, @slot-set!): Define "primitives" for
these. Probably should do something more general, though, allowing
@struct-ref.
* module/language/tree-il/primitives.scm (add-interesting-primitive!):
Error if the primitive isn't bound.
-rw-r--r-- | module/language/tree-il/primitives.scm | 3 | ||||
-rw-r--r-- | module/oop/goops.scm | 4 |
2 files changed, 6 insertions, 1 deletions
diff --git a/module/language/tree-il/primitives.scm b/module/language/tree-il/primitives.scm index 531a14a4b..50a002da6 100644 --- a/module/language/tree-il/primitives.scm +++ b/module/language/tree-il/primitives.scm @@ -79,7 +79,8 @@ (define (add-interesting-primitive! name) (hashq-set! *interesting-primitive-vars* - (module-variable (current-module) name) + (or (module-variable (current-module) name) + (error "unbound interesting primitive" name)) name)) (define *interesting-primitive-vars* (make-hash-table)) diff --git a/module/oop/goops.scm b/module/oop/goops.scm index 2e96e0b03..bf13e3830 100644 --- a/module/oop/goops.scm +++ b/module/oop/goops.scm @@ -84,6 +84,10 @@ (eval-when (eval load compile) (use-modules ((language tree-il primitives) :select (add-interesting-primitive!))) (add-interesting-primitive! 'class-of) + (define (@slot-ref o n) + (struct-ref o n)) + (define (@slot-set! o n v) + (struct-set! o n v)) (add-interesting-primitive! '@slot-ref) (add-interesting-primitive! '@slot-set!)) |