For objects "is" compares (the type of) the value (not the type of the variable) against the specified type. Effectively telling you if you can do a hard cast of that value to that type.
For ordinals, it compares the value against the specified type. Effectively telling you if you can do a hard cast of that value to that type. I fail to see the difference? > -----Original Message----- > From: fpc-devel <fpc-devel-boun...@lists.freepascal.org> On Behalf > Of Ozz Nixon > Sent: Saturday, 14 April 2018 22:43 > To: FPC developers' list <fpc-devel@lists.freepascal.org> > Subject: Re: [fpc-devel] *** GMX Spamverdacht *** Re: Dangerous > optimization in CASE..OF > > 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 _______________________________________________ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel