summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/CodeCompleteConsumer.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Add code-completion support directly to ASTUnit, which performs codeDouglas Gregor2010-08-041-54/+46
| | | | | | | | | | | | | | completion within the translation unit using the same command-line arguments for parsing the translation unit. Eventually, we'll reuse the precompiled preamble to improve code-completion performance, and this also gives us a place to cache results. Expose this function via the new libclang function clang_codeCompleteAt(), which performs the code completion within a CXTranslationUnit. The completion occurs in-process (clang_codeCompletion() runs code completion out-of-process). llvm-svn: 110210
* Minor code simplification.Dan Gohman2010-07-261-2/+1
| | | | llvm-svn: 109443
* Introduce priorities into the code-completion results.Douglas Gregor2010-05-261-13/+34
| | | | llvm-svn: 104751
* Improve code completion in failure cases in two ways:Douglas Gregor2010-05-251-20/+0
| | | | | | | | | | | 1) Suppress diagnostics as soon as we form the code-completion token, so we don't get any error/warning spew from the early end-of-file. 2) If we consume a code-completion token when we weren't expecting one, go into a code-completion recovery path that produces the best results it can based on the context that the parser is in. llvm-svn: 104585
* Add raw_ostream operators to NamedDecl for convenience. Switch over all ↵Benjamin Kramer2010-04-171-1/+1
| | | | | | | | users of getNameAsString on a stream. The next step is to print the name directly into the stream, avoiding a temporary std::string copy. llvm-svn: 101632
* Implement code completion for Objective-C method declarations andDouglas Gregor2010-04-071-1/+1
| | | | | | | | | | | | | | | | definitions, e.g., after - or - (id) we'll find all of the "likely" instance methods that one would want to declare or define at this point. In the latter case, we only produce results whose return types match "id". llvm-svn: 100587
* Code completion results that refer to macros now get the cursor kindDouglas Gregor2010-04-051-2/+5
| | | | | | | of macro definitions when passed to CIndex. Add test for code completion of macros via CIndex. llvm-svn: 100431
* Remove unused headers.Duncan Sands2010-03-081-1/+0
| | | | llvm-svn: 97941
* Eliminate cursor kinds used to express definitions. Instead, provideDouglas Gregor2010-01-191-2/+2
| | | | | | | | | | | | CIndex functions that (1) map from a reference or declaration to the corresponding definition, if available, and (2) determine whether a given declaration cursor is also a definition. This eliminates a lot of duplication in the cursor kinds, and maps more closely to the Clang ASTs. This is another API + ABI breaker with no deprecation. Yay, progress. llvm-svn: 93893
* Improve the sorting of code-completion results. We now always sort byDouglas Gregor2010-01-131-6/+5
| | | | | | | | 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
* Improve code completion by introducing patterns for the various C andDouglas Gregor2010-01-101-0/+40
| | | | | | | | | | | | | | | | | | | | | | 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
* Extend code-completion results with the type of each resultDouglas Gregor2009-12-181-1/+16
| | | | llvm-svn: 91702
* 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
* Switch the clang-to-CIndex interface for code-completion to a binary format, ↵Douglas Gregor2009-12-011-319/+172
| | | | | | for a massive speedup llvm-svn: 90209
* Remove remaining VISIBILITY_HIDDEN from anonymous namespaces.Benjamin Kramer2009-11-281-1/+0
| | | | llvm-svn: 90044
* Improve code-completion results for the flags in an @propertyDouglas Gregor2009-11-191-0/+61
| | | | | | | | | 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
* StringRef'ify CodeCompletionStringDouglas Gregor2009-11-171-4/+6
| | | | llvm-svn: 89102
* Rework Sema code completion interface.Daniel Dunbar2009-11-131-4/+8
| | | | | | | | | | | | | - 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
* Spell empty StringRef correctly (0 is a null StringRef, which is not the same).Daniel Dunbar2009-11-121-1/+1
| | | | llvm-svn: 87011
* Various improvements to Clang's code-completion infrastructure:Douglas Gregor2009-11-071-8/+465
| | | | | | | | | | | | | | - 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
* 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