From [WayBack] Declarations and Statements: Hinting Directives you might remember this:
The ‘hint’ directives platform, deprecated, and library may be appended to any declaration. These directives will produce warnings at compile time. Hint directives can be applied to type declarations, variable declarations, class, interface and structure declarations, field declarations within classes or records, procedure, function and method declarations, and unit declarations.
However, it doesn’t as at least these fail:
type
{ [dcc32 Error] ClassConstUsageConsoleProject.dpr(14): E1030 Invalid compiler directive: 'DEPRECATED' }
TMyProcedure = procedure() of object deprecated 'do not use TMyProcedure';
{ [dcc32 Error] E1030 Invalid compiler directive: 'DEPRECATED' }
TMyReference = reference to procedure() deprecated 'do not use TMyReference';
These two helped me though:
This fails too:
type
{ [dcc32 Error] E2029 '=' expected but ';' found }
TArrayChars = array of Char; deprecated;
{ [dcc32 Error] E2029 ';' expected but identifier 'deprecated' found }
TArrayChars = array of Char deprecated;
But this is a workaround:
type
TArrayCharsOld = array of Char;
TArrayChars = TArrayCharsOld deprecated;
Which works for the procedure types as well:
type
TMyProcedureOld = procedure() of object;
TMyProcedure = TMyProcedureOld deprecated 'do not use TMyProcedure';
TMyReferenceOld = reference to procedure();
TMyReference = TMyReferenceOld deprecated 'do not use TMyReference';
Bug https://quality.embarcadero.com/browse/RSP-18316
–jeroen