On Friday, 14 March 2014 at 05:15:05 UTC, Manu wrote:
So it comes up fairly regularly that people suggest that the
compiler
should have a mode where it may update user code automatically
to assist
migration to new compiler versions.
I'm personally against the idea, and Walter certainly doesn't
like it, but
it occurred to me that a slight variation on this idea might be
awesome.
Imagine instead, an '-update' option which instead of modifying
your code,
would output a .patch file containing suggested amendments
wherever it
encountered deprecated code...
The user can then take this patch file, inspect it visually
using their
favourite merge tool, and pick and choose the bits that they
agree or
disagree with.
I would say this approach takes a dubious feature and turns it
into a
spectacular feature!
Language changes are probably easy enough to handle, but what
about cases
of 'deprecated' in the library?
It's conceivable that the deprecated keyword could take an
optional
argument to a CTFE function which would receive the expression
as a string,
and the function could transform and return an amended string
which would
also be added to the output patch file. This way, the feature
could
conceivably also offer upgrade advice for arbitrary library
changes.
Considering the advice in the context of a visual diff/merge
window would
be awesome if you ask me.
Sounds like a cool idea. But not as part of the compiler. Its
more of a use case for compiler as a library ;)