Daniel Dunbar
98f2067ca4
Update CMake for CallGraph.cpp move.
...
llvm-svn: 90443
2009-12-03 09:14:19 +00:00
Daniel Dunbar
19a30ca8c0
Fix layering violation by moving Analysis/CallGraph to Index
...
llvm-svn: 90424
2009-12-03 07:20:04 +00:00
Benjamin Kramer
337e3a5fea
Remove remaining VISIBILITY_HIDDEN from anonymous namespaces.
...
llvm-svn: 90044
2009-11-28 19:45:26 +00:00
Ted Kremenek
0469b7ea00
Add special clang_getCursor() support for @class . Handles <rdar://problem/7383421>.
...
llvm-svn: 89183
2009-11-18 02:02:52 +00:00
Douglas Gregor
120f6a6675
Silence some warnings produced by Clang, and add a missing header
...
llvm-svn: 89051
2009-11-17 06:14:37 +00:00
John McCall
4c98fd8953
Preserve type source information in sizeof/alignof expressions, and pass it
...
through to indexing.
llvm-svn: 86018
2009-11-04 07:28:41 +00:00
Steve Naroff
58bd62d190
Remove _clang_initCXLookupHint() and _clang_getCursorWithHint(). Related to <rdar://problem/7310688>.
...
Localize the optimization to ResolveLocationInAST(). The last valid AST location is now stored with ASTUnit. There still isn't optimal, however it's an improvement (with a much cleaner API). Having the client manage an "hint" is error prone and complex.
I wanted to land the major changes before finishing up the optimizations.
llvm-svn: 85425
2009-10-28 20:44:47 +00:00
John McCall
703a3f8a7b
Preserve type source information in TypedefDecls. Preserve it across
...
template instantiation. Preserve it through PCH. Show it off to the indexer.
I'm healthily ignoring the vector type cases because we don't have a sensible
TypeLoc implementation for them anyway.
llvm-svn: 84994
2009-10-24 08:00:42 +00:00
John McCall
fc93cf9777
When building types from declarators, instead of building two types (one for
...
the DeclaratorInfo, one for semantic analysis), just build a single type whose
canonical type will reflect the semantic analysis (assuming the type is
well-formed, of course).
To make that work, make a few changes to the type system:
* allow the nominal pointee type of a reference type to be a (possibly sugared)
reference type. Also, preserve the original spelling of the reference type.
Both of these can be ignored on canonical reference types.
* Remove ObjCProtocolListType and preserve the associated source information on
the various ObjC TypeLocs. Preserve the spelling of protocol lists except in
the canonical form.
* Preserve some level of source type structure on parameter types, but
canonicalize on the canonical function type. This is still a WIP.
Drops code size, makes strides towards accurate source location representation,
slight (~1.7%) progression on Cocoa.h because of complexity drop.
llvm-svn: 84907
2009-10-22 22:37:11 +00:00
Steve Naroff
20bad0b7c6
Extend clang_getCursor() to take a 'relativeDecl' argument (so speed up searching). Without a 'relativeDecl', the algorithm is n-squared. For example, running the following command on 'Large.m' takes hours without a 'relatvieDecl'.
...
snaroff% time ../../Debug/bin/c-index-test Large.ast all > Large.out
snaroff% cat Large.m
#import <Cocoa/Cocoa.h>
#import <QuickTime/QuickTime.h>
#import <OpenGL/OpenGL.h>
With a 'relativeDecl', it takes <30 seconds:-)
llvm-svn: 84760
2009-10-21 13:56:23 +00:00
Daniel Dunbar
2c422dc9ca
Move clients to use IdentifierInfo::getNameStart() instead of getName()
...
llvm-svn: 84436
2009-10-18 20:26:12 +00:00
John McCall
1700197e65
Clone the full Type hierarchy into the TypeLoc hierarchy. Normalize
...
TypeLoc class names to be $(Type classname)Loc. Rewrite the visitor.
Provide skeleton implementations for all the new TypeLocs.
Handle all cases in PCH. Handle a few more cases when inserting
location information in SemaType.
It should be extremely straightforward to add new location information
to existing TypeLoc objects now.
llvm-svn: 84386
2009-10-18 01:05:36 +00:00
Douglas Gregor
01249503fe
Installation of Clang libraries and headers, from Axel Naumann!
...
llvm-svn: 83582
2009-10-08 22:15:31 +00:00
Argyrios Kyrtzidis
8da9ce6328
Pull TypeLocVisitor into its own header file.
...
llvm-svn: 83112
2009-09-29 21:27:32 +00:00
Argyrios Kyrtzidis
4361bc1b43
Keep track of type references in DeclReferenceMap.
...
llvm-svn: 83111
2009-09-29 21:26:53 +00:00
Argyrios Kyrtzidis
9c28a3d13c
In ASTVisitor, call the correct base methods.
...
llvm-svn: 83110
2009-09-29 21:26:35 +00:00
Argyrios Kyrtzidis
f881301d3a
Resolve a source location inside the return type of a functon.
...
llvm-svn: 83101
2009-09-29 19:58:16 +00:00
Argyrios Kyrtzidis
05677cae08
Resolve a source location that is inside a type declarator.
...
llvm-svn: 83098
2009-09-29 19:45:41 +00:00
Argyrios Kyrtzidis
4cbe85904c
Modify ASTLocation and apart from being a Decl or Stmt, allow it to also be:
...
-A NamedDecl reference
-A TypeLoc
llvm-svn: 83095
2009-09-29 19:44:27 +00:00
Argyrios Kyrtzidis
81aba1fe53
Add more const-goodness to ASTLocation.
...
llvm-svn: 83087
2009-09-29 19:39:53 +00:00
Mike Stump
11289f4280
Remove tabs, and whitespace cleanups.
...
llvm-svn: 81346
2009-09-09 15:08:12 +00:00
Douglas Gregor
76d8c5725f
Don't install Clang libraries.
...
llvm-svn: 79824
2009-08-23 05:02:18 +00:00
Argyrios Kyrtzidis
260a4703a9
For a CXXOperatorCallExpr, fix the order that StmtLocResolver uses to check subexpressions.
...
llvm-svn: 77713
2009-07-31 19:02:11 +00:00
Ted Kremenek
118cef36b8
Lexically order files.
...
llvm-svn: 77607
2009-07-30 17:41:23 +00:00
Argyrios Kyrtzidis
fc2ed30ab8
Fix Selector <-> GlobalSelector conversion.
...
llvm-svn: 77575
2009-07-30 03:42:08 +00:00
Eli Friedman
13ddd8514f
Fix gcc warning.
...
llvm-svn: 77555
2009-07-30 00:11:31 +00:00
Argyrios Kyrtzidis
bd92767014
Add support for ObjC message expressions, in the Analyzer:
...
-Accept an ObjC method and find all message expressions that this method may respond to.
-Accept an ObjC message expression and find all methods that may respond to it.
llvm-svn: 77551
2009-07-30 00:03:55 +00:00
Argyrios Kyrtzidis
ce60c5ea60
Update CMake.
...
llvm-svn: 77548
2009-07-30 00:02:19 +00:00
Argyrios Kyrtzidis
2eff90515f
Support ObjC methods as Entities.
...
llvm-svn: 77547
2009-07-29 23:41:46 +00:00
Argyrios Kyrtzidis
d70a92139f
Index the selectors and provide the translation units that contain them
...
through the IndexProvider.
llvm-svn: 77543
2009-07-29 23:41:18 +00:00
Argyrios Kyrtzidis
b8470e4f75
Introduce SelectorMap whose purpose is to map selectors to objc methods and message exprs,
...
inside a particular ASTContext.
llvm-svn: 77541
2009-07-29 23:40:58 +00:00
Argyrios Kyrtzidis
34be01b9f4
Find references inside blocks.
...
llvm-svn: 77540
2009-07-29 23:40:48 +00:00
Argyrios Kyrtzidis
c3deb79049
Use helper class ASTVisitor to fully traverse an AST.
...
llvm-svn: 77539
2009-07-29 23:40:39 +00:00
Argyrios Kyrtzidis
d219a9a763
Introduce the GlobalSelector class in the Indexing library.
...
GlobalSelector is an ASTContext-independent way to refer to Objective C selectors.
llvm-svn: 77538
2009-07-29 23:40:32 +00:00
Argyrios Kyrtzidis
ca8a0e24cb
Use an IdentifierTable for names used for Entities.
...
llvm-svn: 77537
2009-07-29 23:40:21 +00:00
Argyrios Kyrtzidis
91d3df0b53
-Introduce the idx::Analyzer class used for getting indexing information, like finding
...
references of a declaration across translation units.
-Modify the index-test tool to use it.
llvm-svn: 77536
2009-07-29 23:40:14 +00:00
Argyrios Kyrtzidis
a82e8848ee
Introduce TULocation and TULocationHandler classes.
...
TULocation is like ASTLocation but also contains the TranslationUnit* that
the ASTLocation originated from.
llvm-svn: 77535
2009-07-29 23:40:02 +00:00
Argyrios Kyrtzidis
af79296645
Modify the Indexer class so that it can return the TranslationUnit that internal
...
decls originated from.
llvm-svn: 77534
2009-07-29 23:39:52 +00:00
Argyrios Kyrtzidis
bc6c64de44
Constify ASTLocation::print.
...
llvm-svn: 77532
2009-07-29 23:39:35 +00:00
Argyrios Kyrtzidis
f1a0fd852f
Introduce a helper template for the Handler classes and use it instead
...
of the iterator of the Indexer class.
llvm-svn: 77528
2009-07-29 23:39:03 +00:00
Argyrios Kyrtzidis
d3e037ff89
Add an assert.
...
llvm-svn: 77527
2009-07-29 23:38:51 +00:00
Argyrios Kyrtzidis
14df96c730
Accept Handler objects in parameters as references.
...
Reinforces that they shouldn't be null and it's a bit more natural when
they are passed as stack objects.
llvm-svn: 77526
2009-07-29 23:38:45 +00:00
Argyrios Kyrtzidis
9ddd99ade7
Rename EntityHandler::HandleEntity to Handle.
...
llvm-svn: 77525
2009-07-29 23:38:35 +00:00
Argyrios Kyrtzidis
dd9ee4aa04
-Make IndexProvider an abstract interface for getting indexing information.
...
-Introduce Indexer as an IndexProvider implementation.
llvm-svn: 77524
2009-07-29 23:38:21 +00:00
Zhongxing Xu
6c82313375
Constify methods.
...
llvm-svn: 76939
2009-07-24 03:38:27 +00:00
Zhongxing Xu
fdd52922c2
constify methods.
...
llvm-svn: 76873
2009-07-23 08:32:25 +00:00
Argyrios Kyrtzidis
8274ad5281
Remove the ASTContext parameter from Entity::getPrintableName().
...
llvm-svn: 76546
2009-07-21 07:52:21 +00:00
Argyrios Kyrtzidis
3b4e2a7621
Keep only canonical Decls in Entities.
...
llvm-svn: 76532
2009-07-21 02:10:32 +00:00
Argyrios Kyrtzidis
05ac8276cf
Change the semantics for Entity.
...
Entity can now refer to declarations that are not visible outside the translation unit.
It is a wrapper of a pointer union, it's either a Decl* for declarations that don't
"cross" translation units, or an EntityImpl* which is associated with the specific "visible" Decl.
Included is a test case for handling fields across translation units.
llvm-svn: 76515
2009-07-21 00:07:06 +00:00
Argyrios Kyrtzidis
b78139f74d
Handle references from ObjCIvarRefExprs.
...
llvm-svn: 76507
2009-07-21 00:05:38 +00:00
Zhongxing Xu
34e0370502
The children statements might be NULL. Check for this case in
...
isContainedInStatement().
llvm-svn: 76408
2009-07-20 08:28:49 +00:00
Argyrios Kyrtzidis
d6bf03c272
Introduce ASTLocation::getReferencedDecl(), for getting the declaration that the ASTLocation references.
...
llvm-svn: 76336
2009-07-18 21:17:58 +00:00
Argyrios Kyrtzidis
fb63b0a317
Handle invalid ASTLocations instead of asserting.
...
llvm-svn: 76335
2009-07-18 21:17:43 +00:00
Argyrios Kyrtzidis
194a9d8e73
Remove StmtLocResolver::VisitObjCIvarRefExpr, it was only there to avoid returning an implicit 'self' instead of the ivar.
...
Since implicit 'self' no longer has a source location, it's not needed. (plus we also want to check for a 'self' that is visible in source code)
llvm-svn: 76296
2009-07-18 08:49:56 +00:00
Argyrios Kyrtzidis
5614aef776
Move the functionality of ASTContext::getCanonicalDecl(), into a virtual method Decl::getCanonicalDecl().
...
llvm-svn: 76273
2009-07-18 00:34:07 +00:00
Argyrios Kyrtzidis
e842bd16ce
Resolve a location that is inside an ObjCMethodDecl.
...
llvm-svn: 76272
2009-07-18 00:33:52 +00:00
Argyrios Kyrtzidis
38d83defbe
Make ASTLocation accept a Stmt that is inside an ObjCMethodDecl.
...
llvm-svn: 76271
2009-07-18 00:33:46 +00:00
Argyrios Kyrtzidis
340f8af489
Search through all Decls that are DeclContexts.
...
llvm-svn: 76270
2009-07-18 00:33:40 +00:00
Zhongxing Xu
9d05213899
Rename Entity::getName() to Entity::getPrintableName() to make its purpose
...
more obvious.
llvm-svn: 76167
2009-07-17 07:49:44 +00:00
Zhongxing Xu
3436f58e40
As suggested by Argyrios, revert r76159 and make "FindImmediateParent"
...
a public static method of ASTLocation.
llvm-svn: 76166
2009-07-17 07:36:20 +00:00
Zhongxing Xu
d25ea831b2
Relax the assertion in ASTLocation's ctor: if the decl is not the immediate
...
parent of the stmt, find the immediate parent for the stmt.
This is because sometimes we cannot get the immediate decl of the stmt when
creating the ASTLocation. We can only get a parent of the stmt.
llvm-svn: 76159
2009-07-17 06:58:08 +00:00
Argyrios Kyrtzidis
95d401de9d
If we are not doing a Debug build, no need for the debugging print methods.
...
llvm-svn: 76138
2009-07-17 01:20:03 +00:00
Argyrios Kyrtzidis
bffa89f42c
Check whether the IdentifierInfo is null, before using it.
...
llvm-svn: 76136
2009-07-17 01:19:03 +00:00
Zhongxing Xu
12b1d137c2
Add getName() method to Entity.
...
llvm-svn: 75740
2009-07-15 04:39:21 +00:00
Argyrios Kyrtzidis
307b0717f7
In ResolveLocationInAST, handle locations that are inside TagDecl definitions.
...
llvm-svn: 75594
2009-07-14 03:18:17 +00:00
Argyrios Kyrtzidis
a28d145cbb
In DeclReferenceMap, map FieldDecls to the MemberExprs that reference them.
...
llvm-svn: 75593
2009-07-14 03:18:09 +00:00
Chris Lattner
c9f6c334f0
fix file headers.
...
llvm-svn: 75437
2009-07-12 22:33:12 +00:00
Argyrios Kyrtzidis
6dd7181ed4
Simplify a bit by using functions instead of checking enum values. No functionality change.
...
llvm-svn: 75221
2009-07-10 03:41:26 +00:00
Argyrios Kyrtzidis
3f50f7e853
Refactor DeclLocResolver/StmtLocResolver into a more functional style by removing the search state
...
and by having their Visit* methods return the ASTLocation directly.
llvm-svn: 74887
2009-07-07 00:53:31 +00:00
Argyrios Kyrtzidis
26e8b9c9c1
Update CMake files.
...
llvm-svn: 74864
2009-07-06 21:38:29 +00:00
Argyrios Kyrtzidis
b8020f0833
Some changes to ASTLocation's methods
...
-Change hasStmt() to isStmt()
-Add isDecl()
-Add getSourceRange()
llvm-svn: 74862
2009-07-06 21:35:20 +00:00
Argyrios Kyrtzidis
f24249554b
Move the 'ResolveLocationInAST' function from the Frontend library to the Index library.
...
Also, cut down its comments; more comments will be added to ASTLocation.
llvm-svn: 74860
2009-07-06 21:35:02 +00:00
Argyrios Kyrtzidis
63afa49add
Move ASTLocation and DeclReferenceMap from the AST library to the Index library.
...
llvm-svn: 74859
2009-07-06 21:34:47 +00:00
Argyrios Kyrtzidis
fe37cc831b
Introduce the 'Index' library.
...
Its purpose is to provide the basic infrastructure for cross-translation-unit analysis like indexing, refactoring, etc.
Currently it is very "primitive" and with no type-names support. It can provide functionality like
"show me all references of this function from these translation units".
llvm-svn: 74802
2009-07-05 22:22:19 +00:00