diff options
author | Daniel Dunbar <daniel@zuster.org> | 2009-11-13 08:58:20 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2009-11-13 08:58:20 +0000 |
commit | 3a2838d14251427089c39caec90c8abbc27f7a14 (patch) | |
tree | cfa0899c839011c5e79e08a39c7f2f45d16afe43 /include/clang/Sema/CodeCompleteConsumer.h | |
parent | 0f800391ffbfe3820e1c60246a09a97e5f065179 (diff) |
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.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87099 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/clang/Sema/CodeCompleteConsumer.h')
-rw-r--r-- | include/clang/Sema/CodeCompleteConsumer.h | 33 |
1 files changed, 13 insertions, 20 deletions
diff --git a/include/clang/Sema/CodeCompleteConsumer.h b/include/clang/Sema/CodeCompleteConsumer.h index c436b398f9..5d27b1a90f 100644 --- a/include/clang/Sema/CodeCompleteConsumer.h +++ b/include/clang/Sema/CodeCompleteConsumer.h @@ -373,17 +373,18 @@ public: /// \name Code-completion callbacks //@{ /// \brief Process the finalized code-completion results. - virtual void ProcessCodeCompleteResults(Result *Results, + virtual void ProcessCodeCompleteResults(Sema &S, Result *Results, unsigned NumResults) { } - - /// \brief Process the set of overload candidates. + + /// \param S the semantic-analyzer object for which code-completion is being + /// done. /// /// \param CurrentArg the index of the current argument. /// /// \param Candidates an array of overload candidates. /// /// \param NumCandidates the number of overload candidates - virtual void ProcessOverloadCandidates(unsigned CurrentArg, + virtual void ProcessOverloadCandidates(Sema &S, unsigned CurrentArg, OverloadCandidate *Candidates, unsigned NumCandidates) { } //@} @@ -392,25 +393,21 @@ public: /// \brief A simple code-completion consumer that prints the results it /// receives in a simple format. class PrintingCodeCompleteConsumer : public CodeCompleteConsumer { - /// \brief The semantic-analysis object to which this code-completion - /// consumer is attached. - Sema &SemaRef; - /// \brief The raw output stream. llvm::raw_ostream &OS; public: /// \brief Create a new printing code-completion consumer that prints its /// results to the given raw output stream. - PrintingCodeCompleteConsumer(Sema &S, bool IncludeMacros, + PrintingCodeCompleteConsumer(bool IncludeMacros, llvm::raw_ostream &OS) - : CodeCompleteConsumer(IncludeMacros), SemaRef(S), OS(OS) { } + : CodeCompleteConsumer(IncludeMacros), OS(OS) { } /// \brief Prints the finalized code-completion results. - virtual void ProcessCodeCompleteResults(Result *Results, + virtual void ProcessCodeCompleteResults(Sema &S, Result *Results, unsigned NumResults); - virtual void ProcessOverloadCandidates(unsigned CurrentArg, + virtual void ProcessOverloadCandidates(Sema &S, unsigned CurrentArg, OverloadCandidate *Candidates, unsigned NumCandidates); }; @@ -418,10 +415,6 @@ public: /// \brief A code-completion consumer that prints the results it receives /// in a format that is parsable by the CIndex library. class CIndexCodeCompleteConsumer : public CodeCompleteConsumer { - /// \brief The semantic-analysis object to which this code-completion - /// consumer is attached. - Sema &SemaRef; - /// \brief The raw output stream. llvm::raw_ostream &OS; @@ -429,14 +422,14 @@ public: /// \brief Create a new CIndex code-completion consumer that prints its /// results to the given raw output stream in a format readable to the CIndex /// library. - CIndexCodeCompleteConsumer(Sema &S, bool IncludeMacros, llvm::raw_ostream &OS) - : CodeCompleteConsumer(IncludeMacros), SemaRef(S), OS(OS) { } + CIndexCodeCompleteConsumer(bool IncludeMacros, llvm::raw_ostream &OS) + : CodeCompleteConsumer(IncludeMacros), OS(OS) { } /// \brief Prints the finalized code-completion results. - virtual void ProcessCodeCompleteResults(Result *Results, + virtual void ProcessCodeCompleteResults(Sema &S, Result *Results, unsigned NumResults); - virtual void ProcessOverloadCandidates(unsigned CurrentArg, + virtual void ProcessOverloadCandidates(Sema &S, unsigned CurrentArg, OverloadCandidate *Candidates, unsigned NumCandidates); }; |