On Thu, May 20, 2010 at 23:03, Jonas Maebe <[email protected]> wrote: > > On 20 May 2010, at 13:57, Alexander Klenin wrote: > >> the safe version would be >> >> var tmp: TFPCanvasHelper; >> ... >> InitHelper(tmp, TFont); >> tmp := FFont as TFont; > > I guess you mean "FFont := tmp as TFont" here.
Yes, sorry. > It would not be backwards compatible, because if InitHelper or a function it > calls also uses FFont, it will still see the old value instead of the value > assigned to the "out" parameter. The code would have to be translated into > something like this: > > InitHelper(TFPCanvasHelper(FFont), TFont); > FFont := TFPCanvasHelper(FFont) as TFont; That would be good too. > However, having the compiler implicitly start inserting transformations like > that behind the back of the programmer is not a nice principle either > (except possibly if something like -CR is used). I see no problem if this check is controlled by a compiler flag, similar to R+, O+ etc, "on" by default. Thinking about it, I like the idea very much -- it gives a way out to those who are concerned with extreme speed, and those whose code will be broken (although breakage with suggested implementation will in 99% of cases mean a real bug, as contrasted to the current implementation, when in 99% of cases the correctly working code is broken). -- Alexander S. Klenin _______________________________________________ fpc-devel maillist - [email protected] http://lists.freepascal.org/mailman/listinfo/fpc-devel
