summaryrefslogtreecommitdiff
path: root/src/libs/cplusplus/CppDocument.cpp
diff options
context:
space:
mode:
authorOrgad Shaneh <orgad.shaneh@audiocodes.com>2015-02-15 23:43:26 +0200
committerOrgad Shaneh <orgads@gmail.com>2015-02-20 12:54:49 +0000
commitf3a2795c3bfc892695a46621e6bc97a2742d8766 (patch)
treef98bce607c287fb4bd077641632a71e77f89711c /src/libs/cplusplus/CppDocument.cpp
parent97cbfb95bbcebe06484edaeb446e52bec04626f3 (diff)
downloadqt-creator-f3a2795c3bfc892695a46621e6bc97a2742d8766.tar.gz
C++: Use correct features for document parsing
Task-number: QTCREATORBUG-8007 Change-Id: Ic96aaa433442812a99bac9d16bb9124d66762e8c Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
Diffstat (limited to 'src/libs/cplusplus/CppDocument.cpp')
-rw-r--r--src/libs/cplusplus/CppDocument.cpp24
1 files changed, 16 insertions, 8 deletions
diff --git a/src/libs/cplusplus/CppDocument.cpp b/src/libs/cplusplus/CppDocument.cpp
index 57b612e90a..b19a510bf7 100644
--- a/src/libs/cplusplus/CppDocument.cpp
+++ b/src/libs/cplusplus/CppDocument.cpp
@@ -283,15 +283,8 @@ Document::Document(const QString &fileName)
const QByteArray localFileName = fileName.toUtf8();
const StringLiteral *fileId = _control->stringLiteral(localFileName.constData(),
localFileName.size());
- LanguageFeatures features;
- features.qtEnabled = true;
- features.qtMocRunEnabled = true;
- features.qtKeywordsEnabled = true;
- features.cxx11Enabled = true;
- features.objCEnabled = true;
- features.c99Enabled = true;
_translationUnit = new TranslationUnit(_control, fileId);
- _translationUnit->setLanguageFeatures(features);
+ _translationUnit->setLanguageFeatures(LanguageFeatures::defaultFeatures());
(void) _control->switchTranslationUnit(_translationUnit);
}
@@ -596,6 +589,19 @@ void Document::setUtf8Source(const QByteArray &source)
_translationUnit->setSource(_source.constBegin(), _source.size());
}
+LanguageFeatures Document::languageFeatures() const
+{
+ if (TranslationUnit *tu = translationUnit())
+ return tu->languageFeatures();
+ return LanguageFeatures::defaultFeatures();
+}
+
+void Document::setLanguageFeatures(LanguageFeatures features)
+{
+ if (TranslationUnit *tu = translationUnit())
+ tu->setLanguageFeatures(features);
+}
+
void Document::startSkippingBlocks(unsigned utf16charsOffset)
{
_skippedBlocks.append(Block(0, 0, utf16charsOffset, 0));
@@ -767,6 +773,7 @@ Document::Ptr Snapshot::preprocessedDocument(const QByteArray &source,
newDoc->_lastModified = thisDocument->_lastModified;
newDoc->_resolvedIncludes = thisDocument->_resolvedIncludes;
newDoc->_unresolvedIncludes = thisDocument->_unresolvedIncludes;
+ newDoc->setLanguageFeatures(thisDocument->languageFeatures());
}
FastPreprocessor pp(*this);
@@ -788,6 +795,7 @@ Document::Ptr Snapshot::documentFromSource(const QByteArray &preprocessedCode,
newDoc->_unresolvedIncludes = thisDocument->_unresolvedIncludes;
newDoc->_definedMacros = thisDocument->_definedMacros;
newDoc->_macroUses = thisDocument->_macroUses;
+ newDoc->setLanguageFeatures(thisDocument->languageFeatures());
}
newDoc->setUtf8Source(preprocessedCode);