> On Jun 24, 2016, at 1:15 PM, Alex Knauth <[email protected]> wrote: > > >> On Jun 24, 2016, at 1:13 PM, 'John Clements' via Racket Users >> <[email protected]> wrote: >> >> I was in the middle of editing a TR file, and I got this error: >> >> ../../racket/racket/share/pkgs/typed-racket-lib/typed-racket/utils/tc-utils.rkt:270:0: >> Internal Typechecker Error: contract-def-property: thunk called too early >> This should only be called after the type-checking pass has finished. >> while typechecking: >> here >> originally: >> here >> >> This was a totally transient error, and I solved it by continuing to edit >> the file, but I saved a copy in case anyone’s interested. I can file an >> (un-minimized) bug report, if desired. Anyone interested? >> >> John > > > What were you doing when this happened? Was this using cast? Was the > top-level involved? > > This error comes from the changes I made while fixing cast to protect > higher-order uses of casted values. > > What happens is, a `cast` expression generates a lifted definition to be > filled in later with a contract, and it also generates a casted-expr syntax > property that the type checker will look for later. > > When the type checker finds it, it finds the original type of the casted > expression, and puts it in a table so that the contract-generation pass can > look up that type later. Then the contract-generation pass calls a thunk that > looks up the type in the table, and generates a contract for it. If someone > tries to call the contract-generation code before type checking has finished, > that's a bug, and it triggers that error. > > I ask about the top-level because there's a `core-cast` form that triggers > this error if it's used at the top-level, but `cast` generates an > `#%expression` wrapper around that so that that doesn't happen. Asumu and I > thought we fixed it, and we tested it, but maybe we didn't test it thoroughly > enough? > > Anyway I would be interested in how you got this error.
Here’s a file that triggers this error. I haven’t made any attempt to minify it. You’ll have to install the ‘yaml’ package first. Compiling it with raco make typed-yaml.rkt signals this error: raco make /tmp/typed-yaml.rkt Internal Typechecker Error: contract-def-property: thunk called too early This should only be called after the type-checking pass has finished. while typechecking: here originally: here compilation context...: /tmp/typed-yaml.rkt context...: /Users/clements/racket/racket/share/pkgs/typed-racket-lib/typed-racket/utils/tc-utils.rkt:270:0: int-err /Users/clements/racket/racket/share/pkgs/typed-racket-lib/typed-racket/base-env/prims-contract.rkt:277:3 /Users/clements/racket/racket/share/pkgs/typed-racket-lib/typed-racket/private/type-contract.rkt:82:0: generate-contract-def /Users/clements/racket/racket/share/pkgs/typed-racket-lib/typed-racket/private/type-contract.rkt:192:3: for-loop /Users/clements/racket/racket/share/pkgs/typed-racket-lib/typed-racket/private/type-contract.rkt:188:0: change-contract-fixups /Users/clements/racket/racket/share/pkgs/typed-racket-lib/typed-racket/core.rkt:30:10 /Users/clements/racket/racket/share/pkgs/typed-racket-lib/typed-racket/typed-racket.rkt:24:4 /Users/clements/racket/racket/collects/compiler/cm.rkt:362:0: compile-zo* /Users/clements/racket/racket/collects/compiler/cm.rkt:570:26 /Users/clements/racket/racket/collects/compiler/cm.rkt:562:42 /Users/clements/racket/racket/collects/compiler/cm.rkt:634:2: do-check /Users/clements/racket/racket/collects/compiler/cm.rkt:722:4 /Users/clements/racket/pkgs/compiler-lib/compiler/commands/make.rkt:81:8: for-loop /Users/clements/racket/pkgs/compiler-lib/compiler/commands/make.rkt: [running body] /Users/clements/racket/racket/collects/raco/raco.rkt: [running body] /Users/clements/racket/racket/collects/raco/main.rkt: [running body] -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
typed-yaml.rkt
Description: Binary data
signature.asc
Description: PGP signature

