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