Next: , Previous: Type specialization, Up: Pragmas   [Contents]

18.3 Obsolescence

A declaration of the form

:- pragma obsolete(Name/Arity).

declares that the predicate(s) or function(s) with name Name and arity Arity are “obsolete”: it instructs the compiler to issue a warning whenever the named predicate(s) or function(s) are used.

pragma obsolete’ declarations are intended for use by library developers, to allow gradual (rather than abrupt) evolution of library interfaces. If a library developer changes the interface of a library predicate, they should leave the old version of that predicate in the library, but mark it as obsolete using a ‘pragma obsolete’ declaration, and document how library users should modify their code to suit the new interface. The users of the library will then get a warning if they use obsolete features, and can consult the library documentation to determine how to fix their code. Eventually, when the library developer deems that users have had sufficient warning, they can remove the old version entirely.