[MLton] New front-end finds bug in basis library
Jared M Showalter
jareds@mit.edu
Mon, 19 Jan 2004 22:27:41 -0500 (EST)
The reader and writer types in BinIO.StreamIO are not the same as in
BinPrimIO. So, the following program should elaborate if the basis
library is conformant, but it doesn't:
type r = BinIO.StreamIO.reader
val f : r -> r = fn x : BinPrimIO.reader => x
yields:
Error: test.sml 2.5: pattern and expression disagree
pattern: [r] -> [r]
expression: [BinPrimIO.reader] -> [BinPrimIO.reader]
in: (f): (r -> r) = fn ((x): BinPrimIO.reader) => (x)
compilation aborted: elaborate reported errors
This appears to be a bug in the basis library the is caught by the new
front-end, rather than a bug in the front-end, because of the following
excerpt from the output of 'mlton -show-basis true':
structure BinIO:
sig
structure StreamIO:
sig
type reader = BinIO.StreamIO.reader
type writer = BinIO.StreamIO.writer
structure TextIO:
sig
structure StreamIO:
sig
type reader = TextPrimIO.reader
type writer = TextPrimIO.writer
TextIO has it right, but BinIO doesn't.
Jared