Ticket #165 (closed enhancement: fixed)
Report dangerous callin bindings (equals & hashCode)
|Reported by:||stephan||Owned by:||stephan|
When callin-binding a base class's equals or hashCode method, a StackOverflowError can occur because the lifting infrastructure uses exactly these methods during callin dispatch.
I recently (r19249) ensured that isExecutingCallin() is checked early enough so that the following binding works:
myEquals <- replace equals base when (!isExecutingCallin());
(See also 9.2.4-otjld-is-executing-callin-called-5, note that the role cache has to be filled with lots of roles for a hash-conflict to occur so that equals() will actually be called).
However, calling bindings to these two methods should be flagged with a warning to alert the user of the danger of infinite recursion.