capfredf updated this revision to Diff 539572.
capfredf marked 2 inline comments as done.
capfredf edited the summary of this revision.
capfredf added a comment.
Herald added a subscriber: arphaman.
- rename
- Do not export ReplCompletionConsumer
- remove commented code
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D154382/new/
https://reviews.llvm.org/D154382
Files:
clang/include/clang/Interpreter/CodeCompletion.h
clang/include/clang/Interpreter/Interpreter.h
clang/include/clang/Sema/Sema.h
clang/lib/Interpreter/CodeCompletion.cpp
clang/lib/Interpreter/IncrementalParser.cpp
clang/lib/Interpreter/Interpreter.cpp
clang/lib/Parse/Parser.cpp
clang/lib/Sema/SemaCodeComplete.cpp
clang/tools/libclang/CIndexCodeCompletion.cpp
Index: clang/tools/libclang/CIndexCodeCompletion.cpp
===================================================================
--- clang/tools/libclang/CIndexCodeCompletion.cpp
+++ clang/tools/libclang/CIndexCodeCompletion.cpp
@@ -543,6 +543,7 @@
case CodeCompletionContext::CCC_PreprocessorExpression:
case CodeCompletionContext::CCC_PreprocessorDirective:
case CodeCompletionContext::CCC_Attribute:
+ case CodeCompletionContext::CCC_ReplTopLevel:
case CodeCompletionContext::CCC_TypeQualifiers: {
//Only Clang results should be accepted, so we'll set all of the other
//context bits to 0 (i.e. the empty set)
Index: clang/lib/Sema/SemaCodeComplete.cpp
===================================================================
--- clang/lib/Sema/SemaCodeComplete.cpp
+++ clang/lib/Sema/SemaCodeComplete.cpp
@@ -1851,7 +1851,7 @@
case Sema::PCC_ObjCInstanceVariableList:
case Sema::PCC_Expression:
case Sema::PCC_Statement:
- case Sema::PCC_ReplTopLevel:
+ case Sema::PCC_TopLevelStmtDecl:
case Sema::PCC_ForInit:
case Sema::PCC_Condition:
case Sema::PCC_RecoveryInFunction:
@@ -1909,7 +1909,7 @@
case Sema::PCC_Type:
case Sema::PCC_ParenthesizedExpression:
case Sema::PCC_LocalDeclarationSpecifiers:
- case Sema::PCC_ReplTopLevel:
+ case Sema::PCC_TopLevelStmtDecl:
return true;
case Sema::PCC_Expression:
@@ -2222,7 +2222,7 @@
break;
case Sema::PCC_RecoveryInFunction:
- case Sema::PCC_ReplTopLevel:
+ case Sema::PCC_TopLevelStmtDecl:
case Sema::PCC_Statement: {
if (SemaRef.getLangOpts().CPlusPlus11)
AddUsingAliasResult(Builder, Results);
@@ -4212,7 +4212,7 @@
case Sema::PCC_LocalDeclarationSpecifiers:
return CodeCompletionContext::CCC_Type;
- case Sema::PCC_ReplTopLevel:
+ case Sema::PCC_TopLevelStmtDecl:
return CodeCompletionContext::CCC_ReplTopLevel;
}
@@ -4354,7 +4354,7 @@
break;
case PCC_Statement:
- case PCC_ReplTopLevel:
+ case PCC_TopLevelStmtDecl:
case PCC_ParenthesizedExpression:
case PCC_Expression:
case PCC_ForInit:
@@ -4392,7 +4392,7 @@
case PCC_ParenthesizedExpression:
case PCC_Expression:
case PCC_Statement:
- case PCC_ReplTopLevel:
+ case PCC_TopLevelStmtDecl:
case PCC_RecoveryInFunction:
if (S->getFnParent())
AddPrettyFunctionResults(getLangOpts(), Results);
Index: clang/lib/Parse/Parser.cpp
===================================================================
--- clang/lib/Parse/Parser.cpp
+++ clang/lib/Parse/Parser.cpp
@@ -928,7 +928,7 @@
if (CurParsedObjCImpl) {
PCC = Sema::PCC_ObjCImplementation;
} else if (PP.isIncrementalProcessingEnabled()) {
- PCC = Sema::PCC_ReplTopLevel;
+ PCC = Sema::PCC_TopLevelStmtDecl;
} else {
PCC = Sema::PCC_Namespace;
};
Index: clang/lib/Interpreter/Interpreter.cpp
===================================================================
--- clang/lib/Interpreter/Interpreter.cpp
+++ clang/lib/Interpreter/Interpreter.cpp
@@ -239,12 +239,11 @@
}
Interpreter::Interpreter(std::unique_ptr<CompilerInstance> CI, llvm::Error &Err,
- std::vector<CodeCompletionResult> &CompResults,
+ CodeCompleteConsumer* CConsumer,
const CompilerInstance *ParentCI) {
llvm::ErrorAsOutParameter EAO(&Err);
auto LLVMCtx = std::make_unique<llvm::LLVMContext>();
TSCtx = std::make_unique<llvm::orc::ThreadSafeContext>(std::move(LLVMCtx));
- auto *CConsumer = new ReplCompletionConsumer(CompResults);
CI->setCodeCompletionConsumer(CConsumer);
IncrParser = std::make_unique<IncrementalParser>(
*this, std::move(CI), *TSCtx->getContext(), Err, ParentCI);
@@ -304,7 +303,7 @@
llvm::Expected<std::unique_ptr<Interpreter>>
Interpreter::createForCodeCompletion(
IncrementalCompilerBuilder &CB, const CompilerInstance *ParentCI,
- std::vector<CodeCompletionResult> &CompResults) {
+ CodeCompleteConsumer* CConsumer) {
auto CI = CB.CreateCpp();
if (auto Err = CI.takeError()) {
return std::move(Err);
@@ -315,12 +314,9 @@
(*CI)->getLangOpts().SpellChecking = false;
(*CI)->getLangOpts().DelayedTemplateParsing = false;
- auto &FrontendOpts = (*CI)->getFrontendOpts();
- FrontendOpts.CodeCompleteOpts = getClangCompleteOpts();
-
llvm::Error Err = llvm::Error::success();
auto Interp = std::unique_ptr<Interpreter>(
- new Interpreter(std::move(*CI), Err, CompResults, ParentCI));
+ new Interpreter(std::move(*CI), Err, CConsumer, ParentCI));
if (Err)
return std::move(Err);
Index: clang/lib/Interpreter/IncrementalParser.cpp
===================================================================
--- clang/lib/Interpreter/IncrementalParser.cpp
+++ clang/lib/Interpreter/IncrementalParser.cpp
@@ -331,11 +331,7 @@
auto [FID, SrcLoc] = createSourceFile(SourceName.str(), input);
auto FE = CI->getSourceManager().getFileEntryRefForID(FID);
- // auto Entry = PP.getFileManager().getFile(DummyFN);
- // if (!Entry) {
- // std::cout << "Entry invalid \n";
- // return;
- // }
+
if (FE) {
PP.SetCodeCompletionPoint(*FE, Line, Col);
@@ -372,13 +368,12 @@
// candidates for example
SourceLocation NewLoc = SM.getLocForStartOfFile(SM.getMainFileID());
- // Create FileID for the current buffer.
- // FileID FID = SM.createFileID(std::move(MB), SrcMgr::C_User, /*LoadedID=*/0,
- // /*LoadedOffset=*/0, NewLoc);
const clang::FileEntry *FE = SM.getFileManager().getVirtualFile(
SourceName.str(), InputSize, 0 /* mod time*/);
SM.overrideFileContents(FE, std::move(MB));
+
+ // Create FileID for the current buffer.
FileID FID = SM.createFileID(FE, NewLoc, SrcMgr::C_User);
return {FID, NewLoc};
}
Index: clang/lib/Interpreter/CodeCompletion.cpp
===================================================================
--- clang/lib/Interpreter/CodeCompletion.cpp
+++ clang/lib/Interpreter/CodeCompletion.cpp
@@ -28,6 +28,32 @@
return Opts;
}
+
+class ReplCompletionConsumer : public CodeCompleteConsumer {
+public:
+ ReplCompletionConsumer(std::vector<CodeCompletionResult> &Results)
+ : CodeCompleteConsumer(getClangCompleteOpts()),
+ CCAllocator(std::make_shared<GlobalCodeCompletionAllocator>()),
+ CCTUInfo(CCAllocator), Results(Results){};
+ void ProcessCodeCompleteResults(class Sema &S, CodeCompletionContext Context,
+ CodeCompletionResult *InResults,
+ unsigned NumResults) final;
+
+ clang::CodeCompletionAllocator &getAllocator() override {
+ return *CCAllocator;
+ }
+
+ clang::CodeCompletionTUInfo &getCodeCompletionTUInfo() override {
+ return CCTUInfo;
+ }
+
+private:
+ std::shared_ptr<GlobalCodeCompletionAllocator> CCAllocator;
+ CodeCompletionTUInfo CCTUInfo;
+ std::vector<CodeCompletionResult> &Results;
+};
+
+
void ReplCompletionConsumer::ProcessCodeCompleteResults(
class Sema &S, CodeCompletionContext Context,
CodeCompletionResult *InResults, unsigned NumResults) {
@@ -68,12 +94,14 @@
return CompletionStrings;
}
+
std::vector<llvm::LineEditor::Completion>
ReplListCompleter::operator()(llvm::StringRef Buffer, size_t Pos) const {
std::vector<llvm::LineEditor::Completion> Comps;
std::vector<CodeCompletionResult> Results;
+ auto *CConsumer = new ReplCompletionConsumer(Results);
auto Interp = Interpreter::createForCodeCompletion(
- CB, MainInterp.getCompilerInstance(), Results);
+ CB, MainInterp.getCompilerInstance(), CConsumer);
if (auto Err = Interp.takeError()) {
// log the error and returns an empty vector;
Index: clang/include/clang/Sema/Sema.h
===================================================================
--- clang/include/clang/Sema/Sema.h
+++ clang/include/clang/Sema/Sema.h
@@ -13321,7 +13321,7 @@
/// specifiers within a function, method, or block.
PCC_LocalDeclarationSpecifiers,
/// Code completion occurs at top-level in a REPL session
- PCC_ReplTopLevel,
+ PCC_TopLevelStmtDecl,
};
void CodeCompleteModuleImport(SourceLocation ImportLoc, ModuleIdPath Path);
Index: clang/include/clang/Interpreter/Interpreter.h
===================================================================
--- clang/include/clang/Interpreter/Interpreter.h
+++ clang/include/clang/Interpreter/Interpreter.h
@@ -39,7 +39,7 @@
class CompilerInstance;
class IncrementalExecutor;
class IncrementalParser;
-class ReplCompletionConsumer;
+class CodeCompleteConsumer;
/// Create a pre-configured \c CompilerInstance for incremental processing.
class IncrementalCompilerBuilder {
@@ -82,11 +82,10 @@
// An optional parser for CUDA offloading
std::unique_ptr<IncrementalParser> DeviceParser;
- std::unique_ptr<ReplCompletionConsumer> CConsumer;
Interpreter(std::unique_ptr<CompilerInstance> CI, llvm::Error &Err);
Interpreter(std::unique_ptr<CompilerInstance> CI, llvm::Error &Err,
- std::vector<CodeCompletionResult> &CompResults,
+ CodeCompleteConsumer* CConsumer,
const CompilerInstance *ParentCI = nullptr);
llvm::Error CreateExecutor();
@@ -110,7 +109,7 @@
static llvm::Expected<std::unique_ptr<Interpreter>>
createForCodeCompletion(IncrementalCompilerBuilder &CB,
const CompilerInstance *ParentCI,
- std::vector<CodeCompletionResult> &CompResults);
+ CodeCompleteConsumer* CConsumer);
const ASTContext &getASTContext() const;
ASTContext &getASTContext();
Index: clang/include/clang/Interpreter/CodeCompletion.h
===================================================================
--- clang/include/clang/Interpreter/CodeCompletion.h
+++ clang/include/clang/Interpreter/CodeCompletion.h
@@ -19,31 +19,6 @@
class Interpreter;
class IncrementalCompilerBuilder;
-clang::CodeCompleteOptions getClangCompleteOpts();
-
-class ReplCompletionConsumer : public CodeCompleteConsumer {
-public:
- ReplCompletionConsumer(std::vector<CodeCompletionResult> &Results)
- : CodeCompleteConsumer(getClangCompleteOpts()),
- CCAllocator(std::make_shared<GlobalCodeCompletionAllocator>()),
- CCTUInfo(CCAllocator), Results(Results){};
- void ProcessCodeCompleteResults(class Sema &S, CodeCompletionContext Context,
- CodeCompletionResult *InResults,
- unsigned NumResults) final;
-
- clang::CodeCompletionAllocator &getAllocator() override {
- return *CCAllocator;
- }
-
- clang::CodeCompletionTUInfo &getCodeCompletionTUInfo() override {
- return CCTUInfo;
- }
-
-private:
- std::shared_ptr<GlobalCodeCompletionAllocator> CCAllocator;
- CodeCompletionTUInfo CCTUInfo;
- std::vector<CodeCompletionResult> &Results;
-};
struct ReplListCompleter {
IncrementalCompilerBuilder &CB;
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits