#lang racket/base
;; Common syntax classes.

(provide (for-syntax assertions
                     name
                     snapshot))

(require racket/set)

(require (for-syntax racket/base))
(require (for-syntax syntax/parse))
(require (for-syntax syntax/srcloc))

(begin-for-syntax
  (define-splicing-syntax-class assertions
    (pattern (~seq #:assertions [exprs ...]))
    (pattern (~seq) #:attr (exprs 1) '()))

  (define-splicing-syntax-class name
    (pattern (~seq #:name N))
    (pattern (~seq) #:attr N #'#f))

  (define-splicing-syntax-class snapshot
    (pattern (~seq #:snapshot) #:attr dynamic? #'#f)
    (pattern (~seq) #:attr dynamic? #'#t)))
