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
This commit is contained in:
Daniel Dunbar
2009-11-13 08:58:20 +00:00
parent 599313ef94
commit 242ea9a05a
8 changed files with 99 additions and 123 deletions

View File

@@ -508,7 +508,8 @@ CodeCompleteConsumer::OverloadCandidate::getFunctionType() const {
CodeCompleteConsumer::~CodeCompleteConsumer() { }
void
PrintingCodeCompleteConsumer::ProcessCodeCompleteResults(Result *Results,
PrintingCodeCompleteConsumer::ProcessCodeCompleteResults(Sema &SemaRef,
Result *Results,
unsigned NumResults) {
// Print the results.
for (unsigned I = 0; I != NumResults; ++I) {
@@ -552,7 +553,8 @@ PrintingCodeCompleteConsumer::ProcessCodeCompleteResults(Result *Results,
}
void
PrintingCodeCompleteConsumer::ProcessOverloadCandidates(unsigned CurrentArg,
PrintingCodeCompleteConsumer::ProcessOverloadCandidates(Sema &SemaRef,
unsigned CurrentArg,
OverloadCandidate *Candidates,
unsigned NumCandidates) {
for (unsigned I = 0; I != NumCandidates; ++I) {
@@ -570,7 +572,8 @@ PrintingCodeCompleteConsumer::ProcessOverloadCandidates(unsigned CurrentArg,
}
void
CIndexCodeCompleteConsumer::ProcessCodeCompleteResults(Result *Results,
CIndexCodeCompleteConsumer::ProcessCodeCompleteResults(Sema &SemaRef,
Result *Results,
unsigned NumResults) {
// Print the results.
for (unsigned I = 0; I != NumResults; ++I) {
@@ -632,7 +635,8 @@ CIndexCodeCompleteConsumer::ProcessCodeCompleteResults(Result *Results,
}
void
CIndexCodeCompleteConsumer::ProcessOverloadCandidates(unsigned CurrentArg,
CIndexCodeCompleteConsumer::ProcessOverloadCandidates(Sema &SemaRef,
unsigned CurrentArg,
OverloadCandidate *Candidates,
unsigned NumCandidates) {
for (unsigned I = 0; I != NumCandidates; ++I) {