aboutsummaryrefslogtreecommitdiff
path: root/module/c/cpp-environment.scm
diff options
context:
space:
mode:
Diffstat (limited to 'module/c/cpp-environment.scm')
-rw-r--r--module/c/cpp-environment.scm20
1 files changed, 11 insertions, 9 deletions
diff --git a/module/c/cpp-environment.scm b/module/c/cpp-environment.scm
index fa69e1fc..2ad60b56 100644
--- a/module/c/cpp-environment.scm
+++ b/module/c/cpp-environment.scm
@@ -53,15 +53,17 @@
(identifier x))
-(define (macro-body macro)
- (define body-proc
- (cond ((obj:object-like-macro? macro) obj:body)
- ((fun:function-like-macro? macro) fun:body)
- ((int:internal-macro? macro) int:body)
- (else (scm-error 'wrong-type-arg "macro-body"
- "Not a macro: ~s"
- (list macro) #f))))
- (body-proc macro))
+(define (macro-body-proc macro)
+ (cond ((obj:object-like-macro? macro) obj:body)
+ ((fun:function-like-macro? macro) fun:body)
+ ((int:internal-macro? macro) int:body)
+ (else (scm-error 'wrong-type-arg "macro-body"
+ "Not a macro: ~s"
+ (list macro) #f))))
+
+(define macro-body
+ (case-lambda ((macro) ((macro-body-proc macro) macro))
+ ((macro value) ((macro-body-proc macro) macro value))))
(define macro-identifier-list fun:identifier-list)
(define macro-variadic? fun:variadic?)