571 Commits

Author SHA1 Message Date
Chris Lattner
2f3da9b205 update to match LLVM API change:
Remove isPod() from DenseMapInfo, splitting it out to its own
isPodLike type trait.  This is a generally useful type trait for
more than just DenseMap, and we really care about whether something
acts like a pod, not whether it really is a pod.

llvm-svn: 91422
2009-12-15 07:26:51 +00:00
Jeffrey Yasskin
1615d45daa Un-namespace-qualify llvm_unreachable. It's a macro, so the qualification gave
no extra safety anyway.

llvm-svn: 91207
2009-12-12 05:05:38 +00:00
Douglas Gregor
3ef5952017 When code completion of an overload set fails, produce results for ordinary name lookup instead.
llvm-svn: 91141
2009-12-11 19:06:04 +00:00
Douglas Gregor
0f622367d3 Add a function's cv-qualifiers to the code-completion results as an
informative chunk.

llvm-svn: 91139
2009-12-11 18:44:16 +00:00
Douglas Gregor
800f2f0ff0 Teach code completion to instantiate templates when it needs to
llvm-svn: 91138
2009-12-11 18:28:39 +00:00
Douglas Gregor
7078839b0e Member function templates can occur after . or ->
llvm-svn: 91137
2009-12-11 18:14:22 +00:00
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
Douglas Gregor
83c49b56fe Class template (partial) specializations should not show up in code completion results
llvm-svn: 91125
2009-12-11 16:18:54 +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
Douglas Gregor
94bb5e8d75 PointerUnion == PointerUnion does not do what I thought it did. Also, fix a thinko in a PointerUnion::get call.
llvm-svn: 90719
2009-12-06 21:27:58 +00:00
Douglas Gregor
05e7ca3659 Switch the std::multimap shadow map used in code completion to an
llvm::DenseMap, for a 20% performance improvement in the
Cocoa-big-list performance benchmark.

llvm-svn: 90715
2009-12-06 20:23:50 +00:00
Benjamin Kramer
4053e5db54 Avoid trashing two temporary strings.
llvm-svn: 90663
2009-12-05 10:22:15 +00:00
Benjamin Kramer
ed60635d70 strcasecmp is unportable.
llvm-svn: 90662
2009-12-05 10:07:04 +00:00
Douglas Gregor
249d6826cd Improve the performance of code completion by 2.2x when completing for ordinary names with Cocoa.h included, by drastically improving the performance of our results sorting.
llvm-svn: 90661
2009-12-05 09:08:56 +00:00
Douglas Gregor
f09935f16c Switch the clang-to-CIndex interface for code-completion to a binary format, for a massive speedup
llvm-svn: 90209
2009-12-01 05:55:20 +00:00
John McCall
132f3133ae Remove all of Sema's explicit uses of OverloadedFunctionDecl except for
those associated with TemplateNames.

llvm-svn: 90162
2009-11-30 22:55:35 +00:00
Benjamin Kramer
b33a97c384 Remove useless c_str() calls in SemaCodeComplete.
llvm-svn: 90088
2009-11-29 20:18:50 +00:00
John McCall
e66edc18ae Rip out TemplateIdRefExpr and make UnresolvedLookupExpr and
DependentScopeDeclRefExpr support storing templateids.  Unite the common   
code paths between ActOnDeclarationNameExpr and ActOnTemplateIdExpr.

This gets us to a point where we don't need to store function templates in
the AST using TemplateNames, which is critical to ripping out OverloadedFunction.

Also resolves a few FIXMEs.

llvm-svn: 89785
2009-11-24 19:00:30 +00:00
John McCall
6b51f28e82 Encapsulate "an array of TemplateArgumentLocs and two angle bracket locations" into
a new class.  Use it pervasively throughout Sema.

My fingers hurt.

llvm-svn: 89638
2009-11-23 01:53:49 +00:00
John McCall
283b901cf3 Consider a FunctionTemplate to be an overload all on its lonesome. Track
this information through lookup rather than rederiving it.

llvm-svn: 89570
2009-11-22 00:44:51 +00:00
John McCall
d14a86427f "Incremental" progress on using expressions, by which I mean totally ripping
into pretty much everything about overload resolution in order to wean
BuildDeclarationNameExpr off LookupResult::getAsSingleDecl().  Replace  
UnresolvedFunctionNameExpr with UnresolvedLookupExpr, which generalizes the
idea of a non-member lookup that we haven't totally resolved yet, whether by
overloading, argument-dependent lookup, or (eventually) the presence of   
a function template in the lookup results.  

Incidentally fixes a problem with argument-dependent lookup where we were 
still performing ADL even when the lookup results contained something from
a block scope.  

Incidentally improves a diagnostic when using an ObjC ivar from a class method.
This just fell out from rewriting BuildDeclarationNameExpr's interaction with
lookup, and I'm too apathetic to break it out.

The only remaining uses of OverloadedFunctionDecl that I know of are in
TemplateName and MemberExpr.

llvm-svn: 89544
2009-11-21 08:51:07 +00:00
Douglas Gregor
c8537c5156 Objective-C code completion within properties after "setter = " or
"getter = ", to provide suitable method names.

llvm-svn: 89334
2009-11-19 07:41:15 +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
36029f4118 Rename CodeCompleteObjCProperty to something more specific. No functionality change.
llvm-svn: 89267
2009-11-18 23:08:07 +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
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
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
baf6961ed4 Code completion for Objective-C properly lists
llvm-svn: 89194
2009-11-18 04:19:12 +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
090dd181e5 Rename Objective-C message send completion functions to indicate that we're referring to message sends
llvm-svn: 89164
2009-11-17 23:31:36 +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
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
John McCall
3f746828d7 Instead of hanging a using declaration's target decls directly off the using
decl, create shadow declarations and put them in scope like normal.
Work in progress.

llvm-svn: 89048
2009-11-17 05:59:44 +00:00
Daniel Dunbar
242ea9a05a Rework Sema code completion interface.
- Provide Sema in callbacks, instead of requiring it in constructor. This
   eliminates the need for a factory function. Clients now just pass the object
   to consume the results in directly.

 - CodeCompleteConsumer is cheap to construct, so building it whenever we are
   doing code completion is reasonable.

Doug, please review.

llvm-svn: 87099
2009-11-13 08:58:20 +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
Steve Naroff
eae650366d Add basic code completion support for ObjC messages.
Still a work in progress...

llvm-svn: 86323
2009-11-07 02:08:14 +00:00
Douglas Gregor
9eb7701dff Various improvements to Clang's code-completion infrastructure:
- Introduce more code-completion string "chunk" kinds that describe
  symbols, the actual text that the user is expected to type, etc.
  - Make the generation of macro results optional, since it can be
  slow
  - Make code-completion accessible through the C API, marshalling the
  code-completion results through a temporary file (ick) to maintain
  process separation.

The last doesn't have tests yet.

llvm-svn: 86306
2009-11-07 00:00:49 +00:00
Douglas Gregor
f329c7c3c0 Include macros in code-completion results
llvm-svn: 85594
2009-10-30 16:50:04 +00:00
John McCall
0ad166672f Track source information for template arguments and template specialization
types.  Preserve it through template instantiation.  Preserve it through PCH,
although TSTs themselves aren't serializable, so that's pretty much meaningless.

llvm-svn: 85500
2009-10-29 08:12:44 +00:00
Douglas Gregor
4bd90e53c2 Eliminate QualifiedDeclRefExpr, which captured the notion of a
qualified reference to a declaration that is not a non-static data
member or non-static member function, e.g., 

  namespace N { int i; }
  int j = N::i;

Instead, extend DeclRefExpr to optionally store the qualifier. Most
clients won't see or care about the difference (since
QualifierDeclRefExpr inherited DeclRefExpr). However, this reduces the
number of top-level expression types that clients need to cope with,
brings the implementation of DeclRefExpr into line with MemberExpr,
and simplifies and unifies our handling of declaration references.

Extended DeclRefExpr to (optionally) store explicitly-specified
template arguments. This occurs when naming a declaration via a
template-id (which will be stored in a TemplateIdRefExpr) that,
following template argument deduction and (possibly) overload
resolution, is replaced with a DeclRefExpr that refers to a template
specialization but maintains the template arguments as written.

llvm-svn: 84962
2009-10-23 18:54:35 +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
Douglas Gregor
58acf32af2 Minor tweaks for code-completion:
- Filter out unnamed declarations
  - Filter out declarations whose names are reserved for the
  implementation (e.g., __bar, _Foo) 
  - Place OVERLOAD: or COMPLETION: at the beginning of each
  code-completion result, so we can easily separate them from other
  compilation results.

llvm-svn: 83680
2009-10-09 22:16:47 +00:00