//===---------------------------------------------------------------------===// // Minor random things that can be improved //===---------------------------------------------------------------------===// Warn about "X && 0x1000" saying that the user may mean "X & 0x1000". We should do this for any immediate except zero, so long as it doesn't come from a macro expansion. Likewise for ||. //===---------------------------------------------------------------------===// Lexer-related diagnostics should point to the problematic character, not the start of the token. For example: int y = 0000\ 00080; diag.c:4:9: error: invalid digit '8' in octal constant int y = 0000\ ^ should be: diag.c:4:9: error: invalid digit '8' in octal constant 00080; ^ This specific diagnostic is implemented, but others should be updated. //===---------------------------------------------------------------------===// C++ (checker): For iterators, warn of the use of "iterator++" instead of "++iterator" when when the value returned by operator++(int) is ignored. //===---------------------------------------------------------------------===// We want to keep more source range information in Declarator to help produce better diagnostics. Declarator::getSourceRange() should be implemented to give a range for the whole declarator with all of its specifiers, and DeclaratorChunk::ParamInfo should also have a source range covering the whole parameter, so that an error message like this: overloaded-operator-decl.cpp:37:23: error: parameter of overloaded post-increment operator must have type 'int' (not 'float') X operator++(X&, const float& f); ^ can be turned into something like this: overloaded-operator-decl.cpp:37:23: error: parameter of overloaded post-increment operator must have type 'int' (not 'float') X operator++(X&, const float& f); ^ ~~~~~~~~~~~~~~