Ticket #5979 (closed defect: fixed)

Opened 16 months ago

Last modified 15 months ago

[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.

Attachments

Change History

Changed 16 months ago by nthiery

  • description modified (diff)

Changed 16 months ago by nthiery

Changed 16 months ago by nthiery

  • summary changed from Parent: fixes broken (implicit) invariant between ._element_constructor and self._element_init_pass_parent to [with patch, needs review] Parent: fixes broken (implicit) invariant between ._element_constructor and self._element_init_pass_parent

Changed 16 months ago by nthiery

I should mention that sage -testall passes smoothly with sage-3.4.2-alpha0 (except for a trivial broken test in interfaces.r which also fails before applying the patch). Haven't tried it with sage-3.4.2 final (under compilation)

Changed 16 months ago by nthiery

  • description modified (diff)

Changed 16 months ago by nthiery

  • status changed from new to assigned

Changed 16 months ago by robertwb

  • summary changed from [with patch, needs review] Parent: fixes broken (implicit) invariant between ._element_constructor and self._element_init_pass_parent to [with patch, positive review] Parent: fixes broken (implicit) invariant between ._element_constructor and self._element_init_pass_parent

Changed 15 months ago by mhansen

  • status changed from assigned to closed
  • resolution set to fixed

Merged in 4.0.1.alpha0.

Changed 15 months ago by mhansen

  • reviewer set to Robert Bradshaw
  • merged set to 4.0.1.alpha0
  • author set to Nicolas Thiery
Note: See TracTickets for help on using tickets.