Commit Graph

225 Commits

Author SHA1 Message Date
Douglas Gregor 99fe2ad8c8 Tweak code-completion results by suppressing class template
specializations and class template partial specializations (they're
never named directly). Also, member access expressions only refer to
value declarations (fields, functions, enumerators, etc.) and
Objective-C property declarations; filter out everything else.

llvm-svn: 91133
2009-12-11 17:31:05 +00:00
Fariborz Jahanian 73fab4f3f4 Patch to fix a crash trying to access a category name in
objective-c++ mode and also removed dead-code in this area.
(fixes radar 7456710).

llvm-svn: 91081
2009-12-11 00:26:36 +00:00
Douglas Gregor 9225369891 When in an Objective-C instance method, super is a valid code-completion result
llvm-svn: 90758
2009-12-07 09:54:55 +00:00
Douglas Gregor bc7c5e471a Code completion for Objective-C @ keywords that are statements or expressions
llvm-svn: 90757
2009-12-07 09:51:25 +00:00
Douglas Gregor f48706c787 Code completion for Objective-C @ directives
llvm-svn: 90756
2009-12-07 09:27:33 +00:00
Daniel Dunbar 72fe5b1bcc CIndex: For the time being, don't return translation units if we encounter an error during parsing.
- We need to be more careful in the rest of CIndex if we are to handle
   possibly-invalid ASTs, and don't have much experience with this yet.

llvm-svn: 90643
2009-12-05 02:17:18 +00:00
Daniel Dunbar 644dca07b9 ASTUnit/CIndex: Explicitly track the top-level decls when using an ASTUnit made
from a source file.
 - This allows CIndex to avoid iterating over all the top-level decls when using
   a PCH, which means we deserialize far fewer decls.

llvm-svn: 90559
2009-12-04 08:17:33 +00:00
Daniel Dunbar c449ed3ebf XFAIL this on Win32 for the time being.
llvm-svn: 90448
2009-12-03 11:12:50 +00:00
Douglas Gregor 9485bf9538 Extend the CIndex code-completion API to perform code completion
involving unsaved files, using the -remap-file= functionality recently
added to clang-cc.

llvm-svn: 90314
2009-12-02 09:21:34 +00:00
Daniel Dunbar 5442bfcd5a c-index-test: Split "function scanning" behavior into its own "filter" -- its
quite slow and doesn't really stress the APIs people should really use.
 - I'm not even sure if this mode is still useful given the other scanning mode;
   Steve?

llvm-svn: 90193
2009-12-01 02:35:37 +00:00
Douglas Gregor 156d50c529 Add missing testcase for Objective-C p@property getter/setter completions
llvm-svn: 89335
2009-11-19 07:58:03 +00:00
Douglas Gregor 1b605f7537 Improve code completion for Objective-C message sends, so that we
provide completion results before each keyword argument, e.g.,

  [foo Method:arg WithArg1:arg1 WithArg2:arg2]

We now complete before "WithArg1" and before "WithArg2", in addition
to completing before "Method".

llvm-svn: 89290
2009-11-19 01:08:35 +00:00
Douglas Gregor e6078dab99 Improve the accuracy of code completion for the attributes of an @property declaration, so that we don't produce completions for attributes that would conflict with already-specified attributes
llvm-svn: 89281
2009-11-19 00:14:45 +00:00
Douglas Gregor 45f83ee87d Improve code-completion results for the flags in an @property
declaration by providing patterns for "getter = <method>" and "setter
= <method>". As part of this, invented a new "pattern" result kind
that is merely a semantic string. The "pattern" result kind should
help with other kinds of code templates.

llvm-svn: 89277
2009-11-19 00:01:57 +00:00
Douglas Gregor 52e78bd992 Code completion after @dynamic
llvm-svn: 89265
2009-11-18 22:56:13 +00:00
Douglas Gregor 5d6498827b Code completion for Objective-C @synthesized.
llvm-svn: 89259
2009-11-18 22:32:06 +00:00
Daniel Dunbar 9b33352856 Update test to stop scanning things in the predefines buffer, this isn't adding
value.

llvm-svn: 89235
2009-11-18 20:19:44 +00:00
Douglas Gregor 5d34fd3674 Implement code completion for Objective-C category names in @interface
and @implementation declarations.

llvm-svn: 89223
2009-11-18 19:08:43 +00:00
Douglas Gregor 49c22a74eb Code completion for Objective-C class names after @interface,
@implementation, and in the declaration of the superclass of an
@interface.

llvm-svn: 89207
2009-11-18 16:26:39 +00:00
Benjamin Kramer fb4ff27367 Update index tests for r89203.
llvm-svn: 89204
2009-11-18 14:20:01 +00:00
Douglas Gregor 5b4671c328 Code completion after @property, providing the names of forward-declared properties
llvm-svn: 89196
2009-11-18 04:49:41 +00:00
Douglas Gregor 23f21f7ba3 Rename code-completion test to actually make sense
llvm-svn: 89195
2009-11-18 04:41:01 +00:00
Douglas Gregor baf6961ed4 Code completion for Objective-C properly lists
llvm-svn: 89194
2009-11-18 04:19:12 +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 9291bade4f Code completion for member accesses that involve Objective-C properties and instance variables
llvm-svn: 89182
2009-11-18 01:29:26 +00:00
Douglas Gregor a3329fa05e Finish code completion for Objective-C message sends
llvm-svn: 89168
2009-11-18 00:06:18 +00:00
Douglas Gregor bab2b3c70f Refactor code-completion support for message sends, collecting the
code to find and add Objective-C methods (starting at an
ObjCContainerDecl) into a single, static function. Also, make sure
that we search into the implementations of classes and categories to
find even more methods.

llvm-svn: 89163
2009-11-17 23:22:23 +00:00
Ted Kremenek 2df52dca49 Add c-index-test mode "-test-file-scan", which scans a source file and calls clang_getCursor() on every character.
llvm-svn: 89136
2009-11-17 19:37:36 +00:00
Ted Kremenek 1e8a6f8527 Fix test case.
llvm-svn: 89135
2009-11-17 19:36:36 +00:00
Ted Kremenek 92978f8122 Rename test.
llvm-svn: 89132
2009-11-17 19:29:41 +00:00
Ted Kremenek ef3339b7d4 Clean up c-index-test command line usage a bit by requiring a "-test-load-tu" option when testing clang_loadTranslationUnit(). Running c-index-test without the correct arguments now also prints a useful summary of its correct usage.
llvm-svn: 89115
2009-11-17 18:09:14 +00:00
Douglas Gregor 8ce3321eb6 Implement code completion for Objective-C message sends to "super".
llvm-svn: 89112
2009-11-17 17:59:40 +00:00
Douglas Gregor d3c5d79837 Augment code-completion results to provide argument names and
placeholder arguments for Objective-C message sends. 

llvm-svn: 89103
2009-11-17 16:44:22 +00:00
Daniel Dunbar f386ce5429 ... and add back a few more triple forces.
llvm-svn: 89088
2009-11-17 10:27:58 +00:00
Daniel Dunbar fba0b44d35 Use -fblocks and -fobjc-nonfragile-abi when that is what is being tested, instead of forcing the triple.
llvm-svn: 89072
2009-11-17 09:04:12 +00:00
Ted Kremenek 4c4d643b6e Have clang_getCursorSource() return NULL when the source location is invalid or refers to a built-in buffer. Implements <rdar://problem/7296243>.
llvm-svn: 89044
2009-11-17 05:31:58 +00:00
Daniel Dunbar 5e1415156a Update test, I don't know why this changed but seems innocuous.
llvm-svn: 88983
2009-11-16 22:38:57 +00:00
Douglas Gregor 8caea94c74 Make sure that we look into nested, transparent declaration contexts
when looking for a name within a given DeclContext. Now enumerators
will show up in code-completion results.

llvm-svn: 86591
2009-11-09 21:35:27 +00:00
Douglas Gregor 5ea234dcec Simplify test to deal with type-based ordering variations
llvm-svn: 86552
2009-11-09 16:22:45 +00:00
Douglas Gregor 022d3c2f42 Verify that code-completion is at least a little bit robust against inclusion of missing headers
llvm-svn: 86551
2009-11-09 16:06:30 +00:00
Douglas Gregor 8b14f8fde4 Minor cleanup for CIndex-based code-completion:
- Provide an actual test for code-completion via CIndex. 
  - Actually print optional strings in c-index-test
  - Export clang_getCompletionChunkCompletionString from CIndex

llvm-svn: 86550
2009-11-09 16:04:45 +00:00
Daniel Dunbar 6eb1201c90 Move test/Index input files into a sub directory (not scanned as tests).
llvm-svn: 86431
2009-11-08 01:46:19 +00:00
Daniel Dunbar 8b57697954 Eliminate &&s in tests.
- 'for i in $(find . -type f); do sed -e 's#\(RUN:.*[^ ]\) *&& *$#\1#g' $i | FileUpdate $i; done', for the curious.

llvm-svn: 86430
2009-11-08 01:45:36 +00:00
Douglas Gregor 16bef857d9 Keep track of whether declararions were loaded from a precompiled
header or not via a new "PCHLevel" field in Decl. We currently use
this information to help CIndex filter out declarations that came from
a precompiled header (rather than from an AST file). Further down the
road, it can be used to help implement multi-level precompiled
headers.

llvm-svn: 84267
2009-10-16 20:01:17 +00:00
Douglas Gregor d2eb58abac Add support for a chain of stat caches in the FileManager, rather than
only supporting a single stat cache. The immediate benefit of this
change is that we can now generate a PCH/AST file when including
another PCH file; in the future, the chain of stat caches will likely
be useful with multiple levels of PCH files.

llvm-svn: 84263
2009-10-16 18:18:30 +00:00
Ted Kremenek 3ea4ab8e79 Force a specific target triple in c-index-api-test.m, making the behavior of the test not be dependent on the host.
llvm-svn: 83438
2009-10-07 00:39:48 +00:00
Steve Naroff d7eb7179a2 - Fix assert in clang_getCursorDecl (having to do with recently added ObjC_ProtocolRef).
- Make sure CHECK: lines in test case match the expected output. 

llvm-svn: 83316
2009-10-05 17:58:19 +00:00
Steve Naroff a6c56bb849 Add support for class and protocol references.
llvm-svn: 83186
2009-10-01 00:31:07 +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
Daniel Dunbar bb6ac47ea1 Revert "Force triple in test.", this wasn't the problem.
llvm-svn: 82855
2009-09-26 07:43:49 +00:00
Daniel Dunbar 1b436d6950 Force triple in test.
llvm-svn: 82850
2009-09-26 07:06:36 +00:00
Steve Naroff 43b118fc2c Fix cut/paste error resulting in bad column info.
llvm-svn: 82810
2009-09-25 22:15:54 +00:00
Steve Naroff 63f475a212 Add clang_getDeclLine and clang_getDeclColumn
Fix clang_getCursorDecl to do the right thing for expr refs
Fixup test file to accommodate new output (which includes the line/column for the referenced decl)

llvm-svn: 82798
2009-09-25 21:32:34 +00:00
Douglas Gregor dc880d67f7 Don't look for __builtin_va_list; it isn't present for all targets
llvm-svn: 82757
2009-09-25 06:44:41 +00:00
Steve Naroff a7753c492e Add test for C-based indexing API, using FileCheck utility.
llvm-svn: 82706
2009-09-24 20:03:06 +00:00
Douglas Gregor 5d3507d39c Improve handling of initialization by constructor, by ensuring that
such initializations properly convert constructor arguments and fill
in default arguments where necessary. This also makes the ownership
model more clear.

llvm-svn: 81394
2009-09-09 23:08:42 +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
Daniel Dunbar 874450c433 Add -fblocks.
llvm-svn: 77571
2009-07-30 02:43:05 +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 34be01b9f4 Find references inside blocks.
llvm-svn: 77540
2009-07-29 23:40:48 +00:00
Daniel Dunbar 595c98729b Make having no RUN line a failure.
Doug, please look at decltype-crash and instantiate-function-1.mm, I'm not sure
if they are actually testing the right thing / anything.

llvm-svn: 77070
2009-07-25 12:47:38 +00:00
Daniel Dunbar 97ea867690 MultiTestRunner: Validate '&&' at the end of RUN lines.
- This is just to normalize, these will go away soon hopefully.

Added all the missing '&&'s that have crept in. :)

llvm-svn: 77062
2009-07-25 11:27:37 +00:00
Mike Stump e303c9e468 Prep for new warning.
llvm-svn: 76643
2009-07-21 21:06:08 +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 851b208a20 Use temporary output to avoid running index-test with the same commands multiple times.
llvm-svn: 76513
2009-07-21 00:06:46 +00:00
Argyrios Kyrtzidis ed53caebda Add comments to indicate why RUN lines are below the source code.
llvm-svn: 75813
2009-07-15 18:59:40 +00:00
Argyrios Kyrtzidis 9cbe886cff Move the RUN lines on the same file but below the code, as suggested by Sebastian.
llvm-svn: 75608
2009-07-14 05:34:59 +00:00
Argyrios Kyrtzidis 12563b8111 Handle redeclarations properly at the index-test tool.
llvm-svn: 75605
2009-07-14 03:20:31 +00:00
Argyrios Kyrtzidis d49e8dd759 Add a C++ indexing test case, where we show the references of overloaded '+' plus signs.
Ok, this is a bit out of place since C++ support is way way off, but it was just too cool to not show it off :-)

llvm-svn: 75601
2009-07-14 03:19:46 +00:00
Argyrios Kyrtzidis 2f0eff102c Handle struct fields through the index-test tool.
llvm-svn: 75596
2009-07-14 03:18:40 +00:00
Argyrios Kyrtzidis 558449bf79 Move the test input source code to a separate file.
That way we can freely add new RUN lines without having to correct the line part in all the -point-at options.

llvm-svn: 75595
2009-07-14 03:18:25 +00:00
Argyrios Kyrtzidis 1561c6cf54 Having tests that depend on previously created files is bad idea. Fix them to be self-sufficient.
llvm-svn: 74810
2009-07-06 00:03:47 +00:00
Argyrios Kyrtzidis 5641111e3f Make use of the Index library through the index-test tool.
'index-test' is now able to provide additional info for a Decl, through multiple AST files:
-Find declarations
-Find definitions
-Find references

llvm-svn: 74803
2009-07-05 22:22:35 +00:00
Douglas Gregor c6d5edd2ed Add support for retrieving the Doxygen comment associated with a given
declaration in the AST. 

The new ASTContext::getCommentForDecl function searches for a comment
that is attached to the given declaration, and returns that comment, 
which may be composed of several comment blocks.

Comments are always available in an AST. However, to avoid harming
performance, we don't actually parse the comments. Rather, we keep the
source ranges of all of the comments within a large, sorted vector,
then lazily extract comments via a binary search in that vector only
when needed (which never occurs in a "normal" compile).

Comments are written to a precompiled header/AST file as a blob of
source ranges. That blob is only lazily loaded when one requests a
comment for a declaration (this never occurs in a "normal" compile). 

The indexer testbed now supports comment extraction. When the
-point-at location points to a declaration with a Doxygen-style
comment, the indexer testbed prints the associated comment
block(s). See test/Index/comments.c for an example.

Some notes:
  - We don't actually attempt to parse the comment blocks themselves,
  beyond identifying them as Doxygen comment blocks to associate them
  with a declaration.
  - We won't find comment blocks that aren't adjacent to the
  declaration, because we start our search based on the location of
  the declaration.
  - We don't go through the necessary hops to find, for example,
  whether some redeclaration of a declaration has comments when our
  current declaration does not. Similarly, we don't attempt to
  associate a \param Foo marker in a function body comment with the
  parameter named Foo (although that is certainly possible).
  - Verification of my "no performance impact" claims is still "to be
  done".

llvm-svn: 74704
2009-07-02 17:08:52 +00:00
Argyrios Kyrtzidis 92772215af Introduce tools/index-test.
This tool will be the test bed for indexing related operations. It basically reads PCH files passed by the command line and performs various operations.

Currently it can accept a file:line:column which resolves to a declaration/statement and displays some information about them.

llvm-svn: 74198
2009-06-25 18:22:52 +00:00