Type origin isn't respected for property access
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Murano |
Fix Released
|
Medium
|
Stan Lagun |
Bug Description
Due to the versioning issues if class Y is inherited from class X and Z is inherited from Y it doesn't necessary mean that Z is inherited from X. It fact it might be X' - different version of the X as long as it meets Y's requirements. This happens in very complex inheritance case of multiple inheritance when several versions of the same class encounter within parents graph.
The implication is that in order to traverse all the type parents one need to know type origin - the root of inheritance graph which has the information that X' should be used instead of X.
Most of MuranoType method that require inheritance graph traversal use receiver (self) as an origin. The only case when it is incorrect is when operation is done on upcasted object ($obj.cast(
There are at least two cases when type origin is not respected:
1) $obj.cast(
2) Property modifications. Property access involves property lookup and thus inheritance graph traversals. But internally some of them are done on upcasted object type. Also it is possible to set the property of upcasted object in MuranoPL
Changed in murano: | |
assignee: | nobody → Stan Lagun (slagun) |
status: | New → In Progress |
Changed in murano: | |
importance: | Undecided → Medium |
milestone: | none → newton-3 |
Change abandoned by Stan Lagun (<email address hidden>) on branch: master /review. openstack. org/349158
Review: https:/