jackfirth / resyntax

A Racket refactoring engine
Apache License 2.0
51 stars 10 forks source link

Deprecated aliases #234

Open jackfirth opened 3 months ago

jackfirth commented 3 months ago

When a library wants to rename an identifier, it has to keep the old name around to avoid breaking backward compatibility. This is usually achieved with rename-out. It would be nice for library authors to be able to specify that a renamed identifier is a deprecated alias of another identifier. If this was done in such a way that it exposed static information for Resyntax to use, then Resyntax could automatically migrate uses of deprecated aliases. One way this could work is to extend rename-out (and the rename option of contract-out) with a #:deprecated keyword, like so:

(provide foo
         (rename-out [foo old-foo #:deprecated]))