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.

/Jacob Carlborg

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 even. 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.

Bruno Medeiros

Reply via email to