Maybe not so easy question...

Daniel Wang danwang@CS.Princeton.EDU
07 Apr 2001 18:56:15 -0400


I'm playing games with the MLton frontend, so that I can reuse
closure-convert.fun to spit out code in my own IL and then convert my IL
back to MLton's CPS. 

Doing, so seems to be tickling a bug related to the way boolean's are
handled that I don't quite understand...

The input the simplify pass..

Datatypes:
bool = false | true
exn1067_0 = Match_1064_0 | Bind_1065_0


Globals:


Functions:
fun main_1068_0() = 
   let
      val x_1075_0 = ()
      val x_1076_0 = MY_halt()
      val t1077_0 = x_1075_0
      val x_3 = MY_halt()
      val x_2 = MY_FromId(x_3)
   in
      x_2
   end


Main: main_1068_0

The input to simplifyTypes


Datatypes:
exn1067_0 = 
bool = dummy_0


Globals:
val unit_0 = ()


Functions:
fun main_1068_0() = 
   let
      val x_1076_0 = MY_halt()
      val x_3 = MY_halt()
      val x_2 = MY_FromId(x_3)
   in
      ()
   end


Main: main_1068_0

uncaught exception Fail: bug: true has no info property
  raised at: mlton/library/basic/error.sml:6.21-6.47
             mlton/library/basic/trace.sml:315.16-315.19
             mlton/library/basic/trace.sml:315.16-315.19
             my-compile.sml:244.19
             mlton/library/basic/dynamic-wind.sml:7.40-7.43
             mlton/library/basic/dynamic-wind.sml:7.40-7.43

What I don't understand is where it's finding the "true" constructor as it
doesn't seem to occur anywhere in the input. I also don't know why the bool
get's replaced with this "dummy_0" constructor....

Any hints?