akeep / nanopass-framework-racket

Racket port of the nanopass-framework
MIT License
34 stars 9 forks source link

Internal error from forgotten unquote #16

Closed soegaard closed 9 years ago

soegaard commented 9 years ago

The following program provokes an internal error, rather than signaling one the user program.

lang nanopass

(define-language L (terminals (symbol (x))) (term (t) x))

(define x 42)

(define-pass pass1 : L (t) -> * () (term : term (t) -> * () [x "it is a symbol"]))

The error is:

Dropbox/GitHub/nanopass-framework-racket/private/pass.rkt:319:33: nano-meta-fields: contract violation expected: nano-meta? given: '#s(nano-quote #<syntax (quote x)>) in: the 1st argument of (-> nano-meta? (listof (or/c nano-dots? nano-quote? nano-unquote? nano-cata? nano-meta? (listof any/c)))) contract from:

/nanopass-framework-racket/private/records.rkt blaming: /nanopass-framework-racket/private/pass.rkt (assuming the contract is correct) at: /nanopass-framework-racket/private/records.rkt:44.5
akeep commented 9 years ago

Fixed by issue #9