Making clang::Rewriter friendlier for subclassing

Hi,

Would there be objections to make clang::Rewriter a bit friendlier for subclassing by marking some of its methods virtual? In particular InsertText, ReplaceText, RemoveText and their variations.

The reason for this is to be able to subclass Rewriter for the purposes of logging, debugging and other custom capabilities.

If this sounds reasonable, I’ll be happy to implement this.

Thanks in advance,

Eli

If you mean to call the base methods anyway, wouldn’t it be better to have a Rewriter object as a member of your class ?

If you mean to call the base methods anyway, wouldn't it be better to have
a Rewriter object as a member of your class ?

It is certainly possible to wrap Rewriter in another class. But this would
mean the code needs to:

1. Replace Rewriter* everywhere with the new class
2. Implement all of Rewriter's methods to call base methods + additional
operations

This is quite cumbersome. Making some methods of Rewriter virtual, however,
would mean (1) is not needed and in (2) we only need to override methods we
instrument/modify.

Eli

I’d personally say that making the rewriter more complex by making the methods virtual is not worth it. My design vote would go for decoupling through a facade in the client code.