From f3a2795c3bfc892695a46621e6bc97a2742d8766 Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Sun, 15 Feb 2015 23:43:26 +0200 Subject: C++: Use correct features for document parsing Task-number: QTCREATORBUG-8007 Change-Id: Ic96aaa433442812a99bac9d16bb9124d66762e8c Reviewed-by: Nikolai Kosjar --- src/libs/cplusplus/CppDocument.cpp | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) (limited to 'src/libs/cplusplus/CppDocument.cpp') 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); -- cgit v1.2.1