You did not fix everything that was fixed in Squeak. Example:
rect1 := 10@10 corner: 40@40. empty2 := 30@30 corner: 20@20. (rect1 intersects: empty2) - > true
I think that we should not use intersect: anymore because it does not make sense.
What I see is that you provided intersect:ifNone: to avoid producing empty rectangle in the first place - or to produce explicitely empty 0@0 extent: 0@0.
But - not all intersect: senders have been changed, Indeed we should probably continue
- some senders have been changed questionably (allowedArea in IdentifierChooserMorph is re-implementing RealEstateAgent class maximumUsableArea differently) - I don't know if intersect: was the sole source of empty rectanglesâ¦
No around 160 layoutFrame and others
Until all producers have been eradicated, the empty invariant still exists, and Rectangle methods must still be guarded against empty rectangle edge cases. Right now, it is not enforced everywhere (see intersects: case above).
Right now you're in the middle of the bridge, but that's OK if the emptiness invariant eradication is still planned, it's just a temporary transition..
If I remember correctly the goal is to never have never width.