sammccall added a comment.

In D153152#4617391 <https://reviews.llvm.org/D153152#4617391>, @robot wrote:

>> so you could replace the logic that prints the return type + arg list with 
>> `printType(functype, class, methodname)` (from AST.h). That should pick up 
>> noexcept etc.
>
> I've tried it and it's not obvious to me how to do it properly: Since 
> `printType` wants to print the _function type_, it will parenthesize the 
> placeholder (methodname):
>
>   void (foo)()
>
> I've tried adding a flag to `PrintingPolicy` to avoid parenthesizing the 
> name, but I wonder if adjusting a "type printer" to print a function 
> declaration is a clean design. Next problem I ran into is parameters: A type 
> printer does not need to concern itself with parameter names nor default 
> arguments:
>
>   void foo(int x = 0) = 0;
>   void foo(int) override;
>
> Shall I continue to pursue that path? Shall I adjust the type printer to be 
> able to print parameter names and default arguments?

Sorry, it does sound like I sent you down a bad path.
You *could* (no need for an option for parens, here we can detect that the 
placeholder isValidAsciiIdentifier), but entirely possible more things are 
broken still.

If you prefer the approach with copying the tokens, adding heuristics to patch 
them up as needed is maybe no worse than the alternatives.

(BTW, I don't think we want to copy default arguments - it's certainly not 
necessary, and not helpful in common cases where the function is only called 
through the base)


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D153152/new/

https://reviews.llvm.org/D153152

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to