Anybody?
Is this designed? Or is this a bug? Shall I put it on Mantis?

Mailing lists / fpc-devel / 2014-02
5 messages · 2 people · –
Reply by email Subscribe to this list Your subscription
Read-only archive. Use j and k to move between messages.
Anybody?
Is this designed? Or is this a bug? Shall I put it on Mantis?
Just asking this again, as I did not get any answer yet?
Is that the indented behaviour, and if so what is the reasoning for it?
31.03.2014 17:32, Martin Frb пишет:
This behavior is hardly intended.
To get clues about what's going on, you can compile the compiler with OPT=-dEXTDEBUG, then use it with -vd to compile your tests.
So, in case of subrange of integer/byte, the overloaded procedures are matched as follows:
Bar(TFoo);
invalid
Bar(LongInt);
ex: 0 eq: 1 l1: 0 l2: 0 l3: 0 l4: 0 l5: 0 l6: 0 oper: 0 ord: 4.29496729300000047684E+0009
- LongInt : equal
Bar(Variant);
ex: 0 eq: 0 l1: 0 l2: 0 l3: 0 l4: 0 l5: 0 l6: 0 oper: 1 ord: 0.00000000000000000000E+0000
- Variant : convert_operatorAnd in case of subrange of enum, it becomes as follows:
Bar(TFoo);
ex: 0 eq: 0 l1: 1 l2: 0 l3: 0 l4: 0 l5: 0 l6: 0 oper: 0 ord: 0.00000000000000000000E+0000
- TFoo : convert_l1
Bar(LongInt);
invalid
Bar(Variant);
ex: 0 eq: 0 l1: 1 l2: 0 l3: 0 l4: 0 l5: 0 l6: 0 oper: 0 ord: 0.00000000000000000000E+0000
- Variant : convert_l1Here Variant gets the same degree of compatibility with TFoo1 as TFoo, that's probably a bug in compiler (Variant should probably have same compatibility as in first case, i.e. convert_operator, if not incompatible at all).
Also, the subrange may receive the same treatment as in the first case, i.e. considered equal to its base type but with some "ordinal distance".
Regards,
Sergei
Thanks.
I had already reported it. http://bugs.freepascal.org/view.php?id=25697
If ok I will add your findings to the report?
31.03.2014 23:46, Martin Frb пишет:
Feel free to do it.
Regards,
Sergei