Summary

-strict-types fails with forall types (sometimes)

Metadata

Description

 
 (define-record bar foo)
 
 (define-type bar
   (struct bar))
 
 ;; This breaks with csc -strict-types
 (: foo (forall (x string) (x -> bar)))
 
 ;; Using this declaration instead of the above makes it work
 ;; (: foo (string -> bar))
 
 ;; Alternatively, removing this declaration makes it work, too
 (: make-bar (string -> bar))
 
 (define (foo x) (make-bar x))
 

Tested with 4.8.0rc2

Changes and comments

[2012-08-13 18:46:32 UTC] syn wrote:

Whoops, forgot to mention the actual error. It's

 Error: [internal compiler error] resolve: can't resolve unknown type-variable: x20
 
         Call history:
 
         <syntax>          (##core#begin (define (foo x) (make-bar x)))
         <syntax>          (define (foo x) (make-bar x))
         <syntax>          (##core#set! foo (##core#lambda (x) (make-bar x)))
         <syntax>          (##core#lambda (x) (make-bar x))
         <syntax>          (##core#begin (make-bar x))
         <syntax>          (make-bar x)  <--

[2012-08-14 08:51:18 UTC] felix changed status from new to assigned

[2012-08-14 08:51:18 UTC] felix set owner to felix

[2012-08-16 19:19:46 UTC] sjamaan changed status from assigned to closed

[2012-08-16 19:19:46 UTC] sjamaan set resolution to fixed

[2012-08-16 19:19:46 UTC] sjamaan wrote:

Fixed by revision 9c04968eb45c0b14794326711620367af8a839f9

[2012-09-24 21:47:48 UTC] felix changed milestone from 4.8.0 to 4.9.0

[2012-09-24 21:47:48 UTC] felix wrote:

Milestone 4.8.0 deleted