llvm-project/clang/lib/Format
Nico Weber 80a82761bd Formatter: Get bit tests in ifs right.
It's generally not possible to know if 'a' '*' 'b' is a multiplication
expression or a variable declaration with a purely lexer-based approach. The
formatter currently uses a heuristic that classifies this token sequence as a
multiplication in rhs contexts (after '=' or 'return') and as a declaration
else.

Because of this, it gets bit tests in ifs, such as "if (a & b)" wrong. However,
declarations in ifs always have to be followed by '=', so this patch changes
the formatter to classify '&' as an operator if it's at the start of an if
statement.

Before:
  if (a& b)
  if (int* b = f())

Now:
  if (a & b)
  if (int* b = f())

llvm-svn: 172731
2013-01-17 17:17:19 +00:00
..
CMakeLists.txt
Format.cpp Formatter: Get bit tests in ifs right. 2013-01-17 17:17:19 +00:00
Makefile
UnwrappedLineParser.cpp Add debugging support for split penalties. 2013-01-16 14:55:28 +00:00
UnwrappedLineParser.h Calculate the total length of a line up to each token up front. 2013-01-16 10:41:46 +00:00