Merge commit '9b0975f1dc41ddd10d81fb5b0965b9e9a54ef37a'
authorAndy Wingo <wingo@pobox.com>
Mon, 30 Jan 2012 17:25:07 +0000 (18:25 +0100)
committerAndy Wingo <wingo@pobox.com>
Mon, 30 Jan 2012 17:25:07 +0000 (18:25 +0100)
Conflicts:
libguile/foreign.c
module/ice-9/psyntax-pp.scm
module/ice-9/psyntax.scm

13 files changed:
1  2 
.gitignore
doc/ref/srfi-modules.texi
doc/ref/vm.texi
libguile/filesys.c
libguile/fluids.c
libguile/foreign.c
libguile/print.c
libguile/strings.c
libguile/threads.c
libguile/values.c
m4/gnulib-cache.m4
module/ice-9/boot-9.scm
module/ice-9/psyntax.scm

diff --cc .gitignore
Simple merge
Simple merge
diff --cc doc/ref/vm.texi
Simple merge
Simple merge
Simple merge
@@@ -266,8 -269,9 +266,9 @@@ SCM_DEFINE (scm_pointer_to_bytevector, 
  
    blen = scm_to_size_t (len);
  
-   ret = scm_c_take_typed_bytevector (ptr + boffset, blen, btype, pointer);
+   ret = scm_c_take_typed_bytevector ((signed char *) ptr + boffset,
 -                                   blen, btype);
 -  register_weak_reference (ret, pointer);
++                                   blen, btype, pointer);
 +
    return ret;
  }
  #undef FUNC_NAME
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
      (set! syntax-source
            (lambda (x) (source-annotation x)))
  
 -                                    (syntax-object-module id)))
+     (set! syntax-local-binding
+           (lambda (id)
+             (arg-check nonsymbol-id? id 'syntax-local-value)
+             (with-transformer-environment
+              (lambda (e r w s rib mod)
+                (define (strip-anti-mark w)
+                  (let ((ms (wrap-marks w)) (s (wrap-subst w)))
+                    (if (and (pair? ms) (eq? (car ms) the-anti-mark))
+                        ;; output is from original text
+                        (make-wrap (cdr ms) (if rib (cons rib (cdr s)) (cdr s)))
+                        ;; output introduced by macro
+                        (make-wrap ms (if rib (cons rib s) s)))))
+                (call-with-values (lambda ()
+                                    (resolve-identifier
+                                     (syntax-object-expression id)
+                                     (strip-anti-mark (syntax-object-wrap id))
+                                     r
++                                    (syntax-object-module id)
++                                    ;; FIXME: come up with a better policy for
++                                    ;; resolve-syntax-parameters
++                                    #t))
+                  (lambda (type value mod)
+                    (case type
+                      ((lexical) (values 'lexical value))
+                      ((macro) (values 'macro value))
+                      ((syntax) (values 'pattern-variable value))
+                      ((displaced-lexical) (values 'displaced-lexical #f))
+                      ((global) (values 'global (cons value mod)))
+                      (else (values 'other #f)))))))))
      (set! generate-temporaries
            (lambda (ls)
              (arg-check list? ls 'generate-temporaries)