aboutsummaryrefslogtreecommitdiff
path: root/clang/tools/c-index-test/c-index-test.c
AgeCommit message (Collapse)AuthorFilesLines
2016-04-27Expose cxx constructor and method properties through libclang and python ↵Jonathan Coe1-1/+12
bindings. Summary: I have exposed the following function through libclang and the clang.cindex python bindings: clang_CXXConstructor_isConvertingConstructor, clang_CXXConstructor_isCopyConstructor, clang_CXXConstructor_isDefaultConstructor, clang_CXXConstructor_isMoveConstructor, clang_CXXMethod_isDefaulted I need (some of) these methods for a C++ code model I am building in Python to drive a code generator. Reviewers: compnerd, skalinichev Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D15469 llvm-svn: 267706
2016-04-03[c-index-test] Fix leak in print_completion_result, NFCVedant Kumar1-3/+5
llvm-svn: 265252
2016-03-30[c-index-test] Delete dead function, NFCVedant Kumar1-19/+0
llvm-svn: 264874
2016-03-01Optionally demote fatal errors to non-fatal errors.Manuel Klimek1-0/+2
This behavior is enabled when the new CXTranslationUnit_KeepGoing option is passed to clang_parseTranslationUnit{,2}. It is geared towards use by IDEs and similar consumers of the clang-c API where fatal errors may arise when parsing incomplete code mid-edit, or when include paths are not properly configured yet. In such situations one still wants to get as much information as possible about a TU. Previously, the semantic analysis would not instantiate templates or report additional fatal errors after the first fatal error was encountered. Fixes PR24268. Patch by Milian Wolff. llvm-svn: 262318
2016-02-14[index] Enhance c-index-test tool and have it link and test the clangIndex ↵Argyrios Kyrtzidis1-4/+16
library directly. llvm-svn: 260842
2016-01-16[libclang] Introduce APIs for evaluating a cursor and checking if a macro is ↵Argyrios Kyrtzidis1-70/+195
builtin/function. rdar://24091595 llvm-svn: 257968
2016-01-07[libclang] Handle AutoType in clang_getTypeDeclarationSergey Kalinichev1-0/+20
Differential Revision: http://reviews.llvm.org/D13001 llvm-svn: 257043
2016-01-06Show inclusions from a preamble in clang_getInclusions.Erik Verbruggen1-0/+21
When reparsing a translation unit with preamble generation turned on, no includes are found. This is due to the fact that all SLocs from AST/PCH files are skipped as they are 'loaded', and inclusions from a preamble are also 'loaded'. So, in case a file has a preamble, it first needs to process those loaded inclusions, and then check for any local inclusions. This latter one is for any includes that are not part of the preamble, like includes half-way through a file. This fixes PR24748. Differential Revision: http://reviews.llvm.org/D14329 llvm-svn: 256939
2015-12-15[libclang] Add a flag to create the precompiled preamble on the first parse.Benjamin Kramer1-1/+3
Summary: The current default is to create the preamble on the first reparse, aka second parse. This is useful for clients that do not want to block when opening a file because serializing the preamble takes a bit of time. However, this makes the reparse much more expensive and that may be on the critical path as it's the first interaction a user has with the source code. YouCompleteMe currently optimizes for the first code interaction by parsing the file twice when loaded. That's just unnecessarily slow and this flag helps to avoid that. Reviewers: doug.gregor, klimek Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D15490 llvm-svn: 255635
2015-11-23Make clang_Cursor_getMangling not mangle if the declaration isn't mangledEhsan Akhgari1-0/+30
Right now clang_Cursor_getMangling will attempt to mangle any declaration, even if the declaration isn't mangled (extern C). This results in a partially mangled name which isn't useful for much. This patch makes clang_Cursor_getMangling return an empty string if the declaration isn't mangled. Patch by Michael Wu <mwu@mozilla.com>. llvm-svn: 253909
2015-11-12libclang: add clang_Cursor_getCXXManglingsSaleem Abdulrasool1-0/+21
This function permits the mangling of a C++ 'structor. Depending on the ABI and the declaration, the declaration may contain more than one associated symbol for a given declaration. This allows the consumer to retrieve all of the associated symbols for the declaration the cursor points to. llvm-svn: 252853
2015-10-27Index: expose is_mutable_fieldSaleem Abdulrasool1-0/+2
Expose isMutable via libClang and python bindings. Patch by Jonathan B Coe! llvm-svn: 251410
2015-10-08Fix a -Wdeclaration-after-statement warning.Craig Topper1-1/+1
llvm-svn: 249652
2015-10-08Make clang_Cursor_getMangling not mangle if the declaration isn't mangledEhsan Akhgari1-0/+2
Right now clang_Cursor_getMangling will attempt to mangle any declaration, even if the declaration isn't mangled (extern C). This results in a partially mangled name which isn't useful for much. This patch makes clang_Cursor_getMangling return an empty string if the declaration isn't mangled. Patch by Michael Wu <mwu@mozilla.com>. llvm-svn: 249639
2015-10-06Revert r249437Ehsan Akhgari1-2/+0
llvm-svn: 249440
2015-10-06Make clang_Cursor_getMangling don't mangle if the declaration isn't mangledEhsan Akhgari1-0/+2
Right now clang_Cursor_getMangling will attempt to mangle any declaration, even if the declaration isn't mangled (extern "C"). This results in a partially mangled name which isn't useful for much. This patch makes clang_Cursor_getMangling return an empty string if the declaration isn't mangled. Patch by Michael Wu <mwu@mozilla.com>. llvm-svn: 249437
2015-08-04[UB] Avoid a really broken call to realloc that would later result inChandler Carruth1-0/+11
a bad call to memcpy. When we only have a buffer from one of the two reparse calls, we can just return that buffer rather than going through the realloc/memcpy dance. Found with UBsan. llvm-svn: 243950
2015-06-18Fix a typo.Adrian Prantl1-1/+1
llvm-svn: 240025
2015-05-14Revert r237339 as sanitizer-ppc64-linux1 does not like it.Yaron Keren1-7/+6
Complains: /home/buildbots/sanitizerslave1/sanitizer-ppc64-1/build/llvm/tools/clang/tools/c-index-test/c-index-test.c:829:30: error: format specifies type 'long' but the argument has type 'long long' [-Werror,-Wformat] I, TAK, clang_Cursor_getTemplateArgumentValue(Cursor, I)); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ I'm not sure now how this should be fixed. %lld is non-standard and not accepted by mingw on Windows while PRId64 is bad for this bot. Is long long longer than 64 bits here? if not, why is PRId64 incompatible with it? something seems wrong. Probably all the datatypes should be replaced to unsigned or uint64_t depending upin requirements instead of the non standard long long. llvm-svn: 237346
2015-05-14Replace non-standard %lld printf usage with PRId64.Yaron Keren1-6/+7
See also r180024. llvm-svn: 237339
2015-04-13[libclang] Add functions to get information about fields.Argyrios Kyrtzidis1-18/+41
Patch by Loïc Jaquemet! llvm-svn: 234762
2015-01-29This reverts commit r227432, r227438 and r227448.Rafael Espindola1-41/+18
It should bring the bots back. Original messagses: r227448: Remove unnecessary default. r227438: Fix Index/print-type.cpp test following r227432. r227432: libclang: Add three functions useful for dealing with anonymous fields: clang_Cursor_getOffsetOfField clang_Cursor_isAnonymous clang_Type_visitFields Python: Add corresponding methods for dealing with anonymous fields. Patch by Loïc Jaquemet llvm-svn: 227472
2015-01-29libclang: Add three functions useful for dealing with anonymous fields:Francois Pichet1-18/+41
clang_Cursor_getOffsetOfField clang_Cursor_isAnonymous clang_Type_visitFields Python: Add corresponding methods for dealing with anonymous fields. Patch by Loïc Jaquemet llvm-svn: 227432
2014-10-10Add libclang capabilities to retriete template arguments from specializations.Eli Bendersky1-2/+29
Includes Python bindings. Reviewed in http://reviews.llvm.org/D5621 Patch by Rob Springer llvm-svn: 219529
2014-08-18Fix a memory leak in one of the test unit. Silent coverity warning CID 1095912Sylvestre Ledru1-0/+1
llvm-svn: 215898
2014-08-01Fix a memory leak - dispose of the CXString after printing it in mangling.Eli Bendersky1-0/+1
Thanks to kcc@ for noticing. llvm-svn: 214506
2014-07-31Exposes a C API to name mangling for a given cursor.Eli Bendersky1-0/+15
Inspired by https://gist.github.com/tritao/2766291, and was previously discussed on cfe-dev: http://lists.cs.uiuc.edu/pipermail/cfe-dev/2014-June/037577.html Adding testing capability via c-index-test. llvm-svn: 214410
2014-06-06Fix C++ style // comments in a couple of C filesTimur Iskhodzhanov1-2/+2
llvm-svn: 210325
2014-06-05Flush C stdio streams upon process terminationReid Kleckner1-3/+9
Due to what can only be described as a CRT bug, stdout and amazingly even stderr are not always flushed upon process termination, especially when the system is under high threading pressure. I have found two repros for this: 1) In lib\Support\Threading.cpp, change sys::Mutex to an std::recursive_mutex and run check-clang. Usually between 30 and 40 tests will fail. 2) Add OutputDebugStrings in code that runs during static initialization and static shutdown. This will sometimes generate similar failures. After a substantial amount of troubleshooting and debugging, I found that I could reproduce this from the command line without running check-clang. Simply make the mutex change described in #1, then manually run the following command many times by running it once, then pressing Up -> Enter very quickly: D:\src\llvm\build\vs2013\Debug\bin\c-index-test.EXE -cursor-at=D:\src\llvm\tools\clang\test\Index\targeted-preamble.h:2:15 D:\src\llvm\tools\clang\test\Index\targeted-cursor.c -include D:\src\llvm\build\vs2013\tools\clang\test\Index\Output\targeted-cursor.c.tmp.h -Xclang -error-on-deserialized-decl=NestedVar1 -Xclang -error-on-deserialized-decl=TopVar | D:\src\llvm\build\vs2013\Debug\bin\FileCheck.EXE D:\src\llvm\tools\clang\test\Index\targeted-cursor.c -check-prefix=PREAMBLE-CURSOR1 Sporadically they will fail, and attaching a debugger to a failed instance indicates that stdin of FileCheck.exe is empty. Note that due to the repro in #2, we can rule out a bug in the STL's mutex implementation, and instead conclude that this is a real flake in the windows test harness. Test Plan: Without patch: Ran check-clang 10 times and saw over 30 Unexpected failures on every run. With patch: Ran check-clang 10 times and saw 0 unexpected failures across all runs. Reviewers: rnk Differential Revision: http://reviews.llvm.org/D4021 Patch by Zachary Turner! llvm-svn: 210225
2014-06-04Remove the last remaining llvm/Config/config.h includesAlp Toker1-1/+1
This corrects long-standing misuses of LLVM's internal config.h. In most cases the public llvm-config.h header was intended and we can now remove the old hacks thanks to LLVM r210144. The config.h header is private, won't be installed and should no longer be included by clang or other modules. llvm-svn: 210145
2014-05-15[libclang] Introduce clang_Module_isSystem(), which returns non-zero if the ↵Argyrios Kyrtzidis1-2/+2
given CXModule is a system one. llvm-svn: 208846
2014-05-14[liblang] Introduce clang_getModuleForFile, which given a CXFile header ↵Argyrios Kyrtzidis1-1/+15
file, returns the module that contains it, if one exists. llvm-svn: 208822
2014-05-11c-index-test: Don't leak diagnostic category text.Nico Weber1-0/+1
llvm-svn: 208503
2014-05-10Don't leak CXStrings for replacement fix-its in c-index-test.Nico Weber1-1/+0
The loop body used to contain a switch statement; it looks like r96685 replaced that with an if/else if/else but accidentally left one of the three break statements from the switch behind, skipping the clang_disposeString() call for replacements (and the rest of the loop too, which apparently doesn't make a differences for the test cases we have). r96685: http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20100215/027754.html This too might possibly the last leak in clang (PR19521). llvm-svn: 208483
2014-05-07c-index-test: Don't leak the strings returned by makeClientContainer().Nico Weber1-6/+37
llvm-svn: 208249
2014-05-07Make 2 functions static, remove unneeded cast, rewrap. No behavior change.Nico Weber1-10/+13
llvm-svn: 208247
2014-05-02[leaks] Parse the schema file every time we try to verify the XML. Yes,Chandler Carruth1-29/+16
this is wasteful, blah blah, but this is a test utility only. It turns out that without doing this, libxml2 will always leak a bunch of the XML data, and that is causing failures with LSan. This is also quite a bit simpler and I don't think it is slow enough to really be a show stopper. If someone yells about the runtime of c-index-test, we can do other things to try to mitigate it, but the current strategy wasn't working well. llvm-svn: 207882
2014-04-28libclang: split out the documentation comment APIAlp Toker1-0/+1
It's possible that the "comment AST" may be replaced or split out in the midterm, any anyway this makes the headers easier to read. Developers don't currently need to include "clang-c/Documentation.h" explicitly and there's no macro to test for availability yet. The raw comment and brief comment accessors have been kept in Index.h though brief support may also move here as a separate proposal. This is not a deprecation, just a gentle separation of concerns as we look to simplify the built-in representation of comment nodes and support external comment processors. llvm-svn: 207392
2014-04-26libclang: remove 'CXDiagnostic_Remark'Alp Toker1-1/+0
The change was landed without review or test cases. It trivially broke almost any stable application checking for Severity >= CXDiagnostic_Error or indeed any other kind of severity comparison upon encountering a 'remark'. Mapped to CXDiagnostic_Warning until a workable solution is proposed to the list that preserves API stability. (It's also not clear why the rest of r202475 wasn't simply implemented as a modifier to the existing 'warning' level.) llvm-svn: 207319
2014-04-24Fix two leaks in c-index-test found by LSan.Nico Weber1-6/+14
The result of clang_getCursorSpelling() needs to be clang_getCursorSpelling()ed. llvm-svn: 207073
2014-04-09Make c-index-test -test-print-type include pointeekind for pointer typesAnders Waldenborg1-0/+7
The idea is to give visibility to more type kinds, especially for getting a better grasp of what appears as unexposed type kind with libclang. Differential Revision: http://reviews.llvm.org/D3325 llvm-svn: 205921
2014-04-07libclang: add clang_CXXMethod_isConst API that allows to determine if a C++Dmitri Gribenko1-0/+2
member function or member function template is declared 'const' Patch by Kevin Funk with testcase updates by me. llvm-svn: 205714
2014-03-06Remove a dead store, add a FIXME for another.Richard Smith1-1/+1
llvm-svn: 203169
2014-02-28Add 'remark' diagnostic type in 'clang'Tobias Grosser1-0/+1
A 'remark' is information that is not an error or a warning, but rather some additional information provided to the user. In contrast to a 'note' a 'remark' is an independent diagnostic, whereas a 'note' always depends on another diagnostic. A typical use case for remark nodes is information provided to the user, e.g. information provided by the vectorizer about loops that have been vectorized. This patch provides the initial implementation of 'remarks'. It includes the actual definiton of the remark nodes, their printing as well as basic parameter handling. We are reusing the existing diagnostic parameters which means a remark can be enabled with normal '-Wdiagnostic-name' flags and can be upgraded to an error using '-Werror=diagnostic-name'. '-Werror' alone does not upgrade remarks. This patch is by intention minimal in terms of parameter handling. More experience and more discussions will most likely lead to further enhancements in the parameter handling. llvm-svn: 202475
2014-02-27libclang: New functions clang_Type_getNumTemplateArguments,Dmitri Gribenko1-3/+18
clang_Type_getTemplateArgument Note that these functions don't handle variadic templates -- see tests. Patch by Matthieu Nottale and Philippe Daouadi. llvm-svn: 202406
2014-02-17Fix gcc warning about C++ style comments.Patrik Hagglund1-1/+1
llvm-svn: 201512
2014-02-12libclang: report error code for bad PCH filesDmitri Gribenko1-86/+150
This commit improves libclang to report the error condition when CXTranslationUnit can not be created because of a stale PCH file. This allows the caller, for example, to rebuild the PCH file and retry the request. There two are APIs in libclang that return a CXTranslationUnit and don't support reporting detailed errors (the only error condition is a NULL result). For these APIs, a second, superior, version is introduced -- clang_createTranslationUnit2 and clang_parseTranslationUnit2. These functions return a CXTranslationUnit indirectly and also return an error code. Old functions are still supported and are nothing more than convenience wrappers that ignore extended error codes. As a cleanup, this commit also categorizes some libclang errors in the functions I had to modify anyway. llvm-svn: 201249
2014-02-12Add an option to allow Clang verify source files for a module only once duringDmitri Gribenko1-0/+10
the build When Clang loads the module, it verifies the user source files that the module was built from. If any file was changed, the module is rebuilt. There are two problems with this: 1. correctness: we don't verify system files (there are too many of them, and stat'ing all of them would take a lot of time); 2. performance: the same module file is verified again and again during a single build. This change allows the build system to optimize source file verification. The idea is based on the fact that while the project is being built, the source files don't change. This allows us to verify the module only once during a single build session. The build system passes a flag, -fbuild-session-timestamp=, to inform Clang of the time when the build started. The build system also requests to enable this feature by passing -fmodules-validate-once-per-build-session. If these flags are not passed, the behavior is not changed. When Clang verifies the module the first time, it writes out a timestamp file. Then, when Clang loads the module the second time, it finds a timestamp file, so it can compare the verification timestamp of the module with the time when the build started. If the verification timestamp is too old, the module is verified again, and the timestamp file is updated. llvm-svn: 201224
2013-12-06[libclang] Rename CXSkippedRanges to CXSourceRangeList to make it more ↵Argyrios Kyrtzidis1-2/+2
future-proof. Suggested by Alp Toker. llvm-svn: 196591
2013-12-05[c-index-test] For the '-remap-file' option use a comma for separator which ↵Argyrios Kyrtzidis1-7/+7
is more Windows friendly than the colon. llvm-svn: 196529