Assignnment compatibility with value parameters

When passing an actual parameter by value to a formal parameter of a function or procedure, the actual parameter shall be assignment compatible with the type of the formal parameter.

For example given:

   function IsDigit(c : char) : Boolean;
   begin
      if c in ['0'..'9'] then
     IsDigit := true
      else
     IsDigit := false
   end;

and

   while not IsDigit(key) do
       read(key)

then key (the actual parameter in IsDigit(key) shall be assignment compatible with char (the type of the formal parameter).