marcap@concour.CS.Concordia.CA (Marc Pawlowsky) (10/03/89)
I am trying to define an object with a constrained generic type.  And the 
constrained type has a gneric type in its definition.  For example:
class A[U]
export
  contents
feature
  contents: U;
  Create(x:U) is
    do
      contents := x;
    end; -- Create
end -- A
class B[R->A]
feature
  b_contents:R;
  Create(x:R) is
    do
      b_contents := x;
    end; -- Create
  rout1 is
    local
      dummy:R;
    do
      dummy := b_contents.contents;
    end; -- rout1
end -- B
Trying to compile this (adam% is my prompt) gives:
adam% adam% ec b
Pass 1 on class b
Pass 2 on class b
        Interface may have changed.
Pass 3 on class b
"b", 15: Incorrect number of actual generic parameters for class a
*** ec: pass3 failed 
Stop.
adam% 
Please note that the error is at the line 'dummy := ...'.
OK This makes sense, so lets change the contents of class B.  
Unfortunately the obvious solution is: 
   class B[R->A[S]]
Trying to compile gives:
adam% ec b
Pass 1 on class b
"b", 1: Cannot find supplier class: s
*** ec: pass1 failed 
Stop.
adam% 
Which is what it is supposed to do according to the Eiffel syntax.
At this point I'm stumped.  Does anybody know what to do?
I'm working in Eiffel 2.1 on a Sun 3/50 under Unix 3.50 (Export)
Marc Pawlowsky
Graduate Student
Concordia University