class CALL_SIG
****
The type signature of a routine or iter *call*. There are special type objects for arguments which are void, untyped creation expressions, array creation expressions, integer literals, or floating point literals.




Public


Readable Attributes
attr args:ARRAY{CALL_ARG};
**** The argument types, if any. or iter call signature and we don't know whether there is a return value or not.
attr has_ret:BOOL;
**** True if the return value is used. or iter call signature and we don't know whether there is a return value or not.
attr name:IDENT;
**** The name of the call. or iter call signature and we don't know whether there is a return value or not.
attr tp:$TP;
**** The type on which the call is made. or iter call signature and we don't know whether there is a return value or not.
attr unknown_ret:BOOL;
**** True if this is a bound routine or iter call signature and we don't know whether there is a return value or not.

Writable Attributes
attr args:ARRAY{CALL_ARG};
**** The argument types, if any. or iter call signature and we don't know whether there is a return value or not.
attr has_ret:BOOL;
**** True if the return value is used. or iter call signature and we don't know whether there is a return value or not.
attr name:IDENT;
**** The name of the call. or iter call signature and we don't know whether there is a return value or not.
attr tp:$TP;
**** The type on which the call is made. or iter call signature and we don't know whether there is a return value or not.
attr unknown_ret:BOOL;
**** True if this is a bound routine or iter call signature and we don't know whether there is a return value or not.

Features
boud_arg_error(call, arg, br, br_arg :$STR)
boud_arg_mode_error(call, arg, mode, br, br_arg, br_mode:$STR)
conforms_to(s:SIG):BOOL
**** True if a call with signature self could be made on the routine or iter described by `s'. They must: 1) have the same name, 2) have the same number of arguments, 3) Both have or do not have a return value, 4) The mode of each argument is the same 5) for any in or once arguments, the type in self is the subtype of the type in s;
____for_any_`inout'_arguments,_the_type_in_self_is_the_same_as_in_`s';_
____for_any_`out'_arguments,the_type_in_s_is_a_subtype_of_the_type_in_
____self_if_it_has_one,_
6) the return type of self is a subtype of the return
____type_of_`s'_(why_is_this_missing?_Boris_4-22-96)
7) Appear in the same type.
create:SAME
**** An uninitialized call sig.
lookup(in_class:BOOL):SIG
**** Lookup self and return the corresponding signature if there is one. Print an error message if it is ambiguous or absent and return void. Callers should set the err_loc. If `in_class' is true, then consider both public and private routines, otherwise just public ones.
old_conforms_to(s:SIG):BOOL
**** True if a call with signature self could be made on the routine or iter described by `s'. They must: 1) have the same name, 2) have the same number of arguments, 3) each call argument must conform to the corresponding
____declared_argument,
4) both must have or not have a return value. 5) Appear in the same type.
prog:PROG
**** The program in which this call appears.
str:STR
**** The string representation of self. Uses no whitespace. Use an underbar "_" for the return type if there is one, and the special strings "void", "create", "array", and "underscore" for call arguments whose type is inferred: "FOO::foo!(outA,void,C,array):_". If self is void, returns "void".