When preanalysing class-wide conditions, we restore "Function (Object)"
to its original "Object.Function" notation. This requires the Parent
links to be fixed. We did it for nodes; now we do it for lists as well.
This patch is enough to fix assertion failure in CCG and to make the
tree well-connected. Perhaps there is a more elegant solution, but that
remains to be investigated.
gcc/ada/
* contracts.adb (Fix_Parent): Fir part both for lists and nodes.
begin
if Par /= Parent_Node then
- pragma Assert (not Is_List_Member (Node)
- or else Nkind (Par) = N_Function_Call);
- Set_Parent (Node, Parent_Node);
+ if Is_List_Member (Node) then
+ Set_List_Parent (List_Containing (Node), Parent_Node);
+ else
+ Set_Parent (Node, Parent_Node);
+ end if;
end if;
return OK;