[Ironpython-users] Problem with the "in" operator for
m.schaber at codesys.com
Fri Aug 7 09:47:11 CEST 2015
Von: Jeff Hardy [mailto:jdhardy at gmail.com]
> On Thu, Jul 9, 2015 at 11:50 PM, Markus Schaber
> <m.schaber at codesys.com> wrote:
> > Hi, Ivan,
> > Von: Ivan Pozdeev [mailto:vano at mail.mipt.ru]
> >> > As far as I can see, the "in" operator should return true if any
> >> > object in the enumerable is "equal" to the object given as
> >> >reference:
> >> Indeed,
> >> https://docs.python.org/2/reference/expressions.html#membership-test-details states:
> >> For the list and tuple types, x in y is true if and only if there
> >> exists an index i such that x == y[i] is true.
> >> Now, to check if IronPython honors this.
> >> > assert a in (a,), 'a is in (a,)'
> >> > assert a in (b,), 'a is in (b,)' # this one fails...
> >> > As far as I can see via breakpoints, the Equals methods of the
> >> > objects are never actually called, except on the first assertion
> >> > with the == operator.
> >> My guess is it's cutting corners by comparing hashes instead.
> > Hm, the GetHashCode() method in my example is hardcoded to return
> > 0, and it is not even called (at least, the breakpoint is not hit.
> > There must be something more subtle...
> In theory it should be creating a dynamic call site for "equals" that
> will handle all of the cases (except for types that have a
> __contains__ method) including IDMOP. Which there could very likely
> be a bug in how that is generated; I'm not sure the IDMOP is stuff
> gets excersized as much as it should.
What to do now?
Should I file a bug report on https://github.com/IronLanguages/main/issues ?
CODESYS® a trademark of 3S-Smart Software Solutions GmbH
Inspiring Automation Solutions
3S-Smart Software Solutions GmbH
Dipl.-Inf. Markus Schaber | Product Development Core Technology
Memminger Str. 151 | 87439 Kempten | Germany
Tel. +49-831-54031-979 | Fax +49-831-54031-50
E-Mail: m.schaber at codesys.com | Web: http://www.codesys.com | CODESYS store: http://store.codesys.com
CODESYS forum: http://forum.codesys.com
Managing Directors: Dipl.Inf. Dieter Hess, Dipl.Inf. Manfred Werner | Trade register: Kempten HRB 6186 | Tax ID No.: DE 167014915
This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received
this e-mail in error) please notify the sender immediately and destroy this e-mail. Any unauthorised copying, disclosure
or distribution of the material in this e-mail is strictly forbidden.
More information about the Ironpython-users