javascript/expander-internal.ss
#lang scheme/base

(require "../base.ss")

; (struct (syntax -> syntax)
;         (syntax -> syntax)
;         syntax-certifier)
(define-struct javascript-expander 
  (js-xform expr-xform cert)
  #:transparent
  #:property prop:procedure 
  (struct-field-index expr-xform))

; Provide statements -----------------------------

; contract
(define syntax-certifier/c
  (->* (syntax?) (any/c (or/c procedure? false/c)) syntax?))

(provide/contract
 [struct javascript-expander ([js-xform   (-> syntax? syntax?)]
                              [expr-xform (-> syntax? syntax?)]
                              [cert       syntax-certifier/c])])