On 17/06/2014 20:12, Jacob Carlborg wrote:
On Tuesday, 17 June 2014 at 15:45:55 UTC, Bruno Medeiros wrote:
Adding "final" to every method in certain classes could be done
without semantic analysis. Reworking certain constructs to different
constructs possibly as well (for example change foreach_reverse to
just foreach usage)
What about methods added via template and string mixins? You cannot add
"final" to a method in a template, because you don't know if it will be
mixed in into a class or struct (does the compiler allow "final" on
struct methods?). There's no possible way to handle string mixins, a
method can be built up by concatenating strings.
Methods added through string mixins would not work. Actually, any AST
modification would probably not work through string mixins. That would
be an incredibly difficult problem to solve - in many cases, impossible
And perhaps rightly so, one could make a case that string mixins should
be used sparsely? We have to realize that string mixins are very useful,
but are a dirty hack that is a replacement for AST macros.
As for methods added via templates, the tool would present the option to
add "final" to those templates as well, or just the class. If doing do
might break other classes that use the same template, well, that is a
problem that transcends whether this transformation is done manually or
by a tool. It would not be an issue with "dfix" itself then.