Date: prev next · Thread: first prev next last
2012 Archives by date, by thread · List index


On 01/20/2012 06:32 AM, Noel Power wrote:
Hi Andrew,

My primary concerns

1. Change in behavior that may break existing code.
the intent of the patch is to restore the previous behaviour ( by previous behaviour I mean before integration of the feature that erroneously removed the 'special' processing for '+' for dates ). Additionally the intent of the patch is to make the behaviour for '-' similar for'+' e.g. if Date + 1 gives a Date then surely Date - 1 should additionally give back at Date. Hopefully that makes sense :-)

So the intent was not original behavior, but the behavior that was intended the first time but then left commented out. You then did one better by allowing for subtraction. Now I know what you mean by "old behavior". good.


2. Previous behavior was never flagged as an issue, and may arguably be considered logical to some. for example, storing a "delta" in the native type.
I don't think we should be afraid to change present behaviour if we think it is wrong and especially if the impact is probably going to be very minor ( as I think is the case here ). I would bet that the behaviour we have at the moment is an incomplete attempt to behave in a compatible way with vba. Where we can, I think if the cost is low we should try to be compatible ( should actually look at what vba does [*]). But... I take it that you are unhappy with changing the treatment of '-' ? and wouldn't be in favour of the change right? ( funny somehow I thought in the previous mail thread that you were in favour of even letting the Date type be set for all those numeric operations, sorry I misunderstood you )

Oh no, I think that we need it on minus as well. I did state that your change covered the majority case. My concern is that it may break existing macros, which is how I found the bug in the first place. I believe that your change will allow that particular macro to function correctly. The macros that will break are macros that assume (date +/- date) return date or that other operations such as * return date. Logically, however, I do agree that (date - date) makes little sense as a date and I have trouble envisioning the meaning of date * date.

I believe that your fix will allow date - date + date to return a date, so in my brain, I expect it to work as I expect.


3. The rules are more complicated now and require complex examples to explain; for example, time_1 + time_2 + time_3 returns a date but time_1 + time_2 does not. We cannot simply state that math done with dates or including a date returns a date.
yeah that doesn't sound right :-/  should remain a Date I would think

In a quick test under OOo, I did not test on LibO, I noticed that the Time() function returned a different type than Now(). Oh, I see that Time() returns a string. That explains a lot. A "real" time is (as I had original thought) expressed as a Date that has a 0 integer portion.

I do believe, however, that all the original arguments for a Date are the same for time. Logically, using time, 13:00 + 13:00 means nothing that makes sense to me, so you still covered the majority case unless someone chose to store elapsed time in a date object.


[*] table of behaviour in vba, pre the bug being introduced and post patch

                               mso    old behaviour  present
                            --------------------------------
date + num                    Date      Date          Date
date - num                    Date      Double        Date
date * num                    Double    Double        Double
date / num                    Double    Double        Double
date + date                   Date      Double        Double [1]
date - date                   Double    Double        Double
date * date                   Double    Double        Double

[1] the date + date is clearly wrong (fixing that would address '3.' above. )

personally I am all for fixing this to be compatible

The only thing with which I disagree is that I would have addition and subtraction return the same types. So, I would say that if date + date returns a date (as your chart shows for MSO) then I would have date - date return a date as well. If not, then I would leave your original change as is so that they are consistent for addition and subtraction.

What type is "-date"? I see that never returned a date so (date + (-date)) will return a date.


--
Andrew Pitonyak
My Macro Document: http://www.pitonyak.org/AndrewMacro.odt
Info:  http://www.pitonyak.org/oo.php


Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.