--* From IGLIO%WATSON.vnet.ibm.com@yktvmv.watson.ibm.com  Wed Apr 27 17:26:16 1994
--* Received: from yktvmv.watson.ibm.com by asharp.watson.ibm.com (AIX 3.2/UCB 5.64/930311)
--*           id AA18075; Wed, 27 Apr 1994 17:26:16 -0400
--* Received: from watson.vnet.ibm.com by yktvmv.watson.ibm.com (IBM VM SMTP V2R3)
--*    with BSMTP id 0483; Wed, 27 Apr 94 17:26:17 EDT
--* Received: from YKTVMV by watson.vnet.ibm.com with "VAGENT.V1.0"
--*           id <A.IGLIO.NOTE.VAGENT2.3555.Apr.27.17:26:17.-0400>
--*           for asbugs@watson; Wed, 27 Apr 94 17:26:17 -0400
--* Received: from YKTVMV by watson.vnet.ibm.com with "VAGENT.V1.0"
--*           id 3549; Wed, 27 Apr 1994 17:26:16 EDT
--* Received: from galois.watson.ibm.com by yktvmv.watson.ibm.com (IBM VM SMTP V2R3)
--*    with TCP; Wed, 27 Apr 94 17:26:16 EDT
--* Received: by galois.watson.ibm.com (AIX 3.2/UCB 5.64/4.03)
--*           id AA11924; Wed, 27 Apr 1994 17:26:11 -0400
--* Date: Wed, 27 Apr 1994 17:26:11 -0400
--* From: iglio@galois.watson.ibm.com
--* Message-Id: <9404272126.AA11924@galois.watson.ibm.com>
--* To: asbugs@watson.ibm.com
--* Subject: [3] Assertion failed in tfSat (see file) [array0.as][v34.7]

--@ Fixed  by:  PAB   Thu May 11 11:50:29 EDT 1995 
--@ Tested by:  none 
--@ Summary:    Failing assertions have been fixed. 


#if 0
PI: This is why the compiler fails:
In titdn0ApplyFType:
	
	(Array Type) from (1) has an abTPoss = (Multiple (Syntax ...
	tfSatMap, called with tfSatBupMask, is successfull, because the
	contraint type, (Tuple Type), satisfies the previous tform.
	The last tfSatMap call, the one with tfSatTdnMask, calls tiTdn on
	the same absyn; titdn fails, so the state is not promoted to Unique
	and the assertion in tfSatAsMulti fails.

	I submitted this problem to Sam. Probably it requires little changes in
	the tfSat design to avoid this problem.
	Note: bug553 is similar (the difference is that titdn fails for a
		different reason).

#endif

--# array0.as:  test circular type constructors.

--> testcomp
--> testerrs

export
	Type:	Type
	->:	(Tuple Type, Tuple Type) -> Type
	Tuple:	Type -> Type

	Array:		(Integer, Type) -> Type
	Array:		Type -> Type
	Integer:	with( make: Array Type -> % )   -- (1)
#if TestErrorsToo
	Integer:	Type
#endif

 
