forked from OSchip/llvm-project
b3b4113a23
The demangler had no concept of operator precendence, and would parenthesize many more subexpressions than necessary. In particular it would parenthesize primary-expressions, such as '4', which just looks strange. It would also parenthesize '>' expressions, just in case they were inside a template parameter list. This patch fixes both issues. * Add operator precedence to the OpInfo structure, and add a subexpression helper that will parenthesize a lower precedence subexpression. * Add a 'greater-than is greater-than' indicator to the output buffer, so the expression printer knows whether it is immediately inside a template parameter list (and must therefore parenthesize 'expr > expr'). This is a counter, so that ... * Add open and close printers to the output buffer, that increment and decrement the gt-is-gt indicator. * Parenthesize comma operators inside comma-separated lists. (probably a rare case, but still). This dramatically reduces the extraneous parentheses being printed. Reviewed By: dblaikie, bruno Differential Revision: https://reviews.llvm.org/D120905 |
||
---|---|---|
.. | ||
cmake | ||
fuzz | ||
include | ||
lib | ||
src | ||
test | ||
www | ||
.clang-format | ||
.gitignore | ||
CMakeLists.txt | ||
CREDITS.TXT | ||
LICENSE.TXT |