C++ demangler has some strange edge cases.
DeanoBurrito opened this issue · 1 comments
DeanoBurrito commented
I didnt do enough testing on this one, as itll occasionally spit out some nonsense.
I think a big part of the problem is treating each scoped name entry as its own token, which can cause pointers to be displayed in the wrong place.
There are 2 paths forward with this:
- We keep track of appending text (like a pointer), waiting until a scoped name has ended before it's printed. I like this the most, as there's only 1 case of appending text, the rest are prepended. However this isnt super maintainable, and more state is more room for unexpected errors.
- We could also handle this on the input parser. When parsing a scoped name, we output the shorthand tokens as needed, but only output a single scoped name, and perhaps the token maintains a list text items (start, len - all from original source). This keeps the output simple, however adds complexity on the input.
DeanoBurrito commented