When entering a property evaluation, the type of node should already be
correct has the property object has been pushed. However, under this ticket,
it appears that it wasn't. It's useful to have a proper diagnostic instead
of a crash.
Part of TA05-016
The fold expression evaluated missed pushing the new implicit it, which
resulted sometimes in unexpected error down the line.
With this change, we're now getting proper error when e.g. the selector
of a property is wrong. That error message has been fixed to provide more
information of the type found.
Part of TA05-016
In Handle_Filter, we were switching non Match_None match modes to
Match_Has, while forgetting to keep the previous value otherwise, resulting
in uninitialized data. Now fixed.
In Push_Call_Result of a W_Function, the iteration decision was dismissed
and not transmitted to the parent frame. Moved the transmission after
poping the calling frame.
Tests and fixes TA02-001.
Renamed Actual_Parameter into Actual_To_Formal_Assoc.
Reorganized call sequence so that only one call to Property_Argument_Types is
necessary.
For T930-056.
Containers now all derive from an initial W_Container type. A new instrinsic
'foreach' is introduced at that level to iterate over values.
Part of T930-056.
This patch extracts the property-generic processing of input kit into
separate packages. Only support is provided for Ada. A number of parameter
and returned types kinds are now supported (a few are missing and could need
to be completed in the future).
Actual parameter lists have been modified to accomodate a format {index,
value} used in this new processing.
Implements T930-056.
We had an experimental capabilities allowing something like
child (A or new something ())
to work so that so "A or new someting ()) would first be evaluated on all
child nodes without the allocator as to try to find a match without
allocating, then with the allocator. This ended up only serving very
specific cases - being overall confusing and complicating the code. This
capability is now removed, and the above can be easily refactored into a
more explicit expression:
child (A) or child (new something ())