Alex Lorenz
f41b21e384
[index] Index type source info for class specializations
...
rdar://31758344
llvm-svn: 301315
2017-04-25 15:13:42 +00:00
Alex Lorenz
5bf767c548
[index] Record the 'SpecializationOf' relation for function specializations
...
rdar://31603531
llvm-svn: 301310
2017-04-25 14:22:29 +00:00
Argyrios Kyrtzidis
b4b85f2033
[index] If the 'external_source_symbol' attribute indicates 'Swift' as the language then report it accordingly
...
llvm-svn: 301183
2017-04-24 14:52:00 +00:00
Alex Lorenz
a352ba0cbe
[index] The relation between the declarations in template specializations
...
that 'override' declarations in the base template should be recorded
This can be used for improved "go to definition" feature in Xcode.
rdar://31604739
Differential Revision: https://reviews.llvm.org/D32020
llvm-svn: 301180
2017-04-24 14:04:58 +00:00
Argyrios Kyrtzidis
f363474996
[index] Take into account the category's external_symbol attr for namespacing its methods
...
llvm-svn: 301051
2017-04-21 22:27:06 +00:00
Argyrios Kyrtzidis
6e5ca5be53
[index] Take advantage of 'external_source_symbol' attribute for indexing purposes
...
- Ignore decls marked as 'generated_declaration'
- Include the 'defined_in' in the USR for additional namespacing
llvm-svn: 300949
2017-04-21 05:42:46 +00:00
Argyrios Kyrtzidis
f932612fdf
[index] For 'transparent' tag typedefs, ignore their tag reference
...
llvm-svn: 300948
2017-04-21 05:42:40 +00:00
Alex Lorenz
f6071c34a5
[index] Record class template specializations using a new 'SpecializationOf'
...
relationship
rdar://31603531
Differential Revision: https://reviews.llvm.org/D32010
llvm-svn: 300832
2017-04-20 10:43:22 +00:00
Argyrios Kyrtzidis
a9876cafe2
[index] When indexing system headers make sure to report important reference relations
...
Even if we exclude plain reference occurrences, we should include relation-based references, like the 'base' one.
rdar://31010737
llvm-svn: 298622
2017-03-23 16:34:47 +00:00
Argyrios Kyrtzidis
3b25c91a9e
[index/AST] Determine if a typedef shares a name and spelling location with its underlying tag type
...
In such a case, as when using the NS_ENUM macro, for indexing purposes treat the typedef as 'transparent',
meaning we treat its references as symbols of the underlying tag symbol.
Also provide a libclang API to check for such typedefs.
llvm-svn: 298392
2017-03-21 16:56:02 +00:00
Argyrios Kyrtzidis
573624a9c2
[index] For C++ constructors/destructors, add references to the parent type where its name appears in definitions and declarations
...
Patch by Nathan Hawes!
https://reviews.llvm.org/D30730
llvm-svn: 298170
2017-03-17 23:41:59 +00:00
Argyrios Kyrtzidis
194b28ebb1
[index/AST] Add references for ObjC getter=/setter= property attributes and related property getter/setter role fixes
...
This enhances the AST to keep track of locations of the names in those ObjC property attributes, and reports them for indexing.
Patch by Nathan Hawes!
https://reviews.llvm.org/D30907
llvm-svn: 297972
2017-03-16 18:25:40 +00:00
Argyrios Kyrtzidis
a9706998f2
[index] Mark categories of test classes with the 'UnitTest' symbol property as well.
...
llvm-svn: 297133
2017-03-07 09:38:08 +00:00
Argyrios Kyrtzidis
a166a2b633
[AST/ObjC] Make ObjCCategoryImplDecl consistent with ObjCCategoryDecl and use the category name as its DeclName
...
This also addresses the badness in ObjCCategoryImplDecl's API, which was hiding NamedDecl's APIs with different meaning.
llvm-svn: 297131
2017-03-07 09:26:07 +00:00
Argyrios Kyrtzidis
898c241b26
[index] C++: Improve handling of typedefs as base names in C++ class declarations
...
Report the typedef as reference, and desugar it to report the underlying class as an
implicit 'base' reference.
Reporting the underlying base class for 'base' relations matches the ObjC handling and
leads to a simpler model.
llvm-svn: 296975
2017-03-04 17:54:56 +00:00
Argyrios Kyrtzidis
266cfa30dc
[index] ObjC: Improve handling of typedefs as base names in ObjC interface declarations
...
- Report the typedef reference occurrence
- Mark super or protocol references as 'implicit' when they come from a typedef.
llvm-svn: 296974
2017-03-04 17:54:53 +00:00
Argyrios Kyrtzidis
6d1a15b2d4
[index] Add 'Parameter' symbol kind and 'Local' symbol property to distinguish function-local symbols
...
Parameters have a 'child' relation to their function/method.
Also add an option '-include-locals' to 'c-index-test core' to enable indexing of function-local symbols.
Original patch from Nathan Hawes with some changes by me.
https://reviews.llvm.org/D30304
llvm-svn: 296282
2017-02-26 05:37:56 +00:00
Argyrios Kyrtzidis
74790484b5
[index] Improvde how we handle synthesized ObjC properties and the associated ivars.
...
Related synthesized properties with the ivar they use with the 'accessor' relation, and make sure
we mark them 'implicit' when appropriate.
Patch by Nathan Hawes!
https://reviews.llvm.org/D30012
llvm-svn: 295416
2017-02-17 04:49:41 +00:00
Argyrios Kyrtzidis
7d90ed0ac9
[index] USR generation: use getTemplateArgs() instead of getTemplateInstantiationArgs()
...
Otherwise we may end up creating a different USR for the definition of a function, vs its declaration.
llvm-svn: 295191
2017-02-15 16:16:27 +00:00
Argyrios Kyrtzidis
a38cb204a3
[c-index-test] Provide capability to index module file imports and dump their input files.
...
This ensures the capability to index a module file using an existing ASTReader from a compiler instance or ASTUnit.
llvm-svn: 293461
2017-01-30 06:05:58 +00:00
Argyrios Kyrtzidis
5fab854082
[c-index-test] Provide capability for 'c-index-test core' to dump symbol information from a PCH/module file.
...
llvm-svn: 293416
2017-01-29 04:50:35 +00:00
Argyrios Kyrtzidis
aee15fb204
[index] When indexing an ObjC method declaration use its base name for the location.
...
Instead of using the location of the beginning '-'/'+'.
This is consistent with location used for function decls and ObjC method calls where we use the base name as the location as well.
llvm-svn: 293134
2017-01-26 02:11:50 +00:00
Argyrios Kyrtzidis
2a89c8594d
[index] Introduce symbol subkinds to mark an accessor getter or setter.
...
llvm-svn: 291707
2017-01-11 21:42:48 +00:00
Argyrios Kyrtzidis
38004319fa
[index] Ignore invalid ObjC categories.
...
We currently are unable to get a USR for those and it doesn't seem useful to try to index them.
llvm-svn: 291705
2017-01-11 21:08:31 +00:00
Argyrios Kyrtzidis
de0f50886f
[index] Add 'IBTypeOf' relation for ObjC methods marked with IBAction and properties with IBOutletCollection.
...
llvm-svn: 291703
2017-01-11 21:01:07 +00:00
Argyrios Kyrtzidis
df60aa83a3
[index] Add 'contained-by' relation between references and their lexical container.
...
llvm-svn: 291700
2017-01-11 20:51:10 +00:00
Argyrios Kyrtzidis
e24f5e204b
[index] Introduce SymbolSubKind for reporting language-specific details.
...
Initially reports if a constructor symbol is a copy or move constructor.
llvm-svn: 291409
2017-01-08 23:21:35 +00:00
Argyrios Kyrtzidis
f42032abde
[index] Add SymbolSubKind for the GKInspectable annotation.
...
llvm-svn: 286518
2016-11-10 23:27:11 +00:00
Argyrios Kyrtzidis
f95a000421
[index] Fix issue with protocol name locations in conformance list of an ObjC class when they come from a typedef.
...
The ObjC class protocol list assumes there is an associated location for each protocol but no location is provided
when the protocol list comes from a typedef, and we end up with a buffer overflow when trying to get locations for the protocol names.
Fixes crash of rdar://28980278.
llvm-svn: 286331
2016-11-09 02:47:07 +00:00
Argyrios Kyrtzidis
9d8ab72a69
[index] Handle properly C++14's template variables.
...
- Infer the right symbol kind.
- Provide a templated USR, similar to how we handle class templates.
rdar://28980398
llvm-svn: 286154
2016-11-07 21:20:15 +00:00
Argyrios Kyrtzidis
3e5b61f7da
[index] Make sure to mark class template symbols as having 'generic' sub-kind.
...
llvm-svn: 286153
2016-11-07 21:20:08 +00:00
Argyrios Kyrtzidis
f12918d218
[index] Fix assertion hit when handling a declaration of C++'s 'operator new' function.
...
Part of this is to allow creating a USR for the canonical decl of that which is implicit and does
not have a source location.
rdar://28978992
llvm-svn: 285868
2016-11-02 23:42:33 +00:00
Argyrios Kyrtzidis
67eda2ad1d
[index] Fix repeated visitation of the same InitListExpr for indexing.
...
It was visited multiple times unnecessarily.
rdar://28985038
llvm-svn: 285647
2016-10-31 22:12:12 +00:00
Argyrios Kyrtzidis
806faaf42b
[index] Fixes for locations and relations in Objective C categories and getters/setters
...
- Add entries for protocols on categories
- Add relation between categories and class they extend
- Add relation between getters/setters and their corresponding property
- Use category name location as the location of category decls/defs if it has one
llvm-svn: 285120
2016-10-25 21:11:22 +00:00
Argyrios Kyrtzidis
f60c395e84
[index] Fix crash with indexing designated init expressions inside templates.
...
rdar://27452869
llvm-svn: 277570
2016-08-03 05:38:53 +00:00
Ben Langmuir
6aed6b4f01
[index] Index system ImportDecls even when there is a DeclarationsOnly filter
...
Whether we call an ImportDecl a decl or a reference symbol role is
somewhat academic, but in practice it's more like a declaration because
it is interesting even to consumers who wouldn't care about references.
Most importantly, we want to report the module dependencies of system
modules even when we have declaration-only filtering.
rdar://problem/27134855
llvm-svn: 275454
2016-07-14 18:51:55 +00:00
Argyrios Kyrtzidis
0642a21f1d
[index] Add SymbolSubKinds for ObjC IB annotations.
...
llvm-svn: 267118
2016-04-22 07:21:16 +00:00
Argyrios Kyrtzidis
f30c8c621f
[index] Add a SymbolSubKind for an ObjC unit test.
...
llvm-svn: 267117
2016-04-22 07:21:10 +00:00
Argyrios Kyrtzidis
66c49f78a3
[index] Fix regression where ObjC method declarations may mistakenly get indexed as definition.
...
rdar://25372906
llvm-svn: 265042
2016-03-31 20:18:22 +00:00
Ben Langmuir
443913f4d6
[index] Remove redundancy between symbol kind and language
...
Condense the ObjCKIND and CXXKIND options into just KIND, since the
language was already specified on a per-symbol basis and this
information was redundant. This only changes the internal
representation; naturally the libclang interface remains the same.
llvm-svn: 264423
2016-03-25 17:01:59 +00:00
Argyrios Kyrtzidis
6377e4e09a
[index] Make sure that declarations of builtin functions are indexed.
...
rdar://25154630
llvm-svn: 263689
2016-03-17 04:28:19 +00:00
Argyrios Kyrtzidis
0ad65ac816
[index] Fix assertion hit when indexing re-declarations of built-in functions.
...
llvm-svn: 262984
2016-03-09 02:12:40 +00:00
Argyrios Kyrtzidis
7332106499
[index] Distinguish USRs of anonymous enums by using their first enumerator.
...
rdar://24609949.
llvm-svn: 262695
2016-03-04 07:17:53 +00:00
Argyrios Kyrtzidis
2682f9e5de
[index] Include parameter types in the USRs for C functions marked with 'overloadable' attribute.
...
llvm-svn: 262694
2016-03-04 07:17:48 +00:00
Argyrios Kyrtzidis
9c99867386
[index] In ObjC++ handle objc type parameters for function USRs.
...
llvm-svn: 262693
2016-03-04 07:17:43 +00:00
Argyrios Kyrtzidis
8757fc5594
[index] Ignore ObjCTypeParamDecls during indexing.
...
llvm-svn: 262686
2016-03-04 04:24:32 +00:00
Argyrios Kyrtzidis
34a0c1a572
[index] Report references of ObjC super class/protocols in interfaces and protocols.
...
llvm-svn: 262584
2016-03-03 05:33:54 +00:00
Argyrios Kyrtzidis
113387e08e
[index] Print and test module import references.
...
llvm-svn: 262208
2016-02-29 07:56:07 +00:00
Argyrios Kyrtzidis
a8b51c1e20
[index] Add a caller relation for a call reference.
...
llvm-svn: 262207
2016-02-29 07:56:00 +00:00
Argyrios Kyrtzidis
c97c7c88c0
[AST/RecursiveASTVisitor] Correction so that dataTraverseStmtPost will get called after the statement has been visited.
...
Fixes the indexing client of this.
llvm-svn: 262206
2016-02-29 07:55:55 +00:00
Argyrios Kyrtzidis
d97ec18fe4
[index] Use ',' to separate symbol roles when printing.
...
llvm-svn: 262205
2016-02-29 07:55:51 +00:00
Argyrios Kyrtzidis
d571908445
[AST/index] Introduce an option 'SuppressTemplateArgsInCXXConstructors' in printing policy.
...
Enable it for USRs and names when indexing.
Forward references can have different template argument names; including them
makes USRs and names unstable, since the name depends on whether we saw a forward reference or not.
llvm-svn: 260866
2016-02-15 01:32:36 +00:00
Argyrios Kyrtzidis
8756107f93
[test/Index] Set a specific target for the test.
...
llvm-svn: 260861
2016-02-14 22:38:38 +00:00
Argyrios Kyrtzidis
ca741cef3e
[index] Factor libclang's functionality to determing the mangled name of symbols into the clangIndex library.
...
llvm-svn: 260858
2016-02-14 22:30:14 +00:00
Argyrios Kyrtzidis
6fdcb9c590
[index] Enhance c-index-test tool and have it link and test the clangIndex library directly.
...
llvm-svn: 260842
2016-02-14 06:39:11 +00:00