~ chicken-core (chicken-5) 6913ac9e4176743156da313ca72a5a7835682b29
commit 6913ac9e4176743156da313ca72a5a7835682b29 Author: Evan Hanson <evhan@foldling.org> AuthorDate: Mon Apr 4 20:31:21 2016 +1200 Commit: Evan Hanson <evhan@foldling.org> CommitDate: Mon Apr 4 20:31:21 2016 +1200 Remove define-macro style define-syntax in normal syntax definitions As with 5d4f12e but for "normal" define-syntax forms (i.e. not those in a sequence of internal definitions). diff --git a/NEWS b/NEWS index 018145bb..9b813ba5 100644 --- a/NEWS +++ b/NEWS @@ -31,8 +31,8 @@ - Added support for list-style library names. - Syntax expander - - Removed support for (define-syntax (foo e r c) ...) inside lambdas, - which was undocumented and not officially supported anyway. + - Removed support for (define-syntax (foo e r c) ...), which was + undocumented and not officially supported anyway. 4.10.2 diff --git a/expand.scm b/expand.scm index 18e3599c..88a0798f 100644 --- a/expand.scm +++ b/expand.scm @@ -1056,26 +1056,14 @@ '() (##sys#er-transformer (lambda (form r c) + (##sys#check-syntax 'define-syntax form '(_ symbol _)) (let ((head (cadr form)) - (body (cddr form)) ) - (cond ((not (pair? head)) - (##sys#check-syntax 'define-syntax head 'symbol) - (##sys#check-syntax 'define-syntax body '#(_ 1)) - (let ((name (or (getp head '##core#macro-alias) head))) - (##sys#register-export name (##sys#current-module))) - (when (c (r 'define-syntax) head) - (chicken.expand#defjam-error form)) - `(##core#define-syntax ,head ,(car body))) - (else ; DEPRECATED - (##sys#check-syntax 'define-syntax head '(_ . lambda-list)) - (##sys#check-syntax 'define-syntax body '#(_ 1)) - (when (eq? (car form) (car head)) - (##sys#syntax-error-hook - "redefinition of `define-syntax' not allowed in syntax-definition" - form)) - `(##core#define-syntax - ,(car head) - (##sys#er-transformer (##core#lambda ,(cdr head) ,@body)))))))))) + (body (caddr form))) + (let ((name (or (getp head '##core#macro-alias) head))) + (##sys#register-export name (##sys#current-module))) + (when (c (r 'define-syntax) head) + (chicken.expand#defjam-error form)) + `(##core#define-syntax ,head ,body)))))) (define (check-for-multiple-bindings bindings form loc) ;; assumes correct syntaxTrap