diff options
Diffstat (limited to 'contrib/llvm/tools/clang/TODO.txt')
-rw-r--r-- | contrib/llvm/tools/clang/TODO.txt | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/contrib/llvm/tools/clang/TODO.txt b/contrib/llvm/tools/clang/TODO.txt new file mode 100644 index 0000000..c63b1b3 --- /dev/null +++ b/contrib/llvm/tools/clang/TODO.txt @@ -0,0 +1,75 @@ +//===---------------------------------------------------------------------===// +// 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); + ^ ~~~~~~~~~~~~~~ + +//===---------------------------------------------------------------------===// + +For terminal output, we should consider limiting the amount of +diagnostic text we print once the first error has been +encountered. For example, once we have produced an error diagnostic, +we should only continue producing diagnostics until we have produced a +page full of results (say, 50 lines of text). Beyond that, (1) the +remaining errors are likely to be less interesting, and (2) the poor +user has to scroll his terminal to find out where things went wrong. + +//===---------------------------------------------------------------------===// +More ideas for code modification hints: + - If no member of a given name is found in a class/struct, search through the names of entities that do exist in the class and suggest the closest candidate. e.g., if I write "DS.setTypeSpecType", it would suggest "DS.SetTypeSpecType" (edit distance = 1). + - If a class member is defined out-of-line but isn't in the class declaration (and there are no close matches!), provide the option to add an in-class declaration. + - Fix-it hints for the inclusion of headers when needed for particular features (e.g., <typeinfo> for typeid) + +//===---------------------------------------------------------------------===// + +Options to support: + -ftabstop=width + -fpreprocessed mode. + -nostdinc++ + -imultilib |