summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Donchevskii <ivan.donchevskii@qt.io>2018-10-15 13:12:19 +0200
committerIvan Donchevskii <ivan.donchevskii@qt.io>2018-10-16 10:08:08 +0000
commit78fbb0826b1cc229f51406614b295cdf3073f88c (patch)
treee9ec10aad5a5451035e67d6cfce4d9ad972e1e7a
parent3e93f66c5d1cdf4a641f456df1b2ff3c0d37fc01 (diff)
downloadqt-creator-78fbb0826b1cc229f51406614b295cdf3073f88c.tar.gz
Clang: Fix fix-its positions calculation
Code completion does not save the unsaved file contents in translation unit therefore we need to access unsaved file directly to calculate the proper UTF-16 column. Change-Id: I0f217b0d36e0ff94ebc483ed6bef94b55efd311a Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
-rw-r--r--src/tools/clangbackend/source/codecompleter.cpp8
-rw-r--r--src/tools/clangbackend/source/codecompletionsextractor.cpp30
-rw-r--r--src/tools/clangbackend/source/codecompletionsextractor.h6
-rw-r--r--tests/unit/unittest/codecompletionsextractor-test.cpp94
4 files changed, 82 insertions, 56 deletions
diff --git a/src/tools/clangbackend/source/codecompleter.cpp b/src/tools/clangbackend/source/codecompleter.cpp
index 5520b5b3a9..0613adf146 100644
--- a/src/tools/clangbackend/source/codecompleter.cpp
+++ b/src/tools/clangbackend/source/codecompleter.cpp
@@ -48,14 +48,14 @@ namespace ClangBackEnd {
namespace {
-CodeCompletions toCodeCompletions(const TranslationUnit &translationUnit,
+CodeCompletions toCodeCompletions(const UnsavedFile &unsavedFile,
const ClangCodeCompleteResults &results,
bool onlyFunctionOverloads)
{
if (results.isNull())
return CodeCompletions();
- CodeCompletionsExtractor extractor(translationUnit.cxTranslationUnit(), results.data());
+ CodeCompletionsExtractor extractor(unsavedFile, results.data());
CodeCompletions codeCompletions = extractor.extractAll(onlyFunctionOverloads);
return codeCompletions;
@@ -118,7 +118,9 @@ CodeCompletions CodeCompleter::complete(uint line, uint column,
filterUnknownContextResults(clangCompletions, unsavedFile(), line, column);
- return toCodeCompletions(translationUnit, clangCompletions, funcNameStartLine >= 0);
+ return toCodeCompletions(unsavedFiles.unsavedFile(translationUnit.filePath()),
+ clangCompletions,
+ funcNameStartLine >= 0);
}
// For given "make_unique<T>" / "make_shared<T>" / "QSharedPointer<T>::create" return "new T("
diff --git a/src/tools/clangbackend/source/codecompletionsextractor.cpp b/src/tools/clangbackend/source/codecompletionsextractor.cpp
index 25be6bddcf..2e2817c72b 100644
--- a/src/tools/clangbackend/source/codecompletionsextractor.cpp
+++ b/src/tools/clangbackend/source/codecompletionsextractor.cpp
@@ -31,19 +31,20 @@
#include "codecompletionchunkconverter.h"
#include "sourcelocation.h"
#include "sourcerange.h"
+#include "unsavedfile.h"
#include <utils/algorithm.h>
+#include <utils/qtcassert.h>
#include <QDebug>
namespace ClangBackEnd {
-CodeCompletionsExtractor::CodeCompletionsExtractor(CXTranslationUnit cxTranslationUnit,
+CodeCompletionsExtractor::CodeCompletionsExtractor(const UnsavedFile &unsavedFile,
CXCodeCompleteResults *cxCodeCompleteResults)
- : cxTranslationUnit(cxTranslationUnit)
+ : unsavedFile(unsavedFile)
, cxCodeCompleteResults(cxCodeCompleteResults)
{
-
}
bool CodeCompletionsExtractor::next()
@@ -342,6 +343,27 @@ void CodeCompletionsExtractor::extractCompletionChunks()
currentCodeCompletion_.chunks = CodeCompletionChunkConverter::extract(currentCxCodeCompleteResult.CompletionString);
}
+SourceRangeContainer toRangeContainer(const UnsavedFile &file, CXSourceRange cxSourceRange)
+{
+ const CXSourceLocation start = clang_getRangeStart(cxSourceRange);
+ const CXSourceLocation end = clang_getRangeEnd(cxSourceRange);
+
+ uint startLine = 0;
+ uint startColumn = 0;
+ uint endLine = 0;
+ uint endColumn = 0;
+ clang_getFileLocation(start, nullptr, &startLine, &startColumn, nullptr);
+ clang_getFileLocation(end, nullptr, &endLine, &endColumn, nullptr);
+ QTC_ASSERT(startLine == endLine, return SourceRangeContainer(););
+
+ const Utf8String lineText = file.lineRange(startLine, endLine);
+ startColumn = QString(lineText.mid(0, startColumn - 1)).size() + 1;
+ endColumn = QString(lineText.mid(0, endColumn - 1)).size() + 1;
+
+ return SourceRangeContainer(SourceLocationContainer(file.filePath(), startLine, startColumn),
+ SourceLocationContainer(file.filePath(), endLine, endColumn));
+}
+
void CodeCompletionsExtractor::extractRequiredFixIts()
{
#ifdef IS_COMPLETION_FIXITS_BACKPORTED
@@ -358,7 +380,7 @@ void CodeCompletionsExtractor::extractRequiredFixIts()
i,
&range);
currentCodeCompletion_.requiredFixIts.push_back(
- FixItContainer(Utf8String(fixIt), SourceRange(cxTranslationUnit, range)));
+ FixItContainer(Utf8String(fixIt), toRangeContainer(unsavedFile, range)));
}
#endif
}
diff --git a/src/tools/clangbackend/source/codecompletionsextractor.h b/src/tools/clangbackend/source/codecompletionsextractor.h
index 928dabd25d..bba9aa6eb5 100644
--- a/src/tools/clangbackend/source/codecompletionsextractor.h
+++ b/src/tools/clangbackend/source/codecompletionsextractor.h
@@ -35,10 +35,12 @@
namespace ClangBackEnd {
+class UnsavedFile;
+
class CodeCompletionsExtractor
{
public:
- CodeCompletionsExtractor(CXTranslationUnit cxTranslationUnit,
+ CodeCompletionsExtractor(const UnsavedFile &unsavedFile,
CXCodeCompleteResults *cxCodeCompleteResults);
CodeCompletionsExtractor(CodeCompletionsExtractor&) = delete;
@@ -79,7 +81,7 @@ private:
private:
CodeCompletion currentCodeCompletion_;
- CXTranslationUnit cxTranslationUnit;
+ const UnsavedFile &unsavedFile;
CXCompletionResult currentCxCodeCompleteResult;
CXCodeCompleteResults *cxCodeCompleteResults;
uint cxCodeCompleteResultIndex = 0;
diff --git a/tests/unit/unittest/codecompletionsextractor-test.cpp b/tests/unit/unittest/codecompletionsextractor-test.cpp
index b7c44f2cca..7907ef8737 100644
--- a/tests/unit/unittest/codecompletionsextractor-test.cpp
+++ b/tests/unit/unittest/codecompletionsextractor-test.cpp
@@ -166,7 +166,7 @@ TEST_F(CodeCompletionsExtractorSlowTest, Function)
ClangCodeCompleteResults completeResults(getResults(functionDocument, 20));
::CodeCompletionsExtractor extractor(
- functionDocument.translationUnit().cxTranslationUnit(),
+ unsavedFiles.unsavedFile(functionDocument.filePath()),
completeResults.data());
ASSERT_THAT(extractor, HasCompletion(Utf8StringLiteral("Function"),
@@ -179,7 +179,7 @@ TEST_F(CodeCompletionsExtractorSlowTest, TemplateFunction)
ClangCodeCompleteResults completeResults(getResults(functionDocument, 20));
::CodeCompletionsExtractor extractor(
- functionDocument.translationUnit().cxTranslationUnit(),
+ unsavedFiles.unsavedFile(functionDocument.filePath()),
completeResults.data());
ASSERT_THAT(extractor, HasCompletion(Utf8StringLiteral("TemplateFunction"),
@@ -192,7 +192,7 @@ TEST_F(CodeCompletionsExtractorSlowTest, Variable)
ClangCodeCompleteResults completeResults(getResults(variableDocument, 4));
::CodeCompletionsExtractor extractor(
- variableDocument.translationUnit().cxTranslationUnit(),
+ unsavedFiles.unsavedFile(variableDocument.filePath()),
completeResults.data());
ASSERT_THAT(extractor, HasCompletion(Utf8StringLiteral("Var"),
@@ -205,7 +205,7 @@ TEST_F(CodeCompletionsExtractorSlowTest, NonTypeTemplateParameter)
ClangCodeCompleteResults completeResults(getResults(variableDocument, 25, 19));
::CodeCompletionsExtractor extractor(
- variableDocument.translationUnit().cxTranslationUnit(),
+ unsavedFiles.unsavedFile(variableDocument.filePath()),
completeResults.data());
ASSERT_THAT(extractor, HasCompletion(Utf8StringLiteral("NonTypeTemplateParameter"),
@@ -219,7 +219,7 @@ TEST_F(CodeCompletionsExtractorSlowTest, VariableReference)
ClangCodeCompleteResults completeResults(getResults(variableDocument, 12));
::CodeCompletionsExtractor extractor(
- variableDocument.translationUnit().cxTranslationUnit(),
+ unsavedFiles.unsavedFile(variableDocument.filePath()),
completeResults.data());
ASSERT_THAT(extractor, HasCompletion(Utf8StringLiteral("Var"),
@@ -232,7 +232,7 @@ TEST_F(CodeCompletionsExtractorSlowTest, Parameter)
ClangCodeCompleteResults completeResults(getResults(variableDocument, 4));
::CodeCompletionsExtractor extractor(
- variableDocument.translationUnit().cxTranslationUnit(),
+ unsavedFiles.unsavedFile(variableDocument.filePath()),
completeResults.data());
ASSERT_THAT(extractor, HasCompletion(Utf8StringLiteral("Parameter"),
@@ -245,7 +245,7 @@ TEST_F(CodeCompletionsExtractorSlowTest, Field)
ClangCodeCompleteResults completeResults(getResults(variableDocument, 20));
::CodeCompletionsExtractor extractor(
- variableDocument.translationUnit().cxTranslationUnit(),
+ unsavedFiles.unsavedFile(variableDocument.filePath()),
completeResults.data());
ASSERT_THAT(extractor, HasCompletion(Utf8StringLiteral("Field"),
@@ -258,7 +258,7 @@ TEST_F(CodeCompletionsExtractorSlowTest, Class)
ClangCodeCompleteResults completeResults(getResults(classDocument, 20));
::CodeCompletionsExtractor extractor(
- classDocument.translationUnit().cxTranslationUnit(),
+ unsavedFiles.unsavedFile(classDocument.filePath()),
completeResults.data());
ASSERT_THAT(extractor, HasCompletion(Utf8StringLiteral("Class"),
@@ -271,7 +271,7 @@ TEST_F(CodeCompletionsExtractorSlowTest, Struct)
ClangCodeCompleteResults completeResults(getResults(classDocument, 20));
::CodeCompletionsExtractor extractor(
- classDocument.translationUnit().cxTranslationUnit(),
+ unsavedFiles.unsavedFile(classDocument.filePath()),
completeResults.data());
ASSERT_THAT(extractor, HasCompletion(Utf8StringLiteral("Struct"),
@@ -284,7 +284,7 @@ TEST_F(CodeCompletionsExtractorSlowTest, Union)
ClangCodeCompleteResults completeResults(getResults(classDocument, 20));
::CodeCompletionsExtractor extractor(
- classDocument.translationUnit().cxTranslationUnit(),
+ unsavedFiles.unsavedFile(classDocument.filePath()),
completeResults.data());
ASSERT_THAT(extractor, HasCompletion(Utf8StringLiteral("Union"),
@@ -297,7 +297,7 @@ TEST_F(CodeCompletionsExtractorSlowTest, Typedef)
ClangCodeCompleteResults completeResults(getResults(classDocument, 20));
::CodeCompletionsExtractor extractor(
- classDocument.translationUnit().cxTranslationUnit(),
+ unsavedFiles.unsavedFile(classDocument.filePath()),
completeResults.data());
ASSERT_THAT(extractor, HasCompletion(Utf8StringLiteral("TypeDef"),
@@ -310,7 +310,7 @@ TEST_F(CodeCompletionsExtractorSlowTest, UsingAsTypeAlias)
ClangCodeCompleteResults completeResults(getResults(classDocument, 20));
::CodeCompletionsExtractor extractor(
- classDocument.translationUnit().cxTranslationUnit(),
+ unsavedFiles.unsavedFile(classDocument.filePath()),
completeResults.data());
ASSERT_THAT(extractor, HasCompletion(Utf8StringLiteral("UsingClass"),
@@ -323,7 +323,7 @@ TEST_F(CodeCompletionsExtractorSlowTest, TemplateTypeParameter)
ClangCodeCompleteResults completeResults(getResults(classDocument, 20));
::CodeCompletionsExtractor extractor(
- classDocument.translationUnit().cxTranslationUnit(),
+ unsavedFiles.unsavedFile(classDocument.filePath()),
completeResults.data());
ASSERT_THAT(extractor, HasCompletion(Utf8StringLiteral("TemplateTypeParameter"),
@@ -336,7 +336,7 @@ TEST_F(CodeCompletionsExtractorSlowTest, TemplateClass)
ClangCodeCompleteResults completeResults(getResults(classDocument, 20));
::CodeCompletionsExtractor extractor(
- classDocument.translationUnit().cxTranslationUnit(),
+ unsavedFiles.unsavedFile(classDocument.filePath()),
completeResults.data());
ASSERT_THAT(extractor, HasCompletion(Utf8StringLiteral("TemplateClass"),
@@ -349,7 +349,7 @@ TEST_F(CodeCompletionsExtractorSlowTest, TemplateTemplateParameter)
ClangCodeCompleteResults completeResults(getResults(classDocument, 20));
::CodeCompletionsExtractor extractor(
- classDocument.translationUnit().cxTranslationUnit(),
+ unsavedFiles.unsavedFile(classDocument.filePath()),
completeResults.data());
ASSERT_THAT(extractor, HasCompletion(Utf8StringLiteral("TemplateTemplateParameter"),
@@ -362,7 +362,7 @@ TEST_F(CodeCompletionsExtractorSlowTest, ClassTemplatePartialSpecialization)
ClangCodeCompleteResults completeResults(getResults(classDocument, 20));
::CodeCompletionsExtractor extractor(
- classDocument.translationUnit().cxTranslationUnit(),
+ unsavedFiles.unsavedFile(classDocument.filePath()),
completeResults.data());
ASSERT_THAT(extractor, HasCompletion(Utf8StringLiteral("ClassTemplatePartialSpecialization"),
@@ -375,7 +375,7 @@ TEST_F(CodeCompletionsExtractorSlowTest, Namespace)
ClangCodeCompleteResults completeResults(getResults(namespaceDocument, 20));
::CodeCompletionsExtractor extractor(
- namespaceDocument.translationUnit().cxTranslationUnit(),
+ unsavedFiles.unsavedFile(namespaceDocument.filePath()),
completeResults.data());
ASSERT_THAT(extractor, HasCompletion(Utf8StringLiteral("Namespace"),
@@ -388,7 +388,7 @@ TEST_F(CodeCompletionsExtractorSlowTest, NamespaceAlias)
ClangCodeCompleteResults completeResults(getResults(namespaceDocument, 20));
::CodeCompletionsExtractor extractor(
- namespaceDocument.translationUnit().cxTranslationUnit(),
+ unsavedFiles.unsavedFile(namespaceDocument.filePath()),
completeResults.data());
ASSERT_THAT(extractor, HasCompletion(Utf8StringLiteral("NamespaceAlias"),
@@ -401,7 +401,7 @@ TEST_F(CodeCompletionsExtractorSlowTest, Enumeration)
ClangCodeCompleteResults completeResults(getResults(enumerationDocument, 20));
::CodeCompletionsExtractor extractor(
- enumerationDocument.translationUnit().cxTranslationUnit(),
+ unsavedFiles.unsavedFile(enumerationDocument.filePath()),
completeResults.data());
ASSERT_THAT(extractor, HasCompletion(Utf8StringLiteral("Enumeration"),
@@ -414,7 +414,7 @@ TEST_F(CodeCompletionsExtractorSlowTest, Enumerator)
ClangCodeCompleteResults completeResults(getResults(enumerationDocument, 20));
::CodeCompletionsExtractor extractor(
- enumerationDocument.translationUnit().cxTranslationUnit(),
+ unsavedFiles.unsavedFile(enumerationDocument.filePath()),
completeResults.data());
ASSERT_THAT(extractor, HasCompletion(Utf8StringLiteral("Enumerator"),
@@ -427,7 +427,7 @@ TEST_F(CodeCompletionsExtractorSlowTest, Constructor)
ClangCodeCompleteResults completeResults(getResults(constructorDocument, 20));
::CodeCompletionsExtractor extractor(
- constructorDocument.translationUnit().cxTranslationUnit(),
+ unsavedFiles.unsavedFile(constructorDocument.filePath()),
completeResults.data());
ASSERT_THAT(extractor, HasCompletion(Utf8StringLiteral("Constructor"),
@@ -440,7 +440,7 @@ TEST_F(CodeCompletionsExtractorSlowTest, Destructor)
ClangCodeCompleteResults completeResults(getResults(constructorDocument, 20));
::CodeCompletionsExtractor extractor(
- constructorDocument.translationUnit().cxTranslationUnit(),
+ unsavedFiles.unsavedFile(constructorDocument.filePath()),
completeResults.data());
ASSERT_THAT(extractor, HasCompletion(Utf8StringLiteral("~Constructor"),
@@ -453,7 +453,7 @@ TEST_F(CodeCompletionsExtractorSlowTest, Method)
ClangCodeCompleteResults completeResults(getResults(functionDocument, 20));
::CodeCompletionsExtractor extractor(
- functionDocument.translationUnit().cxTranslationUnit(),
+ unsavedFiles.unsavedFile(functionDocument.filePath()),
completeResults.data());
ASSERT_THAT(extractor, HasCompletion(Utf8StringLiteral("Method"),
@@ -467,7 +467,7 @@ TEST_F(CodeCompletionsExtractorSlowTest, MethodWithParameters)
ClangCodeCompleteResults completeResults(getResults(functionDocument, 20));
::CodeCompletionsExtractor extractor(
- functionDocument.translationUnit().cxTranslationUnit(),
+ unsavedFiles.unsavedFile(functionDocument.filePath()),
completeResults.data());
ASSERT_THAT(extractor, HasCompletion(Utf8StringLiteral("MethodWithParameters"),
@@ -481,7 +481,7 @@ TEST_F(CodeCompletionsExtractorSlowTest, Slot)
ClangCodeCompleteResults completeResults(getResults(functionDocument, 20));
::CodeCompletionsExtractor extractor(
- functionDocument.translationUnit().cxTranslationUnit(),
+ unsavedFiles.unsavedFile(functionDocument.filePath()),
completeResults.data());
ASSERT_THAT(extractor, HasCompletion(Utf8StringLiteral("Slot"),
@@ -494,7 +494,7 @@ TEST_F(CodeCompletionsExtractorSlowTest, Signal)
ClangCodeCompleteResults completeResults(getResults(functionDocument, 20));
::CodeCompletionsExtractor extractor(
- functionDocument.translationUnit().cxTranslationUnit(),
+ unsavedFiles.unsavedFile(functionDocument.filePath()),
completeResults.data());
ASSERT_THAT(extractor, HasCompletion(Utf8StringLiteral("Signal"),
@@ -507,7 +507,7 @@ TEST_F(CodeCompletionsExtractorSlowTest, MacroDefinition)
ClangCodeCompleteResults completeResults(getResults(variableDocument, 35));
::CodeCompletionsExtractor extractor(
- variableDocument.translationUnit().cxTranslationUnit(),
+ unsavedFiles.unsavedFile(variableDocument.filePath()),
completeResults.data());
ASSERT_THAT(extractor, HasCompletion(Utf8StringLiteral("MacroDefinition"),
@@ -520,7 +520,7 @@ TEST_F(CodeCompletionsExtractorSlowTest, FunctionMacro)
ClangCodeCompleteResults completeResults(getResults(functionDocument, 20));
::CodeCompletionsExtractor extractor(
- functionDocument.translationUnit().cxTranslationUnit(),
+ unsavedFiles.unsavedFile(functionDocument.filePath()),
completeResults.data());
ASSERT_THAT(extractor, HasCompletion(Utf8StringLiteral("FunctionMacro"),
@@ -533,7 +533,7 @@ TEST_F(CodeCompletionsExtractorSlowTest, IntKeyword)
ClangCodeCompleteResults completeResults(getResults(functionDocument, 20));
::CodeCompletionsExtractor extractor(
- functionDocument.translationUnit().cxTranslationUnit(),
+ unsavedFiles.unsavedFile(functionDocument.filePath()),
completeResults.data());
ASSERT_THAT(extractor, HasCompletion(Utf8StringLiteral("int"),
@@ -546,7 +546,7 @@ TEST_F(CodeCompletionsExtractorSlowTest, SwitchKeyword)
ClangCodeCompleteResults completeResults(getResults(functionDocument, 20));
::CodeCompletionsExtractor extractor(
- functionDocument.translationUnit().cxTranslationUnit(),
+ unsavedFiles.unsavedFile(functionDocument.filePath()),
completeResults.data());
ASSERT_THAT(extractor, HasCompletion(Utf8StringLiteral("switch"),
@@ -559,7 +559,7 @@ TEST_F(CodeCompletionsExtractorSlowTest, ClassKeyword)
ClangCodeCompleteResults completeResults(getResults(functionDocument, 20));
::CodeCompletionsExtractor extractor(
- functionDocument.translationUnit().cxTranslationUnit(),
+ unsavedFiles.unsavedFile(functionDocument.filePath()),
completeResults.data());
ASSERT_THAT(extractor, HasCompletion(Utf8StringLiteral("class"),
@@ -572,7 +572,7 @@ TEST_F(CodeCompletionsExtractorSlowTest, DeprecatedFunction)
ClangCodeCompleteResults completeResults(getResults(functionDocument, 20));
::CodeCompletionsExtractor extractor(
- functionDocument.translationUnit().cxTranslationUnit(),
+ unsavedFiles.unsavedFile(functionDocument.filePath()),
completeResults.data());
ASSERT_THAT(extractor, HasCompletion(Utf8StringLiteral("DeprecatedFunction"),
@@ -585,7 +585,7 @@ TEST_F(CodeCompletionsExtractorSlowTest, NotAccessibleFunction)
ClangCodeCompleteResults completeResults(getResults(functionDocument, 20));
::CodeCompletionsExtractor extractor(
- functionDocument.translationUnit().cxTranslationUnit(),
+ unsavedFiles.unsavedFile(functionDocument.filePath()),
completeResults.data());
ASSERT_THAT(extractor, HasCompletion(Utf8StringLiteral("NotAccessibleFunction"),
@@ -598,7 +598,7 @@ TEST_F(CodeCompletionsExtractorSlowTest, NotAvailableFunction)
ClangCodeCompleteResults completeResults(getResults(functionDocument, 20));
::CodeCompletionsExtractor extractor(
- functionDocument.translationUnit().cxTranslationUnit(),
+ unsavedFiles.unsavedFile(functionDocument.filePath()),
completeResults.data());
ASSERT_THAT(extractor, HasCompletion(Utf8StringLiteral("NotAvailableFunction"),
@@ -617,7 +617,7 @@ TEST_F(CodeCompletionsExtractorSlowTest, UnsavedFile)
ClangCodeCompleteResults completeResults(getResults(document, 20));
::CodeCompletionsExtractor extractor(
- document.translationUnit().cxTranslationUnit(),
+ unsavedFiles.unsavedFile(document.filePath()),
completeResults.data());
ASSERT_THAT(extractor, HasCompletion(Utf8StringLiteral("Method2"),
@@ -639,7 +639,7 @@ TEST_F(CodeCompletionsExtractorSlowTest, ChangeUnsavedFile)
completeResults = getResults(document, 20);
::CodeCompletionsExtractor extractor(
- document.translationUnit().cxTranslationUnit(),
+ unsavedFiles.unsavedFile(document.filePath()),
completeResults.data());
ASSERT_THAT(extractor, HasCompletion(Utf8StringLiteral("Method3"),
@@ -656,7 +656,7 @@ TEST_F(CodeCompletionsExtractorSlowTest, ArgumentDefinition)
ClangCodeCompleteResults completeResults(getResults(variableDocument, 35));
::CodeCompletionsExtractor extractor(
- variableDocument.translationUnit().cxTranslationUnit(),
+ unsavedFiles.unsavedFile(variableDocument.filePath()),
completeResults.data());
ASSERT_THAT(extractor, HasCompletion(Utf8StringLiteral("ArgumentDefinitionVariable"),
@@ -672,7 +672,7 @@ TEST_F(CodeCompletionsExtractorSlowTest, NoArgumentDefinition)
ClangCodeCompleteResults completeResults(getResults(variableDocument, 35));
::CodeCompletionsExtractor extractor(
- variableDocument.translationUnit().cxTranslationUnit(),
+ unsavedFiles.unsavedFile(variableDocument.filePath()),
completeResults.data());
ASSERT_THAT(extractor, Not(HasCompletion(Utf8StringLiteral("ArgumentDefinitionVariable"),
@@ -685,7 +685,7 @@ TEST_F(CodeCompletionsExtractorSlowTest, CompletionChunksFunction)
ClangCodeCompleteResults completeResults(getResults(functionDocument, 20));
::CodeCompletionsExtractor extractor(
- functionDocument.translationUnit().cxTranslationUnit(),
+ unsavedFiles.unsavedFile(functionDocument.filePath()),
completeResults.data());
ASSERT_THAT(extractor, HasCompletionChunks(Utf8StringLiteral("Function"),
@@ -700,7 +700,7 @@ TEST_F(CodeCompletionsExtractorSlowTest, CompletionChunksFunctionWithOptionalChu
ClangCodeCompleteResults completeResults(getResults(functionDocument, 20));
::CodeCompletionsExtractor extractor(
- functionDocument.translationUnit().cxTranslationUnit(),
+ unsavedFiles.unsavedFile(functionDocument.filePath()),
completeResults.data());
ASSERT_THAT(extractor, HasCompletionChunks(Utf8StringLiteral("FunctionWithOptional"),
@@ -720,7 +720,7 @@ TEST_F(CodeCompletionsExtractorSlowTest, CompletionChunksField)
ClangCodeCompleteResults completeResults(getResults(variableDocument, 20));
::CodeCompletionsExtractor extractor(
- variableDocument.translationUnit().cxTranslationUnit(),
+ unsavedFiles.unsavedFile(variableDocument.filePath()),
completeResults.data());
ASSERT_THAT(extractor, HasCompletionChunks(Utf8StringLiteral("Field"),
@@ -733,7 +733,7 @@ TEST_F(CodeCompletionsExtractorSlowTest, CompletionChunksEnumerator)
ClangCodeCompleteResults completeResults(getResults(enumerationDocument, 20));
::CodeCompletionsExtractor extractor(
- enumerationDocument.translationUnit().cxTranslationUnit(),
+ unsavedFiles.unsavedFile(enumerationDocument.filePath()),
completeResults.data());
ASSERT_THAT(extractor, HasCompletionChunks(Utf8StringLiteral("Enumerator"),
@@ -746,7 +746,7 @@ TEST_F(CodeCompletionsExtractorSlowTest, CompletionChunksEnumeration)
ClangCodeCompleteResults completeResults(getResults(enumerationDocument, 20));
::CodeCompletionsExtractor extractor(
- enumerationDocument.translationUnit().cxTranslationUnit(),
+ unsavedFiles.unsavedFile(enumerationDocument.filePath()),
completeResults.data());
ASSERT_THAT(extractor, HasCompletionChunks(Utf8StringLiteral("Enumeration"),
@@ -758,7 +758,7 @@ TEST_F(CodeCompletionsExtractorSlowTest, CompletionChunksClass)
ClangCodeCompleteResults completeResults(getResults(classDocument, 20));
::CodeCompletionsExtractor extractor(
- classDocument.translationUnit().cxTranslationUnit(),
+ unsavedFiles.unsavedFile(classDocument.filePath()),
completeResults.data());
ASSERT_THAT(extractor, HasCompletionChunks(Utf8StringLiteral("Class"),
@@ -771,7 +771,7 @@ TEST_F(CodeCompletionsExtractorSlowTest, BriefComment)
/*needsReparse=*/ true));
::CodeCompletionsExtractor extractor(
- briefCommentDocument.translationUnit().cxTranslationUnit(),
+ unsavedFiles.unsavedFile(briefCommentDocument.filePath()),
completeResults.data());
ASSERT_THAT(extractor, HasBriefComment(Utf8StringLiteral("BriefComment"), Utf8StringLiteral("A brief comment")));
@@ -782,7 +782,7 @@ TEST_F(CodeCompletionsExtractorSlowTest, OverloadCandidate)
ClangCodeCompleteResults completeResults(getResults(functionOverloadDocument, 8, 13));
::CodeCompletionsExtractor extractor(
- functionOverloadDocument.translationUnit().cxTranslationUnit(),
+ unsavedFiles.unsavedFile(functionOverloadDocument.filePath()),
completeResults.data());
ASSERT_THAT(extractor, HasCompletionChunks(Utf8String(),
@@ -798,7 +798,7 @@ TEST_F(CodeCompletionsExtractorSlowTest, ExtractAll)
{
ClangCodeCompleteResults completeResults(getResults(constructorDocument, 25));
::CodeCompletionsExtractor extractor(
- constructorDocument.translationUnit().cxTranslationUnit(),
+ unsavedFiles.unsavedFile(constructorDocument.filePath()),
completeResults.data());
auto codeCompletions = extractor.extractAll(false);