racket / typed-racket

Typed Racket
Other
525 stars 105 forks source link

The no-check TR language's bindings are not identical to TR in the transformer environment #595

Open david-christiansen opened 7 years ago

david-christiansen commented 7 years ago

What version of Racket are you using?

$ racket -v
Welcome to Racket v6.10.

What program did you run?

#lang racket

(module ok typed/racket
  (begin-for-syntax
    #'yep))

(module not-ok typed/racket/no-check
  (begin-for-syntax
    #'yep))

(module ok2 typed/racket/no-check
  (require (for-syntax racket/base))
  (begin-for-syntax
    #'yep))

What should have happened?

According to the documentation,

They provide the same bindings and syntax as typed/racket and typed/racket/base, but do no type checking.

where "They" refers to the no-check languages. Thus, the programs should all mean the same thing, and the for-syntax require of racket/base in the module ok2 should be redundant rather than necessary.

If you got an error message, please include it here.

; /home/davidc/tmp/busted.rkt:10:4: syntax: unbound identifier in the transformer environment;
;  also, no #%app syntax transformer is bound
;   at: syntax
;   in: (syntax yep)
samth commented 7 years ago

The issue here is just that typed/racket/no-check should (provide (for-syntax racket/base)), right?

david-christiansen commented 7 years ago

I think so, assuming that that's what typed/racket provides for syntax.