Ticket #5979 (closed defect: fixed)
[with patch, positive review] Parent: fixes broken (implicit) invariant between ._element_constructor and self._element_init_pass_parent
| Reported by: | nthiery | Owned by: | nthiery |
|---|---|---|---|
| Priority: | major | Milestone: | sage-4.0.1 |
| Component: | coercion | Keywords: | coercion, parents, element_constructor |
| Cc: | sage-combinat | Author(s): | Nicolas Thiery |
| Report Upstream: | Reviewer(s): | Robert Bradshaw | |
| Merged in: | 4.0.1.alpha0 | Work issues: |
Description (last modified by nthiery) (diff)
In Parent, there is a (previously implicit) invariant, namely that:
self._element_init_pass_parent == guess_pass_parent(between ._element_constructor)
This invariant was broken when self._element_constructor was set from self._element_constructor_ by call. This made the parent not to be passed properly to _element_constructor.
This patch fixes this (one line), and adds a corresponding doctest. It also includes a related trivial fix to a line that is apparently never used in coerce_maps, and adds a comment about this.
The category patch #5891 depends heavily on this one, as this way of setting _element_constructor becomes the default one for simple parents.

