Merge remote-tracking branch 'origin/stable-2.0'
authorAndy Wingo <wingo@pobox.com>
Sun, 25 Mar 2012 22:56:29 +0000 (00:56 +0200)
committerAndy Wingo <wingo@pobox.com>
Sun, 25 Mar 2012 22:56:29 +0000 (00:56 +0200)
Conflicts:
libguile/procprop.c
libguile/smob.c
libguile/smob.h
libguile/vm.c
module/language/tree-il/primitives.scm

1  2 
module/language/tree-il/primitives.scm
test-suite/tests/tree-il.test

     (lambda (x)
       (record-case x
         ((<toplevel-ref> src name)
 -        (and=> (hashq-ref *interesting-primitive-vars*
 -                          (module-variable mod name))
 +        (and=> (and (not (hashq-ref local-definitions name))
 +                    (hashq-ref *interesting-primitive-vars*
 +                               (module-variable mod name)))
                 (lambda (name) (make-primitive-ref src name))))
         ((<module-ref> src mod name public?)
-         (let ((m (and (not public?) (resolve-module mod))))
-           (and m 
-                (and=> (hashq-ref *interesting-primitive-vars*
-                                  (module-variable m name))
-                       (lambda (name) (make-primitive-ref src name))))))
 +        ;; for the moment, we're disabling primitive resolution for
 +        ;; public refs because resolve-interface can raise errors.
+         (and=> (and=> (resolve-module mod)
+                       (if public?
+                           module-public-interface
+                           identity))
+                (lambda (m)
+                  (and=> (hashq-ref *interesting-primitive-vars*
+                                    (module-variable m name))
+                         (lambda (name)
+                           (make-primitive-ref src name))))))
 +       ((<call> src proc args)
 +        (and (primitive-ref? proc)
 +             (make-primcall src (primitive-ref-name proc) args)))
         (else #f)))
     x))
  
Simple merge