adamc@35: signature S1 = sig
adamc@34:         type t
adamc@34:         val zero : t
adamc@34: end
adamc@35: signature S2 = sig
adamc@35:         type t = int
adamc@35:         val zero : t
adamc@35: end
adamc@35: structure S = struct
adamc@34:         type t = int
adamc@34:         val zero = 0
adamc@34: end
adamc@35: structure S1 : S1 = S
adamc@35: structure S2 : S2 = S
adamc@34: 
adamc@35: type t = S1.t
adamc@35: val zero : t = S1.zero
adamc@35: 
adamc@35: type t = S2.t
adamc@35: val zero : int = S2.zero
adamc@35: 
adamc@35: structure T = S1
adamc@39: val main : S1.t = T.zero