Commit Graph

100 Commits

Author SHA1 Message Date
Ted Kremenek a08713ce86 Move about 20 random diagnostics under -W flags. Patch by Ahmed Charles!
llvm-svn: 142284
2011-10-17 21:47:53 +00:00
Chandler Carruth 01ca696581 Add a testcase for r142121 based on an idea from Richard Smith. Thanks!
llvm-svn: 142160
2011-10-16 21:33:06 +00:00
David Blaikie e4e9766e3c Remove the leftover partial comment.
llvm-svn: 142138
2011-10-16 14:41:13 +00:00
Chandler Carruth 454de773e1 I fixed this with r142127; these notes now make sense even w/o the caret.
llvm-svn: 142129
2011-10-16 09:41:04 +00:00
Chandler Carruth 9e8ce4ccb9 Now that macro expansion notes are real notes and go through the same
formatting as any other diagnostic, they will be properly line wrapped and
otherwise pretty printed. Let's take advantage of that and the new factoring to
add some helpful information to them (much like template backtrace notes and
other notes): the name of the macro whose expansion is being noted. This makes
a world of difference if caret diagnostics are disabled, making the expansion
notes actually useful in this case. It also helps ensure that in edge cases the
information the user needs is present. Consider:

% nl -ba t5.cc
     1  #define M(x, y, z) \
     2    y
     3
     4  M(
     5    1,
     6    2,
     7    3);

We now produce:
% ./bin/clang -fsyntax-only t5.cc
t5.cc:6:3: error: expected unqualified-id
  2,
  ^
t5.cc:2:3: note: expanded from macro: M
  y
  ^
1 error generated.

Without the added information in the note, the name of the macro being expanded
would never be shown.

This also deletes a FIXME to use the diagnostic formatting. It's not yet clear
to me that we *can* do this reasonably, and the production of this message was
my primary goal here anyways.

I'd love any comments or suggestions on improving these notes, their wording,
etc. Currently, I need to make them provide more helpful information in the
presence of a token-pasting buffer, and I'm pondering adding something along
the lines of "expanded from argument N of macro: ...".

llvm-svn: 142127
2011-10-16 09:30:08 +00:00
Chandler Carruth dc2f257680 Now that the structure of this is more reasonably laid out, fix a long
standing deficiency: we were providing no macro backtrace information
whenever caret diagnostics were turned off. This sinks the logic for
suppressing the code snippet and caret to the code that actually prints
tho code snippet and caret. Along the way, clean up the naming of
functions, remove some now fixed FIXMEs, and generally improve the
wording and logic of this process.

Add a test case exerecising this functionality. It is notable that the
resulting messages are extremely low quality. I'm working on a follow-up
patch that should address this and have left a FIXME in the test case.

llvm-svn: 142120
2011-10-16 07:20:28 +00:00
Chandler Carruth 5371981593 Add a prefix to the existing test to prepare for more tests of other
backtrace behavior.

llvm-svn: 142119
2011-10-16 07:20:23 +00:00
Chandler Carruth 33d64bf8e5 Fold two run lines into a single logical one, and move them down below
the important code in this test to make the test more stable. Now adding
further tests won't shift the line numbers occuring in the diagnostic
output.

llvm-svn: 142118
2011-10-16 07:20:21 +00:00
Chandler Carruth 322db385ac Rename this test to a more general name in preparation for adding more
tests to it to cover more of the macro bactrace functionality.

llvm-svn: 142116
2011-10-16 06:55:30 +00:00
Joerg Sonnenberger 0533869aed Add flags for the remaining shift related warnings
(-Wshift-count-negative, -Wshift-count-overflow).

llvm-svn: 141962
2011-10-14 17:34:53 +00:00
Richard Smith 9ca5c42582 Update all tests other than Driver/std.cpp to use -std=c++11 rather than
-std=c++0x. Patch by Ahmed Charles!

llvm-svn: 141900
2011-10-13 22:29:44 +00:00
Ted Kremenek 03eec60483 Place diagnostic group ext_typecheck_decl_incomplete_type under a -W flag.
llvm-svn: 141620
2011-10-11 01:02:24 +00:00
Ivan Krasin 31f7411bfc Add -Wlanguage-extension-token option for ext_token_used warning.
llvm-svn: 141268
2011-10-06 02:46:34 +00:00
Ted Kremenek f58dbb038c Place diagnostic warn_atomic_property_rule under a -W flag. Fixes <rdar://problem/10230631>.
llvm-svn: 141089
2011-10-04 15:53:53 +00:00
Ted Kremenek edadecdb36 Place diagnostic warn_ownin_getter_rule under a -W flag. Fixes <rdar://problem/10230626>.
llvm-svn: 141088
2011-10-04 15:50:00 +00:00
Ted Kremenek 472a3c1237 Place diagnostic ext_predef_outside_function under a -W flag. Fixes <rdar://problem/10226192>.
llvm-svn: 141087
2011-10-04 15:41:53 +00:00
Ted Kremenek 8c748fb7f8 Revert r141060. We should NEVER add new warnings that aren't guarded by flag.
This reverts commit 5383d065241b18e84232bc50d81523f2058ea62b.

llvm-svn: 141077
2011-10-04 14:48:38 +00:00
Chad Rosier b047fed5cd Update testcase for r141053+r141055.
llvm-svn: 141060
2011-10-04 04:42:31 +00:00
Abramo Bagnara e398e60611 Fixed exapnsion range for # and ##.
llvm-svn: 141012
2011-10-03 18:39:03 +00:00
Peter Collingbourne 4ce4de8ead Add a warning group for warnings about using C1X features as extensions
llvm-svn: 140795
2011-09-29 18:04:12 +00:00
Chandler Carruth 374eaa9c4e Add back support for a manually formatted section of the diagnostic
message. Specifically, we now only line-wrap the first line of te
diagnostic message and assume the remainder is manually formatted. While
adding it back, simplify the logic for doing this.

Finally, add a test that ensures we actually preserve this feature. =D
*Now* its not dead code. Thanks to Doug for the test case.

llvm-svn: 140538
2011-09-26 16:43:25 +00:00
Chandler Carruth e31c1b4a42 Add a test for the display of diagnostic options and categories. This
would have caught a bug I introduced during refactoring. Silly me
thinking this was all well tested already...

If any of this is already covered by other tests, let me know. I looked
around and didn't see any.

llvm-svn: 140522
2011-09-26 10:42:40 +00:00
Matt Beaumont-Gay c9229a71ac Add DiagGroups to a couple of warnings.
llvm-svn: 140411
2011-09-23 20:56:58 +00:00
Ted Kremenek 34a1d37ba3 Place diagnostic warn_ivar_use_hidden under the flag -Wshadow-ivar.
llvm-svn: 140329
2011-09-22 19:24:22 +00:00
Richard Smith 58c7433709 PR10458: Finesse behaviour of C++0x features when in pre-0x mode. Accept for-range and auto with an ExtWarn, and produce a -Wc++0x-compat warning in C++98 mode when auto is used as a storage class.
llvm-svn: 139102
2011-09-04 19:54:14 +00:00
Douglas Gregor dd8a2fe0be Switch the "no module found" default-fatal warning to a default-fatal error.
llvm-svn: 138909
2011-08-31 21:52:21 +00:00
Eli Friedman 3781a36238 Change err_pp_file_not_found back to an Error; when it's a Warning, we suppress it in system headers. And it is not a good idea to suppress it in system headers. (This was originally changed in r134996 to implement -MG.)
Fixes <rdar://10041960>.  And also brings down the number of warnings without a flag by one :)

llvm-svn: 138842
2011-08-30 23:07:51 +00:00
Douglas Gregor 081425343b Introduce support for a simple module import declaration, which
loads the named module. The syntax itself is intentionally hideous and
will be replaced at some later point with something more
palatable. For now, we're focusing on the semantics:
  - Module imports are handled first by the preprocessor (to get macro
  definitions) and then the same tokens are also handled by the parser
  (to get declarations). If both happen (as in normal compilation),
  the second one is redundant, because we currently have no way to
  hide macros or declarations when loading a module. Chris gets credit
  for this mad-but-workable scheme.
  - The Preprocessor now holds on to a reference to a module loader,
  which is responsible for loading named modules. CompilerInstance is
  the only important module loader: it now knows how to create and
  wire up an AST reader on demand to actually perform the module load.
  - We search for modules in the include path, using the module name
  with the suffix ".pcm" (precompiled module) for the file name. This
  is a temporary hack; we hope to improve the situation in the
  future.

llvm-svn: 138679
2011-08-26 23:56:07 +00:00
Douglas Gregor 14208800fa Fix -ferror-limit= to properly emit notes following the last error
messages. Fi from David Blaikie, tests from Nikola Smiljanic!

llvm-svn: 137851
2011-08-17 19:13:00 +00:00
Chandler Carruth 29027b9352 Fix this test which had encoded the typo fixed in r137814.
llvm-svn: 137821
2011-08-17 08:56:14 +00:00
Ted Kremenek 26794fe096 Place err_cfstring_literal_not_string_constant and warn_cfstring_truncated under "-WCFString" flag.
llvm-svn: 137508
2011-08-12 20:46:54 +00:00
Ted Kremenek 95c3b73f3a Place diagnostic warn_stringcompare under the "-Wstring-compare" flag.
llvm-svn: 137507
2011-08-12 20:46:52 +00:00
Ted Kremenek d713fec9cc Place warnings related to incorrect "main()" declaration under "-Wmain".
llvm-svn: 137506
2011-08-12 20:46:49 +00:00
Ted Kremenek 8facefab10 Add -Wtypename-missing flag for diagnostic warn_typename_missing.
llvm-svn: 137505
2011-08-12 20:46:45 +00:00
Ted Kremenek 228b5fefbb Add diagtool-based test where we enforce that no additional warnings can be added to Clang without a -W flag.
llvm-svn: 137369
2011-08-11 22:06:55 +00:00
Richard Trieu ff5dc53c7a Fix a test case that was intermittently failing. The issue was that instantiations are not stored in an order preserving structure, so the print order may be impacted. Modified test case to do two FileCheck passes to ensure that both instantiations are in the same place.
Test originially commited at r136306 and temporarily silenced at r136348.

llvm-svn: 136385
2011-07-28 20:30:10 +00:00
NAKAMURA Takumi 0bbacea5b7 test/Misc/ast-dump-templates.cpp: Disable this temporarily due to unstable output.
llvm-svn: 136348
2011-07-28 12:10:58 +00:00
Richard Trieu 82398f9cd6 Add template instantiations to the output of -ast-dump.
llvm-svn: 136306
2011-07-28 00:19:05 +00:00
Chandler Carruth cd7a02ec1b Switch the diagnostic messages about macros to use the terms 'expanded'
and 'expansions' rather than 'instantiated' and 'contexts'.

This is the first of several patches migrating Clang's terminology
surrounding macros from 'instantiation' to 'expansion'.

llvm-svn: 135135
2011-07-14 08:20:28 +00:00
Chandler Carruth d517395248 Apply patch from Richard Trieu to fix PR9548:
When two different types has the same text representation in the same
diagnostic message, print an a.k.a. after the type if the a.k.a. gives extra
information about the type.

class versa_string;

typedef versa_string string;

namespace std {template <typename T> class vector;}

using std::vector;

void f(vector<string> v);

namespace std {
class basic_string;
typedef basic_string string;
template <typename T> class vector {};
void g() {
  vector<string> v;
  f(v);
}
}

Old message:
----------------
test.cc:15:3: error: no matching function for call to 'f'
  f(&v);
  ^
test.cc:7:6: note: candidate function not viable: no known conversion from
      'vector<string>' to 'vector<string>' for 1st argument
void f(vector<string> v);
     ^
1 error generated.

New message:
---------------
test.cc:15:3: error: no matching function for call to 'f'
  f(v);
  ^
test.cc:7:6: note: candidate function not viable: no known conversion from
      'vector<string>' (aka 'std::vector<std::basic_string>') to
      'vector<string>' (aka 'std::vector<versa_string>') for 1st argument
void f(vector<string> v);
     ^
1 error generated.

llvm-svn: 134904
2011-07-11 17:49:21 +00:00
Chandler Carruth 2536c072f7 Switch the token-paste source locations inside of function style macro
argument expansion to use the macro argument source locations as well.
Add a few tests to exercise this. There is still a bit more work needed
here though.

llvm-svn: 134674
2011-07-08 01:04:21 +00:00
Chandler Carruth 402bb38823 Keep track of which source locations are part of a macro argument
instantiation and improve diagnostics which are stem from macro
arguments to trace the argument itself back through the layers of macro
expansion.

This requires some tricky handling of the source locations, as the
argument appears to be expanded in the opposite direction from the
surrounding macro. This patch provides helper routines that encapsulate
the logic and explain the reasoning behind how we step through macros
during diagnostic printing.

This fixes the rest of the test cases originially in PR9279, and later
split out into PR10214 and PR10215.

There is still some more work we can do here to improve the macro
backtrace, but those will follow as separate patches.

llvm-svn: 134660
2011-07-07 23:56:36 +00:00
Chris Lattner ac57f21cd1 Fix PR9279 - Macro expansion stack trace seriously broken with function-style macros, by not recursively printing notes for other 'instantiated from' notes.
This is a one line fix here:
+      // Don't print recursive instantiation notes from an instantiation note.
+      Loc = SM.getSpellingLoc(Loc);

While here, fix the testcase to be more precise (it got filecheck'ized
brutally), and fix EmitCaretDiagnostic to be private and to not pass down
the unused 'Level' argument.

llvm-svn: 133993
2011-06-28 05:11:33 +00:00
Richard Trieu 17afcbe5de Change the include stack of "instantiated from" notes to fall under the control of f/fno-diagnostics-show-note-include-stack flags. This should help with reducing diagnostic spew from macros instantiations.
llvm-svn: 132143
2011-05-26 20:49:16 +00:00
Douglas Gregor 643c922e66 Introduce the -fdiagnostics-format=xxx option to control how Clang
prints the file, line, and column of a diagnostic. We currently
support Clang's normal format, MSVC, and Vi formats.

Note that we no longer change the diagnostic format based on
-fms-extensions.

Patch by Andrew Fish!

llvm-svn: 131794
2011-05-21 17:07:29 +00:00
Argyrios Kyrtzidis b77d6f0fd1 Don't hide #warnings in a system header, same as gcc. Fixes rdar://8495837.
llvm-svn: 129951
2011-04-21 23:08:23 +00:00
Chandler Carruth 24284afa2d Flip the default for showing include stacks on notes to false. This
required modifying a few tests that specifically use note include stacks
to check the source manager's view of include stacks. I've simply added
the flag to these tests for now, they may have to be more substantially
changed if we decide to remove support for note include stacks
altogether.

Also, add a test for include stacks on notes that was supposed to go in
with the previous commit.

llvm-svn: 128390
2011-03-27 20:00:08 +00:00
Chandler Carruth 1b7cc20fd8 FileCheckize this test.
llvm-svn: 127327
2011-03-09 10:56:54 +00:00
Richard Smith 30482bc786 Implement the C++0x deduced 'auto' feature.
This fixes PR 8738, 9060 and 9132.

llvm-svn: 126069
2011-02-20 03:19:35 +00:00
Argyrios Kyrtzidis 71731d6b05 Implement -working-directory.
When -working-directory is passed in command line, file paths are resolved relative to the specified directory.
This helps both when using libclang (where we can't require the user to actually change the working directory)
and to help reproduce test cases when the reproduction work comes along.

--FileSystemOptions is introduced which controls how file system operations are performed (currently it just contains
 the working directory value if set).
--FileSystemOptions are passed around to various interfaces that perform file operations.
--Opening & reading the content of files should be done only through FileManager. This is useful in general since
 file operations will be abstracted in the future for the reproduction mechanism.

FileSystemOptions is independent of FileManager so that we can have multiple translation units sharing the same
FileManager but with different FileSystemOptions.

Addresses rdar://8583824.

llvm-svn: 118203
2010-11-03 22:45:23 +00:00