summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/CodeCompleteConsumer.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Include macros in code-completion resultsDouglas Gregor2009-10-301-0/+11
| | | | llvm-svn: 85594
* Minor tweaks for code-completion:Douglas Gregor2009-10-091-1/+2
| | | | | | | | | | | - 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
* Make sure to flush raw_string_ostream, from John ThompsonDouglas Gregor2009-09-291-1/+1
| | | | llvm-svn: 83066
* Print the results of code-completion for overloading by displaying theDouglas Gregor2009-09-231-20/+4
| | | | | | | signature of the function with the current parameter highlighted as a placeholder. llvm-svn: 82593
* Separate the code-completion results for call completion from theDouglas Gregor2009-09-231-0/+64
| | | | | | | | results for other, textual completion. For call completion, we now produce enough information to show the function call argument that we are currently on. llvm-svn: 82592
* Tweak the code-completion results ranking and formation, so thatDouglas Gregor2009-09-221-16/+28
| | | | | | | | | | | members found in base classes have the same ranking as members found in derived classes. However, we will introduce an informative note for members found in base classes, showing (as a nested-name-specifier) the qualification to name the base class, to make it clear which members are from bases. llvm-svn: 82586
* Refactor and simplify the CodeCompleteConsumer, so that all of theDouglas Gregor2009-09-211-846/+5
| | | | | | | real work is performed within Sema. Addresses Chris's comments, but still retains the heavyweight list-of-multimaps data structure. llvm-svn: 82459
* In C++ code completion, only suggest the "template" keyword after ".",Douglas Gregor2009-09-181-4/+18
| | | | | | | "->", or "::" if we will be looking into a dependent context. It's not wrong to use the "template" keyword, but it's to needed, either. llvm-svn: 82307
* Make the construction of the code-completion string for a functionDouglas Gregor2009-09-181-8/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | | template smarter, by taking into account which function template parameters are deducible from the call arguments. For example, template<typename RandomAccessIterator> void sort(RandomAccessIterator first, RandomAccessIterator last); will have a code-completion string like sort({RandomAccessIterator first}, {RandomAccessIterator last}) since the template argument for its template parameter is deducible. On the other hand, template<class X, class Y> X* dyn_cast(Y *Val); will have a code-completion string like dyn_cast<{class X}>({Y *Val}) since the template type parameter X is not deducible from the function call. llvm-svn: 82306
* Introduce code completion patterns for templates, which provide theDouglas Gregor2009-09-181-0/+88
| | | | | | angle brackets < > along with placeholder template arguments. llvm-svn: 82304
* Introduce code completion strings, which describe how to *use* theDouglas Gregor2009-09-181-2/+131
| | | | | | | results of code completion, e.g., by providing function call syntax with placeholders for each of the parameters. llvm-svn: 82293
* C++ code completion after the "operator" keyword. Provide overloadedDouglas Gregor2009-09-181-1/+76
| | | | | | operators, type specifiers, type names, and nested-name-specifiers. llvm-svn: 82264
* Introduce four new code-completion hooks for C++:Douglas Gregor2009-09-181-0/+68
| | | | | | | | | | - after "using", show anything that can be a nested-name-specifier. - after "using namespace", show any visible namespaces or namespace aliases - after "namespace", show any namespace definitions in the current scope - after "namespace identifier = ", show any visible namespaces or namespace aliases llvm-svn: 82251
* Don't perform name lookup into a given declaration context more than once ↵Douglas Gregor2009-09-181-4/+31
| | | | | | during code completion llvm-svn: 82234
* Handle using declarations and overload sets in code completion.Douglas Gregor2009-09-181-2/+15
| | | | llvm-svn: 82233
* For code completion in C++ member access expressions and tag names,Douglas Gregor2009-09-181-9/+32
| | | | | | | | | | | | | look into the current scope for anything that could start a nested-names-specifier. These results are ranked worse than any of the results actually found in the lexical scope. Perform a little more pruning of the result set, eliminating constructors, __va_list_tag, and any duplication of declarations in the result set. For the latter, implemented NamespaceDecl::getCanonicalDecl. llvm-svn: 82231
* When gathering results for code completion, only include hiddenDouglas Gregor2009-09-181-1/+38
| | | | | | | results when there is some way to refer to them in the language, such as with a qualified name in C++. llvm-svn: 82223
* Implement code completion for tags, e.g., code completion after "enum"Douglas Gregor2009-09-181-16/+152
| | | | | | | | | | | | | will provide the names of various enumerations currently visible. Introduced filtering of code-completion results when we build the result set, so that we can identify just the kinds of declarations we want. This implementation is incomplete for C++, since we don't consider that the token after the tag keyword could start a nested-name-specifier. llvm-svn: 82222
* Initial implementation of a code-completion interface in Clang. InDouglas Gregor2009-09-171-0/+314
essence, code completion is triggered by a magic "code completion" token produced by the lexer [*], which the parser recognizes at certain points in the grammar. The parser then calls into the Action object with the appropriate CodeCompletionXXX action. Sema implements the CodeCompletionXXX callbacks by performing minimal translation, then forwarding them to a CodeCompletionConsumer subclass, which uses the results of semantic analysis to provide code-completion results. At present, only a single, "printing" code completion consumer is available, for regression testing and debugging. However, the design is meant to permit other code-completion consumers. This initial commit contains two code-completion actions: one for member access, e.g., "x." or "p->", and one for nested-name-specifiers, e.g., "std::". More code-completion actions will follow, along with improved gathering of code-completion results for the various contexts. [*] In the current -code-completion-dump testing/debugging mode, the file is truncated at the completion point and EOF is translated into "code completion". llvm-svn: 82166
OpenPOWER on IntegriCloud