I understand the thread, however, in one of the ISO standards for Pascal, the keyword is, is defined for type not value. The example I gave is the only way I can see supporting is on non objects - because we are a typed language. That was my point, not arguing against, however, sharing a way I could see a value of it. Other than that, I am against...
Ozz > On Apr 14, 2018, at 8:38 AM, Thorsten Engler <thorsten.eng...@gmx.net> wrote: > > Eh, Ozz? Did you actually read this thread? > > It has nothing to do with the declared type of i. it compares the current > value of i against the range of the specified type and will return true if > the current value falls inside that range. > > 5 is TSubRange -> true > 2000 is TSubRange -> false > > Also: > > case i as TSubRange of //exception if i < -5 or i > 5 > > > >> -----Original Message----- >> From: fpc-devel <fpc-devel-boun...@lists.freepascal.org> On Behalf >> Of Ozz Nixon >> Sent: Saturday, 14 April 2018 22:13 >> To: FPC developers' list <fpc-devel@lists.freepascal.org> >> Subject: *** GMX Spamverdacht *** Re: [fpc-devel] Dangerous >> optimization in CASE..OF >> >> I have to ask why? >> >> i is Int64 only, will always be int64 only, so all other >> comparisons are always skipped. >> >> I could see this, inside a method with an untyped parameter: >> >> procedure doSomething(myvar;out success:boolean); Begin >> {… your if is comparisons …} >> end; >> >> This opens your method to be used for all types for param1. >> >> Ozz >> >>> On Apr 14, 2018, at 5:51 AM, Thorsten Engler >> <thorsten.eng...@gmx.net> wrote: >>> >>> I haven't checked out the changes you made to the compiler, so >> you might have already covered this, but while you are at it, you >> might want to just make this work for any ordinal type with a well- >> defined upper/lower bound (any type for which High()/Low() can be >> evaluated at compile time). So: >>> >>> type >>> TSubRange=-5..5; >>> TEnum=(One, Two); >>> >>> var >>> i: Int64; >>> >>> begin >>> if i is TSubRange then >>> //... >>> If i is TEnum then >>> //... >>> If i is SmallInt then >>> //... >>> >>> (same with "as"). >>> >>> >>> >>>> -----Original Message----- >>>> From: fpc-devel <fpc-devel-boun...@lists.freepascal.org> On >> Behalf Of >>>> Ondrej Pokorny >>>> Sent: Saturday, 14 April 2018 19:03 >>>> To: fpc-devel@lists.freepascal.org >>>> Subject: Re: [fpc-devel] Dangerous optimization in CASE..OF >>>> >>>> On 14.04.2018 10:39, Thorsten Engler wrote: >>>>> How about following the same schema as with classes? >>>>> >>>>> If 1 is TMyEnum then >>>>> //use hard cast here >>>> >>>> Yes, that is reasonable as well and it will be easier to >> implement >>>> than the TryIntToEnum/IntToEnum intrinsics for me. >>>> >>>> Ondrej >>>> _______________________________________________ >>>> fpc-devel maillist - fpc-devel@lists.freepascal.org >>>> http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel >>> >>> _______________________________________________ >>> fpc-devel maillist - fpc-devel@lists.freepascal.org >>> http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel >> >> _______________________________________________ >> fpc-devel maillist - fpc-devel@lists.freepascal.org >> http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel > > _______________________________________________ > fpc-devel maillist - fpc-devel@lists.freepascal.org > http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel _______________________________________________ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel