--* From postmaster%watson.vnet.ibm.com@yktvmv.watson.ibm.com  Tue Aug 10 14:10:05 1993
--* Received: from yktvmv2.watson.ibm.com by radical.watson.ibm.com (AIX 3.2/UCB 5.64/900524)
--*           id AA16052; Tue, 10 Aug 1993 14:10:05 -0400
--* X-External-Networks: yes
--* Received: from watson.vnet.ibm.com by yktvmv.watson.ibm.com (IBM VM SMTP V2R3)
--*    with BSMTP id 2551; Tue, 10 Aug 93 14:11:27 EDT
--* Received: from YKTVMV by watson.vnet.ibm.com with "VAGENT.V1.0"
--*           id <A.EDWARDS.NOTE.YKTVMV.8561.Aug.10.14:11:26.-0400>
--*           for asbugs@watson; Tue, 10 Aug 93 14:11:27 -0400
--* Received: from ibm8.scri.fsu.edu by watson.ibm.com (IBM VM SMTP V2R3) with TCP;
--*    Tue, 10 Aug 93 14:11:25 EDT
--* Received: by ibm8.scri.fsu.edu id AA20018
--*   (5.65c/IDA-1.4.4 for asbugs@watson.ibm.com); Tue, 10 Aug 1993 14:11:19 -0400
--* Date: Tue, 10 Aug 1993 14:11:19 -0400
--* From: Robert Edwards <edwards@ibm8.scri.fsu.edu>
--* Message-Id: <199308101811.AA20018@ibm8.scri.fsu.edu>
--* To: asbugs@watson.ibm.com
--* Subject: compiler very confused by "add" [bug9.as][A# version 29.5 for AIX RS/6000 (debug version)]

--@ Fixed  by: SMW Wed Oct 06 14:45:57 1993
--@ Tested by: N/A
--@ Summary:   Fixed by other improvements.

--+ % asharp -r bug11.as
--+ "bug11.as", line 6: D(n:Integer,R:BasicType): A(n,R) == add
--+                     ....................................^
--+ [L6 C37] (Error) Have determined 0 possible types for the expression.
--+   Subexpression `foo(m: Array(R)): % == 1$Integer pretend %':
--+         Meaning 1:  with
--+   The context requires an expression of type A(n, R).
#include "aslib.as"

import
  Integer

RAW ==>
    foo(m:Array R):% ==
      import Integer
      1$Integer pretend %

A(n:Integer,R:BasicType): Category == BasicType
  with
    foo: Array R -> %

--  default RAW


D(n:Integer,R:BasicType): A(n,R) == add
    foo(m:Array R):% ==
      import Integer
      1$Integer pretend %


import
  Integer
  Array Integer


args:Array Integer := [1,2]

print("Here are the args: ")(args)()

m:D(2,Integer) := foo(args)


 
