[fpc-devel] Breaking change in FPC 2.6.1
Sven Barth
pascaldragon at googlemail.com
Tue May 1 15:05:57 CEST 2012
On 01.05.2012 13:57, Martin Schreiber wrote:
> On Tuesday 01 May 2012 13:50:49 Sven Barth wrote:
>> On 01.05.2012 13:50, Martin Schreiber wrote:
>>>> Anyway, the change is undone, we're back on TBookmarkStr.
>>>> TBookMarkStr is now marked deprecated. Revision 21155.
>>>
>>> Thank you very much. That means it is not possible to work with fixes_2_6
>>> without "deprecated" warnings? TDataset.Bookmark is of type TBookmarkStr
>>> but TBookmarkStr is deprecated?
>>
>> Exactly. These were added to remind everyone who uses TBookmarkStr that
>> there WILL be a change after 2.6.2 has been released (thus in 2.6.3) as
>> Michael explained.
>>
> What do you suggest to avoid the warning?
You can locally disable warnings by using the $warn directive (not
documented yet it seems, but available in 2.6.0).
It looks like this:
{$warn MSGID (on|off|error)}
* on: MSGID will be emitted as a warning
* off: MSGID will not be emitted
* error: MSGID will be emitted as an error (and handled as such by the
compiler!)
You can find out the MSGID by passing "-vq" to the compiler then it will
additionally print the ID for each message it writes. For the case of
"deprecated" there are two message IDs: One which is used if a custom
message is given and one for the other case. For the first the ID is
5066 and for the latter 5043.
The following is a demonstration of the potential usage of $warn:
=== example begin ===
program warntest;
{$mode objfpc}
type
TTest = class
procedure Test; deprecated 'Test';
end;
procedure TTest.Test;
begin
end;
var
t: TTest;
begin
{$push} // <= used to restore the state afterwards; you could use {$warn
5066 on} as well
{$warn 5066 off}
t.Test; // here no warning will be emitted
{$pop}
t.Test; // here a warning will be emitted
end.
=== example end ===
Alternatively you can also use
{$warn symbol_deprecated off}
which will switch of both custom and non-custom deprecated messages for
symbols (units have an extra name).
Here is a list of all those recognized identifiers (out of Delphi
compatibility):
CONSTRUCTING_ABSTRACT
IMPLICIT_VARIANTS
NO_RETVAL
SYMBOL_DEPRECATED
SYMBOL_EXPERIMENTAL
SYMBOL_LIBRARY
SYMBOL_PLATFORM
SYMBOL_UNIMPLEMENTED
UNIT_DEPRECATED
UNIT_EXPERIMENTAL
UNIT_LIBRARY
UNIT_PLATFORM
UNIT_UNIMPLEMENTED
ZERO_NIL_COMPAT
IMPLICIT_STRING_CAST
IMPLICIT_VARIANTS
NO_RETVAL
SYMBOL_DEPRECATED
SYMBOL_EXPERIMENTAL
SYMBOL_LIBRARY
SYMBOL_PLATFORM
SYMBOL_UNIMPLEMENTED
UNIT_DEPRECATED
UNIT_EXPERIMENTAL
UNIT_LIBRARY
UNIT_PLATFORM
UNIT_UNIMPLEMENTED
ZERO_NIL_COMPAT
IMPLICIT_STRING_CAST
IMPLICIT_STRING_CAST_LOSS
EXPLICIT_STRING_CAST
EXPLICIT_STRING_CAST_LOSS
CVT_NARROWING_STRING_LOST
Regards,
Sven
More information about the fpc-devel
mailing list