Subject: defmacro and define-macros still remain in guile's sources

From: Stefan Israelsson Tampe <[email-masked]>
Date: Tue, 10 Sep 2013 23:01:01 +0200

Hi,

Prompted with issues caused by the old and-let* behavor due to beeing
defined with a defmacro I scaned guiles sources for similar problems
that we should clean up (This is a good newbie exercise) The findings
that need to be cleared are,

DEFINE-MACRO CALL SITES:
========================
module/srfi/srfi-4.scm:
(define-macro (define-bytevector-type tag infix size) ...)

module/srfi/srfi-69.scm:
(define-macro (hashx-invoke hashx-proc ht-var . args) ...)
(define-macro (with-hashx-values bindings ht-var . body-forms) ...)

module/srfi/srfi-4/gnu.scm:
(define-macro (define-bytevector-type tag infix size) ...)
(define-macro (define-any->vector . tags) ...)

module/system/base/syntax.scm:
(define-macro (define-type name . rest)         ...)
(define-macro (define-record name-form . slots) ...)
(define-macro (define-record/keywords name-form . slots) ...)
(define-macro (transform-record type-and-common record . clauses) ...)

module/system/base/language.scm:
(define-macro (define-language name . spec) ...)

module/system/base/lalr.upstream.scm:
THIS IS A TRICKY ONE; UPSTREAM IS USING DEFINE_MACRO

;; -- Guile
 (guile
  (use-modules (ice-9 pretty-print))
  (use-modules (srfi srfi-9))

  (define pprint pretty-print)
  (define lalr-keyword? symbol?)
  (define-macro (BITS-PER-WORD) 30)
  (define-macro (logical-or x . y) `(logior ,x ,@y))
  (define-macro (lalr-error msg obj) `(error ,msg ,obj)))

(define-macro (lalr-parser . arguments) ...)

module/statprof.scm:
(define-macro (accumulate-time stop-time) ...)
(define-macro (with-statprof . args) ...)

module/oop/goops.scm:
(define-macro (class supers . slots) ...)
(define-macro (define-generic name) ...)
(define-macro (define-extended-generic name val) ...)
(define-macro (define-extended-generics names . args) ...)
(define-macro (define-standard-accessor-method form . body) ...)

module/oop/goops/save.scm:
(define-macro (readable exp) ...)
(define-macro (write-component object patcher file env) ...)
(define-macro (restore class slots . exps) ...)

module/oop/goops/accessors.scm:
(define-macro (define-class-with-accessors name supers . slots) ...)
(define-macro (define-class-with-accessors-keywords name supers
. slots) ...)

module/texinfo/plain-text.scm:
(define-macro (with-indent n . body) ...)
(define-macro (with-itemizer itemizer . body) ...)

module/ice-9/i18n.scm:
(define-macro (define-vector-langinfo-mapping name nl-items) ...)
(define-macro (define-simple-langinfo-mapping name item default) ...)
(define-macro (define-monetary-langinfo-mapping name local-item intl-item
                                                default/local
						default/intl) ...)

module/ice-9/time.scm:
(define-macro (time exp) ...)

module/ice-9/serialize.scm:
(define-macro (serialize . forms) ...)
(define-macro (parallelize . forms) ...)

module/ice-9/session.scm:
(define-macro (help . exp) ...)

module/ice-9/deprecated.scm:
(define-macro (eval-case . clauses) ...)

module/scripts/snarf-check-and-output-texi.scm:
(define-macro (when cond . body)
  `(if ,cond (begin ,@body)))

(define-macro (unless cond . body)
  `(if (not ,cond) (begin ,@body)))

module/sxml/ssax/input-parse.scm:
(define-macro (define-opt bindings body . body-rest) ...)

module/sxml/transform.scm:
(define-macro (let*-values bindings . body) ...)

TEH FOLLOWING IS UPSTREAM CODE TRICKY WHAT TO DO HERE
module/sxml/upstream/SXPath-old.scm:;
module/sxml/upstream/SSAX.scm:;(define-macro
module/sxml/upstream/SSAX.scm:;

module/language/tree-il/primitives.scm:(define-macro
;;; I actually did spend about 10 minutes trying to redo this with
;;; syntax-rules. Patches appreciated.
;;;
(define-macro (define-primitive-expander sym . clauses)

module/language/ecmascript/base.scm:
(define-macro (call/this this f . args)
  `(with-fluid* *this* ,this (lambda () (,f . ,args))))
(define-macro (lambda/this formals . body)
  `(lambda ,formals (let ((this (fluid-ref *this*))) . ,body)))
(define-macro (define-js-method object name-and-args . body)
  `(pput ,object ',(car name-and-args) (lambda/this ,(cdr
  name-and-args) . ,body)))

module/language/assembly/disassemble.scm:
(define-macro (unless test . body)
  `(if (not ,test) (begin ,@body)))

module/rnrs/bytevectors.scm:
(define-macro (endianness sym) ...)

DEFMACRO CALL SITES
===================
module/ice-9/calling.scm:
(defmacro with-excursion-function (vars proc)
  `(,proc ,(excursion-function-syntax vars)))
(defmacro with-getter-and-setter (vars proc)
  `(,proc ,@ (getter-and-setter-syntax vars)))
(defmacro with-getter (vars proc)
  `(,proc ,(car (getter-and-setter-syntax vars))))
defmacro with-delegating-getter-and-setter (vars get-delegate
set-delegate proc) ...)
(defmacro with-excursion-getter-and-setter (vars proc)
  `(,proc  ,(excursion-function-syntax vars)
	  ,@ (getter-and-setter-syntax vars)))
(defmacro with-configuration-getter-and-setter (vars-etc proc) ...)
(defmacro with-delegating-configuration-getter-and-setter (vars-etc
delegate-get delegate-set proc) ...)
(defmacro let-with-configuration-getter-and-setter (vars-etc proc) ...)

module/ice-9/expect.scm:
(defmacro expect clauses ...)
(defmacro expect-strings clauses ...)

/Regards Stefan