(* Syntax test - all possible kinds of module parameters *) Module Type SIG. End SIG. Module Type FSIG (X: SIG). End FSIG. Module F (X: SIG). End F. Module Q. End Q. (* #trace Nametab.push;; #trace Nametab.push_short_name;; #trace Nametab.freeze;; #trace Nametab.unfreeze;; #trace Nametab.exists_cci;; *) Module M. Reset M. Module M (X: SIG). Reset M. Module M (X Y: SIG). Reset M. Module M (X: SIG) (Y: SIG). Reset M. Module M (X Y: SIG) (Z1 Z: SIG). Reset M. Module M (X: SIG) (Y: SIG). Reset M. Module M (X Y: SIG) (Z1 Z: SIG). Reset M. Module M : SIG. Reset M. Module M (X: SIG) : SIG. Reset M. Module M (X Y: SIG) : SIG. Reset M. Module M (X: SIG) (Y: SIG) : SIG. Reset M. Module M (X Y: SIG) (Z1 Z: SIG) : SIG. Reset M. Module M (X: SIG) (Y: SIG) : SIG. Reset M. Module M (X Y: SIG) (Z1 Z: SIG) : SIG. Reset M. Module M := F Q. Reset M. Module M (X: FSIG) := X Q. Reset M. Module M (X Y: FSIG) := X Q. Reset M. Module M (X: FSIG) (Y: SIG) := X Y. Reset M. Module M (X Y: FSIG) (Z1 Z: SIG) := X Z. Reset M. Module M (X: FSIG) (Y: SIG) := X Y. Reset M. Module M (X Y: FSIG) (Z1 Z: SIG) := X Z. Reset M. Module M : SIG := F Q. Reset M. Module M (X: FSIG) : SIG := X Q. Reset M. Module M (X Y: FSIG) : SIG := X Q. Reset M. Module M (X: FSIG) (Y: SIG) : SIG := X Y. Reset M. Module M (X Y: FSIG) (Z1 Z: SIG) : SIG := X Z. Reset M. Module M (X: FSIG) (Y: SIG) : SIG := X Y. Reset M. Module M (X Y: FSIG) (Z1 Z: SIG) : SIG := X Z. Reset M.