--* From postmaster%watson.vnet.ibm.com@yktvmv.watson.ibm.com  Wed Dec 22 05:45:24 1993
--* Received: from yktvmv.watson.ibm.com by leonardo.watson.ibm.com (AIX 3.2/UCB 5.64/4.03)
--*           id AA20679; Wed, 22 Dec 1993 05:45:24 -0500
--* X-External-Networks: yes
--* Received: from watson.vnet.ibm.com by yktvmv.watson.ibm.com (IBM VM SMTP V2R3)
--*    with BSMTP id 2119; Wed, 22 Dec 93 05:51:42 EST
--* Received: from YKTVMV by watson.vnet.ibm.com with "VAGENT.V1.0"
--*           id <A.SANTAS.NOTE.YKTVMV.6235.Dec.22.05:51:42.-0500>
--*           for asbugs@watson; Wed, 22 Dec 93 05:51:42 -0500
--* Received: from bernina.ethz.ch by watson.ibm.com (IBM VM SMTP V2R3) with TCP;
--*    Wed, 22 Dec 93 05:51:41 EST
--* Received: from neptune by bernina.ethz.ch with SMTP inbound id <19028-0@bernina.ethz.ch>; Wed, 22 Dec 1993 11:51:21 +0100
--* From: Philip Santas <santas@inf.ethz.ch>
--* Received: from rutishauser.inf.ethz.ch (rutishauser-gw.inf.ethz.ch) by neptune id AA28326; Wed, 22 Dec 93 11:51:16 +0100
--* Date: Wed, 22 Dec 93 11:51:15 +0100
--* Message-Id: <9312221051.AA22534@rutishauser.inf.ethz.ch>
--* Received: from vinci.inf.ethz.ch.rutishauser by rutishauser.inf.ethz.ch id AA22534; Wed, 22 Dec 93 11:51:15 +0100
--* To: asbugs@watson.ibm.com
--* Subject: compiler treats 't', 't$A', 't$B' etc. as the same type
--* Cc: bronstei

--@ Fixed  by:  SSD   Wed Aug 10 01:29:48 EDT 1994 
--@ Tested by:  none 
--@ Summary:    No longer treating t and t$F(T) as the same type. 


Version: A# version 33.0 for SPARC (debug version)
Severity: major
Problem: compiler treats 't', 't$A', 't$B' etc. as the same type
Comments: In previous versions, the compiler was treating these types
          as distinct, even if they were actually the same type
          (ie. even if 't' was referring to 't$A').

          Sorry about the pre-previous bug report.
          The real bug is here;
          this program is wrong, but compiles. It may
          lead to strange results if the reps of the two types
          are different.
Code:
--------------------------------------------------
#include "aslib.as"
SI==>SingleInteger
import SI
BT: Category == with {make: SI -> % };
C1:Category == with {t:BT; make:SI->t };

FF(F:C1->C1, T:C1, T2:C1, x:t$(F T)): C1 == add {
      make (y:SI):t == x;
      t:BT == t$T2
}
---------------------------------------------------

Philip

 
