From e02bd00a7bc9ccbdc1aec1d77d5b77c08b8bd5ea Mon Sep 17 00:00:00 2001 From: Argyrios Kyrtzidis Date: Sat, 18 Oct 2014 06:23:50 +0000 Subject: [PATCH] [libclang] If the code-completion point is inside the preamble, adjust the position at the beginning of the file after the preamble. Otherwise we will not hit the code-completion point. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@220136 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Lex/Preprocessor.cpp | 9 +++++++++ test/Index/complete-at-EOF.c | 4 ++++ 2 files changed, 13 insertions(+) diff --git a/lib/Lex/Preprocessor.cpp b/lib/Lex/Preprocessor.cpp index c15a6ab956..5da54aea30 100644 --- a/lib/Lex/Preprocessor.cpp +++ b/lib/Lex/Preprocessor.cpp @@ -384,6 +384,15 @@ bool Preprocessor::SetCodeCompletionPoint(const FileEntry *File, } Position += CompleteColumn - 1; + + // If pointing inside the preamble, adjust the position at the beginning of + // the file after the preamble. + if (SkipMainFilePreamble.first && + SourceMgr.getFileEntryForID(SourceMgr.getMainFileID()) == File) { + if (Position - Buffer->getBufferStart() < SkipMainFilePreamble.first) + Position = Buffer->getBufferStart() + SkipMainFilePreamble.first; + } + if (Position > Buffer->getBufferEnd()) Position = Buffer->getBufferEnd(); diff --git a/test/Index/complete-at-EOF.c b/test/Index/complete-at-EOF.c index ff39233f0a..d039aaa1af 100644 --- a/test/Index/complete-at-EOF.c +++ b/test/Index/complete-at-EOF.c @@ -3,3 +3,7 @@ // RUN: -code-completion-at=%S/Inputs/complete-at-EOF.c:4:1 %S/Inputs/complete-at-EOF.c | FileCheck -check-prefix=CHECK-EOF %s // CHECK-EOF: macro definition:{TypedText CAKE} // CHECK-EOF: TypedefDecl:{TypedText foo} + +// RUN: env CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_CACHING=1 c-index-test \ +// RUN: -code-completion-at=%S/Inputs/complete-at-EOF.c:2:1 %S/Inputs/complete-at-EOF.c | FileCheck -check-prefix=CHECK-AFTER-PREAMBLE %s +// CHECK-AFTER-PREAMBLE: macro definition:{TypedText CAKE} -- 2.40.0