[Lldb-commits] [PATCH] D136761: [lldb][FormatEntity] Fix closing parenthesis for function.name-with-args frame format

Michael Buch via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Wed Oct 26 06:56:19 PDT 2022


Michael137 added a comment.

In D136761#3885529 <https://reviews.llvm.org/D136761#3885529>, @labath wrote:

> Wow, another name parser I knew nothing about. :/
>
> I'm probably being naive, but I don't suppose there's an easy a way to reuse/repurpose the parser in the C++ language plugin for this (?) This is the first time I see this code, so it's hard to construct counter-examples, but I'd be surprised if this is correct.

Hehe I agree this function could use some clean-up
I tried to avoid going down that rabbit hole at the moment :)
I wouldn't be shocked if there were edge-cases that don't work.

The algorithm iiuc works as follows:

1. Find the opening function parenthesis (`open_paren`) and print out the string up to that point (effectively the function name)
2. For each variable in scope print out: `<var_name>=<var_representation>`
3. Find closing parenthesis
4. Print everything from closing parenthesis onward (I imagine this is to preserve function qualifiers)

Where the reverse scan might go wrong is with `noexecept(...)` specifications. Will check...

An alternative is to actually implement the `Language::GetFunctionDisplayName(Language::FunctionNameRepresentation::eNameWithNoArgs)` API for `CPlusPlusLanguage`. Currently it's a no-op (which is why we end up in this hand-rolled parser)


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D136761



More information about the lldb-commits mailing list