summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaCodeComplete.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Keep an explicit stack of function and block scopes, each element ofDouglas Gregor2010-03-011-2/+3
| | | | | | | | | | | | | | | | | | | | which has the label map, switch statement stack, etc. Previously, we had a single set of maps in Sema (for the function) along with a stack of block scopes. However, this lead to funky behavior with nested functions, e.g., in the member functions of local classes. The explicit-stack approach is far cleaner, and we retain a 1-element cache so that we're not malloc/free'ing every time we enter a function. Fixes PR6382. Also, tweaked the unused-variable warning suppression logic to look at errors within a given Scope rather than within a given function. The prior code wasn't looking at the right number-of-errors count when dealing with blocks, since the block's count would be deallocated before we got to ActOnPopScope. This approach works with nested blocks/functions, and gives tighter error recovery. llvm-svn: 97518
* Add some spacing in the code-completion results for a return statementDouglas Gregor2010-02-181-1/+3
| | | | llvm-svn: 96567
* Thread a source location into the template-argument deduction routines. ThereJohn McCall2010-02-081-4/+7
| | | | | | | may be some other places that could take advantage of this new information, but I haven't really looked yet. llvm-svn: 95600
* Implement the lvalue-to-rvalue conversion where needed. TheDouglas Gregor2010-02-031-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | lvalue-to-rvalue conversion adjusts lvalues of qualified, non-class type to rvalue expressions of the unqualified variant of that type. For example, given: const int i; (void)(i + 17); the lvalue-to-rvalue conversion for the subexpression "i" will turn it from an lvalue expression (a DeclRefExpr) with type 'const int' into an rvalue expression with type 'int'. Both C and C++ mandate this conversion, and somehow we've slid through without implementing it. We now have both DefaultFunctionArrayConversion and DefaultFunctionArrayLvalueConversion, and which gets used depends on whether we do the lvalue-to-rvalue conversion or not. Generally, we do the lvalue-to-rvalue conversion, but there are a few notable exceptions: - the left-hand side of a '.' operator - the left-hand side of an assignment - a C++ throw expression - a subscript expression that's subscripting a vector Making this change exposed two issues with blocks: - we were deducing const-qualified return types of non-class type from a block return, which doesn't fit well - we weren't always setting the known return type of a block when it was provided with the ^return-type syntax Fixes the current Clang-on-Clang compile failure and PR6076. llvm-svn: 95167
* Pass access specifiers around in overload resolution.John McCall2010-01-261-1/+2
| | | | llvm-svn: 94485
* Teach code-completion to deal with calls to functions without prototypes.Douglas Gregor2010-01-211-15/+21
| | | | llvm-svn: 94076
* Switch a few callers of MaybeAddResult over to AddResult, when theDouglas Gregor2010-01-141-10/+12
| | | | | | declarations we're adding do not need any name-hiding checks. llvm-svn: 93431
* Switch code-completion's ivar lookup over to LookupVisibleDecls,Douglas Gregor2010-01-141-5/+11
| | | | | | eliminating yet one more ResultBuilder::MaybeAddResult caller. llvm-svn: 93430
* Start migrating code-completion results fromDouglas Gregor2010-01-141-117/+129
| | | | | | ResultBuilder::MaybeAddResult over to ResultBuilder::AddResult. llvm-svn: 93429
* Switch the remaining code completions over to LookupVisibleDecls,Douglas Gregor2010-01-141-106/+15
| | | | | | | | after adding the ability to determine whether our lookup is a base-class lookup. Eliminate CollectMemberLookupResults, since it is no longer used (yay). llvm-svn: 93428
* Move code completion for qualified name lookup (foo::) toDouglas Gregor2010-01-141-1/+2
| | | | | | LookupVisibleDecls. Also, a function does not hide another function. llvm-svn: 93421
* Eliminate the code-completion-specifier CollectLookupResults in favorDouglas Gregor2010-01-141-73/+10
| | | | | | of the more general LookupVisibleDecls. llvm-svn: 93419
* Simplify the code-completion logic for nested-name-specifiers: ratherDouglas Gregor2010-01-141-31/+43
| | | | | | | than traversing visible declarations twice, only perform one traversal and recognize nested-name-specifiers as special. llvm-svn: 93418
* When providing completions for a member access expression in C++,Douglas Gregor2010-01-141-8/+3
| | | | | | | provided nested-name-specifier results for base classes (only), rather than everything that could possibly be a nested-name-specifier. llvm-svn: 93398
* Switch code-completion for ordinary names over to the new(ish)Douglas Gregor2010-01-141-4/+80
| | | | | | | | | | LookupVisibleDecls, unifying the name lookup mechanisms used by code completion and typo correction. Aside from the software-engineering improvements, this makes code-completion see through using directives and see ivars when performing unqualified name lookup in an Objective-C instance method. llvm-svn: 93397
* More refactoring of ResultBuilder::MaybeAddResult. No intendedDouglas Gregor2010-01-141-40/+39
| | | | | | functionality change. llvm-svn: 93386
* Refactor the "is this declaration interesting" logic inDouglas Gregor2010-01-141-33/+51
| | | | | | code-completion's ResultBuilder::MaybeAddResult for later reuse. llvm-svn: 93379
* Banish the notion of a "rank" for code-completion results, since weDouglas Gregor2010-01-131-256/+197
| | | | | | are no longer using it for anything. No intended functionality change. llvm-svn: 93376
* Improve the sorting of code-completion results. We now always sort byDouglas Gregor2010-01-131-38/+41
| | | | | | | | the "typed" text, first, then take into account nested-name-specifiers, name hiding, etc. This means that the resulting sort is actually alphabetical :) llvm-svn: 93370
* Code-completion for @public, @protected, @private, @package.Douglas Gregor2010-01-131-1/+30
| | | | llvm-svn: 93361
* Whenever completing ordinary names for an Objective-C source, alsoDouglas Gregor2010-01-131-99/+159
| | | | | | | | | | | provide completions for @ keywords. Previously, we only provided @-completions after an @ was actually typed, which is useful but probably not the common case. Also, make sure a few Objective-C 2.0 completions only show up when Objective-C 2.0 support is enabled (the default). llvm-svn: 93354
* Use horizontal-space markers in code-completion results rather thanDouglas Gregor2010-01-121-14/+21
| | | | | | embedding single space characters. <rdar://problem/7485503> llvm-svn: 93231
* Improve code completion by introducing patterns for the various C andDouglas Gregor2010-01-101-20/+529
| | | | | | | | | | | | | | | | | | | | | | C++ grammatical constructs that show up in top-level (namespace-level) declarations, member declarations, template declarations, statements, expressions, conditions, etc. For example, we now provide a pattern for static_cast<type>(expr) when we can have an expression, or using namespace identifier; when we can have a using directive. Also, improves the results of code completion at the beginning of a top-level declaration. Previously, we would see value names (function names, global variables, etc.); now we see types, namespace names, etc., but no values. llvm-svn: 93134
* remove extraneous #includeChris Lattner2009-12-301-1/+0
| | | | llvm-svn: 92310
* Typo correction for type names when they appear in declarations, e.g., givenDouglas Gregor2009-12-301-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | tring str2; we produce the following diagnostic + fix-it: typo.cpp:15:1: error: unknown type name 'tring'; did you mean 'string'? tring str2; ^~~~~ string To make this really useful, we'll need to introduce typo correction in many more places (wherever we do name lookup), and implement declaration-vs-expression heuristics that cope with typos better. However, for now this will handle the simple cases where we already get good "unknown type name" diagnostics. The LookupVisibleDecls functions are intended to be used by code completion as well as typo correction; that refactoring will happen later. llvm-svn: 92308
* Remove some dead variables clang-analyzer found.Benjamin Kramer2009-12-251-1/+0
| | | | llvm-svn: 92162
* Objective-C methods can be variadic, too. Who knew.Douglas Gregor2009-12-231-0/+7
| | | | llvm-svn: 91951
* Extend code-completion results with the type of each resultDouglas Gregor2009-12-181-0/+36
| | | | llvm-svn: 91702
* Shift things around so that it's easier to recover from a missingJohn McCall2009-12-161-22/+13
| | | | | | | | | function in a C++ call using an arbitrary call-expression type. Actually exploit this to fix the recovery implemented earlier. The diagnostic is still iffy, though. llvm-svn: 91538
* update to match LLVM API change:Chris Lattner2009-12-151-7/+0
| | | | | | | | | 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
* Un-namespace-qualify llvm_unreachable. It's a macro, so the qualification gaveJeffrey Yasskin2009-12-121-1/+1
| | | | | | no extra safety anyway. llvm-svn: 91207
* When code completion of an overload set fails, produce results for ordinary ↵Douglas Gregor2009-12-111-5/+16
| | | | | | name lookup instead. llvm-svn: 91141
* Add a function's cv-qualifiers to the code-completion results as anDouglas Gregor2009-12-111-4/+24
| | | | | | informative chunk. llvm-svn: 91139
* Teach code completion to instantiate templates when it needs toDouglas Gregor2009-12-111-1/+6
| | | | llvm-svn: 91138
* Member function templates can occur after . or ->Douglas Gregor2009-12-111-1/+2
| | | | llvm-svn: 91137
* Tweak code-completion results by suppressing class templateDouglas Gregor2009-12-111-8/+15
| | | | | | | | | 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
* Class template (partial) specializations should not show up in code ↵Douglas Gregor2009-12-111-0/+5
| | | | | | completion results llvm-svn: 91125
* When in an Objective-C instance method, super is a valid code-completion resultDouglas Gregor2009-12-071-0/+14
| | | | llvm-svn: 90758
* Code completion for Objective-C @ keywords that are statements or expressionsDouglas Gregor2009-12-071-1/+90
| | | | llvm-svn: 90757
* Code completion for Objective-C @ directivesDouglas Gregor2009-12-071-0/+88
| | | | llvm-svn: 90756
* PointerUnion == PointerUnion does not do what I thought it did. Also, fix a ↵Douglas Gregor2009-12-061-4/+4
| | | | | | thinko in a PointerUnion::get call. llvm-svn: 90719
* Switch the std::multimap shadow map used in code completion to anDouglas Gregor2009-12-061-16/+179
| | | | | | | llvm::DenseMap, for a 20% performance improvement in the Cocoa-big-list performance benchmark. llvm-svn: 90715
* Avoid trashing two temporary strings.Benjamin Kramer2009-12-051-2/+2
| | | | llvm-svn: 90663
* strcasecmp is unportable.Benjamin Kramer2009-12-051-1/+1
| | | | llvm-svn: 90662
* Improve the performance of code completion by 2.2x when completing for ↵Douglas Gregor2009-12-051-6/+46
| | | | | | ordinary names with Cocoa.h included, by drastically improving the performance of our results sorting. llvm-svn: 90661
* Switch the clang-to-CIndex interface for code-completion to a binary format, ↵Douglas Gregor2009-12-011-18/+19
| | | | | | for a massive speedup llvm-svn: 90209
* Remove all of Sema's explicit uses of OverloadedFunctionDecl except forJohn McCall2009-11-301-11/+0
| | | | | | those associated with TemplateNames. llvm-svn: 90162
* Remove useless c_str() calls in SemaCodeComplete.Benjamin Kramer2009-11-291-17/+17
| | | | llvm-svn: 90088
* Rip out TemplateIdRefExpr and make UnresolvedLookupExpr and John McCall2009-11-241-2/+4
| | | | | | | | | | | | 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
* Encapsulate "an array of TemplateArgumentLocs and two angle bracket ↵John McCall2009-11-231-6/+4
| | | | | | | | | | locations" into a new class. Use it pervasively throughout Sema. My fingers hurt. llvm-svn: 89638
OpenPOWER on IntegriCloud