diff --git a/pollen/core.rkt b/pollen/core.rkt index beed70f..b8e7f8d 100644 --- a/pollen/core.rkt +++ b/pollen/core.rkt @@ -20,7 +20,8 @@ ;; if `define-meta` is defined it will pop an error msg if the wrong number of args ;; even though this error will happen after macro expansion, when metas are extracted ;; empty string will merge with surroundings -(define+provide (define-meta k v) "") +(provide define-meta) +(define-syntax-rule (define-meta k v) (begin)) (define+provide current-metas (make-parameter #f)) diff --git a/pollen/private/ts.rktd b/pollen/private/ts.rktd index b4f930e..affe272 100644 --- a/pollen/private/ts.rktd +++ b/pollen/private/ts.rktd @@ -1 +1 @@ -1542295809 +1542696684 diff --git a/pollen/setup.rkt b/pollen/setup.rkt index 48b023c..3cbc6d2 100644 --- a/pollen/setup.rkt +++ b/pollen/setup.rkt @@ -132,4 +132,6 @@ (define-settable poly-targets '(html)) ; current target applied to multi-output source files (define+provide current-poly-target (make-parameter (car (poly-targets)))) -(define-settable index-pages '("index.html")) \ No newline at end of file +(define-settable index-pages '("index.html")) + +(define-settable allow-unbound-ids #true) \ No newline at end of file diff --git a/pollen/top.rkt b/pollen/top.rkt index cc703a6..c97a03d 100644 --- a/pollen/top.rkt +++ b/pollen/top.rkt @@ -1,11 +1,16 @@ #lang racket/base -(require (for-syntax racket/base) pollen/tag) +(require (for-syntax racket/base pollen/setup) pollen/tag) (provide def/c (rename-out (top~ #%top))) -(define-syntax-rule (top~ . ID) - (#%app make-default-tag-function 'ID)) +(define-syntax (top~ stx) + (syntax-case stx () + [(_ . ID) + (setup:allow-unbound-ids) + #'(#%app make-default-tag-function 'ID)] + [(_ . ID) + #'(def/c ID)])) (define-syntax (def/c stx) (syntax-case stx () - [(_ X) (identifier-binding #'X) #'X] - [(_ X) #'(#%top . X)])) \ No newline at end of file + [(_ ID) (identifier-binding #'ID) #'ID] + [(_ ID) #'(#%top . ID)])) \ No newline at end of file