summaryrefslogtreecommitdiffstats
path: root/clang/test/Index/index-templates.cpp
Commit message (Collapse)AuthorAgeFilesLines
* [index] Add indexing for unresolved-using declarationsBen Langmuir2017-08-161-1/+1
| | | | | | | | | | | In dependent contexts we end up referencing these, so make sure they have USRs, and have their declarations indexed. For the most part they behave like typedefs, but we also need to worry about having multiple using declarations with the same "name". rdar://problem/33883650 llvm-svn: 311053
* Check that template template arguments match template template parametersRichard Smith2017-01-091-3/+3
| | | | | | | | | | | | | | | properly even when a non-type template parameter has a dependent type. Previously, if a non-type template parameter was dependent, but not dependent on an outer level of template parameter, we would not match the type of the parameter. Under [temp.arg.template], we are supposed to check that the types are equivalent, which means checking for syntactic equivalence in the dependent case. This also fixes some accepts-invalids when passing templates with auto-typed non-type template parameters as template template arguments. llvm-svn: 291512
* [libclang] Visit TypeAliasTemplateDeclSergey Kalinichev2015-11-151-0/+7
| | | | | | | | This makes TypeAliasTemplateDecl accessible via LibClang and python bindings Differential Revision: http://reviews.llvm.org/D13844 llvm-svn: 253166
* [libclang] Use same USR encoding for 'class' as 'struct'.Argyrios Kyrtzidis2014-12-081-8/+8
| | | | | | | | 'class' and 'struct' can be used interchangebly for forward references. Use the same encoding otherwise we may get into a weird situation where the USR for the same declaration is different based on whether the definition of the tag reference is visible or not. llvm-svn: 223632
* [libclang] Function templates can be 'overloaded' by return type, so encode ↵Argyrios Kyrtzidis2014-12-081-2/+2
| | | | | | | | the return type in the USR and handle DependentNameType in order to be able to distinguish them. llvm-svn: 223628
* Add libclang capabilities to retriete template arguments from specializations.Eli Bendersky2014-10-101-1/+11
| | | | | | | | | Includes Python bindings. Reviewed in http://reviews.llvm.org/D5621 Patch by Rob Springer llvm-svn: 219529
* Report a correct end location for nameless parameters.Benjamin Kramer2014-02-021-1/+1
| | | | | | | | | | | | | | | Ranges before: void test(void (*)(int), int, float); ~~~~~~~~~~~~~ ~~~~ ~~~~~~ Ranges after: void test(void (*)(int), int, float); ~~~~~~~~~~~~~ ~~~ ~~~~~ This does not change the actual location of the ParmVarDecl, it still points to the location where the name would be. PR17970. llvm-svn: 200640
* Expose more statement, expression, and declaration kinds in libclang,Douglas Gregor2011-10-051-1/+1
| | | | | | from Manuel Holtgrewe! llvm-svn: 141200
* Enable -fdelayed-template-parsing by default on Win32.Francois Pichet2011-09-011-2/+2
| | | | | | I had to force -fno-delayed-template-parsing on some Index tests because delayed template parsing will change the output of some tests. llvm-svn: 138942
* Added clang_getCursorReferenceNameRange to libclang to to retrieve parts ofDouglas Gregor2011-07-251-2/+2
| | | | | | a cursor reference, from Erik Verbruggen! llvm-svn: 135920
* Fixed source range for all DeclaratorDecl's.Abramo Bagnara2011-03-081-5/+5
| | | | llvm-svn: 127225
* Fixed TypedefDecl and TemplateTypeParameter source range.Abramo Bagnara2011-03-061-20/+20
| | | | llvm-svn: 127119
* Fixed source range for ClassTemplateSpecializationDecl.Abramo Bagnara2011-03-041-3/+3
| | | | llvm-svn: 126999
* Improved TemplateTypeParmDecl end location.Abramo Bagnara2011-03-041-2/+2
| | | | llvm-svn: 126996
* Fixed end location of NonTypeTemplateParamDecl.Abramo Bagnara2011-03-041-1/+1
| | | | llvm-svn: 126994
* Teach clang_getCursorReferenced() that aDouglas Gregor2010-11-051-1/+1
| | | | | | | | CXXConstructorExpr/CXXTemporaryObjectExpr references the constructor it calls. Then, tweak clang_getCursor() to prefer such a call over a type reference to the type being called. llvm-svn: 118297
* Substantially revise how clang computes the visibility of a declaration toJohn McCall2010-10-221-1/+1
| | | | | | | | more closely parallel the computation of linkage. This gets us to a state much closer to what gcc emits, modulo bugs, which will undoubtedly arise in abundance. llvm-svn: 117147
* Teach clang_getCursorType() about base specifiers and other referencesDouglas Gregor2010-10-021-1/+12
| | | | | | | | | | | to types. Also, teach clang_getTypeDeclaration() about template specializations, injected-class-names, and elaborated types. Fixes <rdar://problem/8506460>. llvm-svn: 115425
* Introduce a simple, substitution-based compression scheme for USRs, soDouglas Gregor2010-09-201-8/+19
| | | | | | | that redundant types don't result in super-long USRs. Fixes <rdar://problem/8447875>. llvm-svn: 114347
* When traversing an InitListExpr, there may not be a syntactic form;Douglas Gregor2010-09-171-0/+18
| | | | | | | check for NULL and visit the InitListExpr we have if there is no syntactic form. llvm-svn: 114203
* Introduce a new kind of cursor into libclang, which covers a referenceDouglas Gregor2010-09-131-0/+21
| | | | | | | | | to an "overloaded" set of declarations. This cursor kind works for unresolved references to functions/templates (e.g., a call within a template), using declarations, and Objective-C class and protocol forward declarations. llvm-svn: 113805
* Add libclang support for label statements, gotos, and taking theDouglas Gregor2010-09-101-1/+0
| | | | | | address of a label (GNU extension). llvm-svn: 113564
* In libclang, visit the nested-name-specifier and explicitly-specified ↵Douglas Gregor2010-09-021-5/+19
| | | | | | template arguments of a MemberExpr. llvm-svn: 112860
* Visit the nested-name-specifier and explicitly-specified templateDouglas Gregor2010-09-021-4/+13
| | | | | | arguments of a DeclRefExpr. llvm-svn: 112854
* Introduce a new libclang function,Douglas Gregor2010-09-021-3/+6
| | | | | | | | | clang_getSpecializedCursorTemplate(), which determines the template (or member thereof) that the given cursor specializes or from which it was instantiated. This routine can be used to establish a link between templates and their instantiations/specializations. llvm-svn: 112780
* Test visiting the template parameters of template template parameters,Douglas Gregor2010-09-011-0/+10
| | | | | | support for which came in with the last commit. llvm-svn: 112735
* Teach libclang to visit the default arguments of template parameters.Douglas Gregor2010-09-011-0/+20
| | | | llvm-svn: 112734
* Implement libclang support for using declarations. Clang actually usesDouglas Gregor2010-09-011-0/+19
| | | | | | | | | | | | | | | | three different kinds of AST nodes to represent using declarations: UsingDecl, UnresolvedUsingValueDecl, and UnresolvedUsingTypenameDecl. These three are collapsed into a single cursor kind for using declarations, since libclang clients don't need the distinction. Several related changes here: - Cursor visitation of the three AST nodes for using declarations - Proper source-range computation for these AST nodes - Using declarations have no USRs, since they don't actually declare any entities. llvm-svn: 112730
* Improve libclang indexing support for class template specializationsDouglas Gregor2010-09-011-7/+35
| | | | | | | | | | | | | in a few related ways: - Don't recurse into instantiations of templates. - Recurse into explicit specializations. - Visit the template arguments of an explicit specialization or explicit instantiation. - Include template specialization arguments in the USRs for class template specializations. llvm-svn: 112720
* Extend libclang with a new cursor kind that indicates a reference to aDouglas Gregor2010-08-311-1/+1
| | | | | | | | | template. Such cursors occur, for example, in template specialization types such as vector<int>. Note that we do not handle the super-interesting case where the template name is unresolved, e.g., within a template. llvm-svn: 112636
* Add libclang support for class template partial specializations,Douglas Gregor2010-08-311-0/+8
| | | | | | including a cursor kind, visitation, and USRs. llvm-svn: 112629
* Add a libclang cursor kind, visitation support and USR support for C++Douglas Gregor2010-08-311-0/+14
| | | | | | class templates. llvm-svn: 112627
* Implement basic support for indexing function templates inDouglas Gregor2010-08-311-0/+22
libclang. This includes: - Cursor kind for function templates, with visitation logic - Cursor kinds for template parameters, with visitation logic - Visitation logic for template specialization types, qualified type locations - USR generation for function templates, template specialization types, template parameter types. Also happens to fix PR7804, which I tripped across while testing. llvm-svn: 112604
OpenPOWER on IntegriCloud