~ chicken-core (chicken-5) /tests/compiler-syntax-tests.scm
Trap1(define (foo) 1)23(assert (= 1 (foo)))45(define-compiler-syntax foo6 (syntax-rules ()7 ((_ x) 2) ) )89(assert (= 2 (foo 42)))10(assert (= 1 (foo)))1112(let-compiler-syntax ((foo (syntax-rules () ((_ x) 3))))13 (assert (= 3 (foo 42))))1415(assert (= 2 (foo 42)))1617(module m1 (bar)18 (import (prefix scheme s:) (chicken syntax))19 (define-compiler-syntax s:+20 (syntax-rules ()21 ((_ x y) (s:- x y))))22 (define-compiler-syntax bar23 (syntax-rules ()24 ((_ x y) "oink!")))25 (s:define (bar x) (s:+ x 1)) )2627(module m2 ()28 (import scheme (chicken base) (prefix m1 m-))29 (print (m-bar 10))30 (assert (= 9 (m-bar 10)))31 (print (+ 4 3)))3233(define (goo x) `(goo ,x))3435(assert (eq? 'goo (car (goo 1))))3637(define-compiler-syntax goo38 (syntax-rules ()39 ((_ x) `(cs-goo ,x))))4041(print (goo 2))42(assert (eq? 'cs-goo (car (goo 2))))4344(define-compiler-syntax goo)4546(assert (eq? 'goo (car (goo 3))))4748(define-compiler-syntax goo49 (syntax-rules ()50 ((_ x) `(cs-goo2 ,x))))5152(let-compiler-syntax ((goo))53 (assert (eq? 'goo (car (goo 4)))))5455(assert (eq? 'cs-goo2 (car (goo 5))))5657(module bar (xxx)58 (import scheme (chicken syntax) (chicken base))59 (define (xxx) 'yyy) ; ineffective - suboptimal60 ;(assert (eq? 'yyy (xxx)))61 (define-compiler-syntax xxx62 (syntax-rules ()63 ((_) 'zzz)))64 (define-syntax alias65 (syntax-rules ()66 ((_ name x)67 (define-compiler-syntax name68 (syntax-rules ()69 ((_ . args) (x . args)))))))70 (alias pof +)71 (alias pif xxx)72 (assert (= 7 (pof 3 4)))73 (assert (eq? 'zzz (pif)))74 (print (xxx))75 (assert (eq? 'zzz (xxx))))7677;;; local to module7879(define (f1 x) x)8081(module m3 ()82(import scheme (chicken syntax))83(define-compiler-syntax f184 (syntax-rules () ((_ x) (list x))))85)8687(assert (= 2 (f1 2)))