summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaCodeComplete.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Introduce a new libclang aPI function,Douglas Gregor2011-07-071-19/+38
| | | | | | | | | clang_codeCompleteGetContexts(), that provides the client with information about the context in which code completion has occurred and what kinds of entities make sense as completions at that point. Patch by Connor Wakamo! llvm-svn: 134615
* Automatic Reference Counting.John McCall2011-06-151-20/+77
| | | | | | | | | | Language-design credit goes to a lot of people, but I particularly want to single out Blaine Garst and Patrick Beard for their contributions. Compiler implementation credit goes to Argyrios, Doug, Fariborz, and myself, in no particular order. llvm-svn: 133103
* Add code completetion code for the new 'atomic' attributeFariborz Jahanian2011-06-111-0/+2
| | | | | | keyword in objc property decl. llvm-svn: 132877
* Expose @synthesize and @dynamic via their own cursor kinds inDouglas Gregor2011-06-031-0/+10
| | | | | | libclang. Fixes <rdar://problem/9537904>. llvm-svn: 132603
* Tweak code completions for Objective-C Key-Value Observing. TheDouglas Gregor2011-06-021-1/+22
| | | | | | | | +keyPathsForValuesAffecting<Key> completion was mislabeled as an instance method, and +automaticallyNotifiesObserversOf<Key> was missing entirely. Fixes <rdar://problem/9516762>. llvm-svn: 132452
* When providing code completions for an Objective-C property access,Douglas Gregor2011-05-051-13/+61
| | | | | | | also include methods with zero-argument selectors. Implements <rdar://problem/9048332>. llvm-svn: 130922
* When adding KVC code completions, keep track of all of the selectorsDouglas Gregor2011-05-041-23/+30
| | | | | | | that we've previously seen, both in declared methods and from previous KVC completions, to eliminate duplicates. Fixes <rdar://problem/9162207>. llvm-svn: 130890
* When providing code completions of ivar names for a propertyDouglas Gregor2011-04-181-18/+30
| | | | | | | | | | | | | | | | implementation such as @synthesize Prop1 = Give priority to ivars whose type matches or closely matches the property type (as we do for several other kinds of results). Additionally, if there is an ivar with the same name as the property, or differs only due to a _ prefix or suffix, give that ivar a priority bump. Finally, verify that this search is properly returning ivars within class extensions and implementations (<rdar://problem/8488854>). llvm-svn: 129699
* When producing code completion results for the Objective-C propertyDouglas Gregor2011-04-181-5/+42
| | | | | | | | | | | implementation @synthesize <property> = also produce a completion for a to-be-synthesized ivar named _<property>. llvm-svn: 129697
* Support for C++11 (non-template) alias declarations.Richard Smith2011-04-151-2/+3
| | | | llvm-svn: 129567
* When determining the "usage" type of a declaration for the purposes of code Douglas Gregor2011-04-141-2/+33
| | | | | | | completion, look through block pointer and function pointer types to the result type of the block/function. Fixes <rdar://problem/9282583>. llvm-svn: 129535
* Don't suggest dynamic_cast or typeid as code completion results whenDouglas Gregor2011-04-121-22/+29
| | | | | | | | RTTI is disabled. Similarly, don't suggest throw or try as code completion results when C++ exceptions are disabled. Fixes <rdar://problem/9193560>. llvm-svn: 129346
* Use ExprResult& instead of Expr *& in SemaJohn Wiegley2011-04-081-2/+6
| | | | | | | | | | | | | | | | | | | | | | | | | This patch authored by Eric Niebler. Many methods on the Sema class (e.g. ConvertPropertyForRValue) take Expr pointers as in/out parameters (Expr *&). This is especially true for the routines that apply implicit conversions to nodes in-place. This design is workable only as long as those conversions cannot fail. If they are allowed to fail, they need a way to report their failures. The typical way of doing this in clang is to use an ExprResult, which has an extra bit to signal a valid/invalid state. Returning ExprResult is de riguour elsewhere in the Sema interface. We suggest changing the Expr *& parameters in the Sema interface to ExprResult &. This increases interface consistency and maintainability. This interface change is important for work supporting MS-style C++ properties. For reasons explained here <http://lists.cs.uiuc.edu/pipermail/cfe-dev/2011-February/013180.html>, seemingly trivial operations like rvalue/lvalue conversions that formerly could not fail now can. (The reason is that given the semantics of the feature, getter/setter method lookup cannot happen until the point of use, at which point it may be found that the method does not exist, or it may have the wrong type, or overload resolution may fail, or it may be inaccessible.) llvm-svn: 129143
* Make helpers static.Benjamin Kramer2011-03-261-3/+3
| | | | llvm-svn: 128339
* Implement the C++0x deduced 'auto' feature.Richard Smith2011-02-201-1/+0
| | | | | | This fixes PR 8738, 9060 and 9132. llvm-svn: 126069
* When code-completing a case statement for a switch on a value ofDouglas Gregor2011-02-181-3/+4
| | | | | | | enumeration type, prioritize the enumeration constants and don't provide completions for any other expressions. Fixes <rdar://problem/7283668>. llvm-svn: 125991
* Selector::getIdentifierInfoForSlot() can return NULL values, a factDouglas Gregor2011-02-181-13/+11
| | | | | | | | | | | | that was ignored in a few places (most notably, code completion). Introduce Selector::getNameForSlot() for the common case where we only care about the name. Audit all uses of getIdentifierInfoForSlot(), switching many over to getNameForSlot(), fixing a few crashers. Fixed <rdar://problem/8939352>, a code-completion crasher. llvm-svn: 125977
* I will not hold on to temporary StringRefs.Douglas Gregor2011-02-171-50/+51
| | | | | | | | | | | | | | | I will not hold on to temporary StringRefs. I will not hold on to temporary StringRefs. I will not hold on to temporary StringRefs. I will not hold on to temporary StringRefs. I will not hold on to temporary StringRefs. I will not hold on to temporary StringRefs. I will not hold on to temporary StringRefs. I will not hold on to temporary StringRefs. I will not hold on to temporary StringRefs. I will not hold on to temporary StringRefs. llvm-svn: 125718
* Implement code completion results for the Objective-C Key-Value CodingDouglas Gregor2011-02-171-12/+655
| | | | | | (KVC) and Key-Value Observing (KVO) protocols. llvm-svn: 125696
* When trying to provide a code completion item for a call to "super" inDouglas Gregor2011-02-161-1/+12
| | | | | | | Objective-C, also look in the categories and class extensions of our superclasses. Fixes <rdar://problem/8853540>. llvm-svn: 125628
* Teach code completion to cope with block types written without aDouglas Gregor2011-02-151-5/+7
| | | | | | | prototype, e.g., ^() rather than ^(void). Fixes <rdar://problem/8875712>. llvm-svn: 125608
* Implement a special code-completion pattern for "IBAction". FixesDouglas Gregor2011-02-151-1/+22
| | | | | | <rdar://problem/8767704>. llvm-svn: 125604
* When code-completing within a list of declaration specifiers,Douglas Gregor2011-02-151-0/+8
| | | | | | | | separately handle the case of a local declaration-specifier list, including all types in the set of options. Fixes <rdar://problem/8790735> and <rdar://problem/8662831>. llvm-svn: 125594
* Create a special allocator class for code completion, so that all ofDouglas Gregor2011-02-011-76/+66
| | | | | | | the string copying goes through a single place that can have associated state. llvm-svn: 124698
* Provide constant strings for certain common code completion strings,Douglas Gregor2011-02-011-22/+90
| | | | | | eliminating the need to copy those strings. llvm-svn: 124683
* Allocate CodeCompletionString and all of its components in aDouglas Gregor2011-02-011-764/+789
| | | | | | | | | | | | BumpPtrAllocator, rather than manually new/delete'ing them. This optimization also allows us to avoid allocating memory for and copying constant strings (e.g., "return", "class"). This also required embedding the priority and availability of results within the code completion string, to avoid extra memory allocation within libclang. llvm-svn: 124673
* Renamed CXXBaseOrMemberInitializer to CXXCtorInitializer. This is both shorter,Alexis Hunt2011-01-081-1/+1
| | | | | | | more accurate, and makes it make sense for it to hold a delegating constructor call. llvm-svn: 123084
* Fix a major inconsistency in the representation of Objective-CDouglas Gregor2010-12-211-32/+2
| | | | | | | | | | | | | | | | | | | | classes, categories, protocols, and class extensions, where the methods and properties of these entities would be inserted into the DeclContext in an ordering that doesn't necessarily reflect source order. The culprits were Sema::ActOnMethodDeclaration(), which did not perform the insertion of the just-created method declaration into the DeclContext for these Objective-C entities, and Sema::ActOnAtEnd(), which inserted all method declarations at the *end* of the DeclContext. With this fix in hand, clean up the code-completion actions for property setters/getters that worked around this brokenness in the AST. Fixes <rdar://problem/8062781>, where this problem manifested as poor token-annotation information, but this would have struck again in many other places. llvm-svn: 122347
* Added missing IgnoreParens().Abramo Bagnara2010-12-141-4/+1
| | | | llvm-svn: 121795
* Added ParenType type node.Abramo Bagnara2010-12-101-0/+3
| | | | llvm-svn: 121488
* Eliminate duplicate code completions for properties.Douglas Gregor2010-12-091-11/+25
| | | | llvm-svn: 121424
* Don't walk the translation unit context to produce protocol names whenDouglas Gregor2010-12-091-17/+26
| | | | | | | | | | global code completions are disabled (e.g., because they are cached). Also, make sure that forward-declared protocols are visited when we look for all visible names within a declaration context. Previously, we would end up with duplicate completions for protocols. llvm-svn: 121416
* More anonymous struct/union redesign. This one deals with anonymous field ↵Francois Pichet2010-12-041-3/+4
| | | | | | | | | | | | | | | | used in a constructor initializer list: struct X { X() : au_i1(123) {} union { int au_i1; float au_f1; }; }; clang will now deal with au_i1 explicitly as an IndirectFieldDecl. llvm-svn: 120900
* Do not produce "purely informative" code completion results forDouglas Gregor2010-11-171-22/+35
| | | | | | | Objective-C message sends, which have only whitespace in their TypedText chunk. Such results have no purpose. llvm-svn: 119569
* Revert the fix for PR8013.Douglas Gregor2010-11-091-4/+0
| | | | | | | | | | | | | That bug concerned the well-formedness of code such as (&ovl)(a, b, c). GCC rejects the code, while EDG accepts it. On further study of the standard, I see no support for EDG's position: in particular, C++ [over.over] does not list this as a context where we can take the address of an overloaded function, C++ [over.call.func] does not reference the address-of operator at any point, and C++ [expr.call] claims that the function argument in a call is either a function lvalue or a pointer-to-function; (&ovl) is neither. llvm-svn: 118620
* Handle overload resolution when calling an overloaded function setDouglas Gregor2010-11-091-0/+4
| | | | | | with, e.g., (&f)(a, b, c). Fixes PR8013. llvm-svn: 118508
* Teach code completion not to include out-of-line declarations andDouglas Gregor2010-11-091-1/+8
| | | | | | | definitions in its results. The original declarations will be visible wherever they are declared. llvm-svn: 118484
* If an instance method messages is sending to an expression of type Class,Douglas Gregor2010-11-081-8/+15
| | | | | | | | and we statically can compute a bound on the actual type (e.g., because it's a send to the the magic "class" instance method), code complete as if we were performing a class message send to that class. llvm-svn: 118443
* Teach code completion to provide property results when the propertyDouglas Gregor2010-11-021-9/+43
| | | | | | can be used to automatically synthesize an ivar. llvm-svn: 118052
* Fix the translation of the PCC_ForInit code-completion context forDouglas Gregor2010-10-181-2/+8
| | | | | | | | C++/C99/Objective-C, so that we properly include types. This fix affects global caching of code-completion results; without caching, the behavior was already correct. llvm-svn: 116757
* Introduce code completion results for Objective-C methods, both whenDouglas Gregor2010-10-181-6/+8
| | | | | | | | | declaring methods and when sending messages to them, by bringing all of the selector into TypedCheck chunks in the completion result. This way, we can improve the sorting of these results to account for the full selector name rather than just the first chunk. llvm-svn: 116746
* When providing code completions of Objective-C method declarationsDouglas Gregor2010-10-181-48/+28
| | | | | | | (after - or +), always traverse superclasses and all categories. The programmer may want to complete a method from *anywhere*. llvm-svn: 116723
* Eliminate the use of ObjCSuperExpr in code completion.Douglas Gregor2010-10-131-11/+9
| | | | llvm-svn: 116436
* Switch c-index-test from clang_codeComplete() over toDouglas Gregor2010-10-111-2/+4
| | | | | | | | | | clang_codeCompleteAt(). This uncovered a few issues with the latter: - ASTUnit wasn't saving/restoring diagnostic state appropriately between reparses and code completions. - "Overload" completions weren't being passed through to the client llvm-svn: 116241
* Fix the mapping of vertical-space cursor kinds to produce a newline,Douglas Gregor2010-10-081-0/+1
| | | | | | rather than a space. llvm-svn: 116097
* When providing a block literal as a code completion for aDouglas Gregor2010-10-021-0/+5
| | | | | | | | function/method argument, include the parameter name and always include parentheses (even for zero-parameter blocks). Otherwise, the block literal placeholder '^' can look very weird. llvm-svn: 115444
* Synchronize globally-cached code completion results with the resultsDouglas Gregor2010-09-231-75/+106
| | | | | | | | | | | | | | provided when the optimization is disabled. In particular, split the completion context CCC_Other into two contexts: CCC_Other, which means that it's an undisclosed context for which any other results are unwelcome, and CCC_Recovery, which is used in recovery cases. Since we're now using the completion context within the completion results builder, make sure that it's always set to something. Fixes <rdar://problem/8470644>. llvm-svn: 114704
* Add code completion for C++ constructors wherever we see the class (orDouglas Gregor2010-09-211-11/+112
| | | | | | class template) and are in a context where we can have a value. llvm-svn: 114441
* When providing code completions for an argument in an Objective-CDouglas Gregor2010-09-211-7/+71
| | | | | | | | | | | | message send, e.g., [[NSString alloc] initWithCString:<CC> look up all of the possible methods and determine the preferred type for the argument expression based on the type of the corresponding parameter. llvm-svn: 114379
* Refactor code completion for expressions that occur as arguments inDouglas Gregor2010-09-201-6/+20
| | | | | | | | Objective-C message sends. There is no functionality change here; this is prep work for using the parameter types to help guide the expression results when code-completing the argument. llvm-svn: 114375
OpenPOWER on IntegriCloud