diff options
author | Nikolai Kosjar <nikolai.kosjar@qt.io> | 2017-01-17 15:27:31 +0100 |
---|---|---|
committer | Nikolai Kosjar <nikolai.kosjar@qt.io> | 2017-01-24 14:41:48 +0000 |
commit | 0b8df41387005156ea73b029f4d9d77f91ce5eb5 (patch) | |
tree | 6b44cb326108dff1c0b37322741aaa3da646fb2b /src/plugins/cpptools/baseeditordocumentparser.cpp | |
parent | 19eaf87ef95a510351557119a955223a4aeea7b3 (diff) | |
download | qt-creator-0b8df41387005156ea73b029f4d9d77f91ce5eb5.tar.gz |
CppTools: Provide hints about chosen project part for editor document
Parse issues can have multiple reasons (invalid kit, not a project file,
actual parse issue) and we should be able to tell them apart. With this
change, we can distinguish between the fallback project part and a
ambiguous project part.
Follow up changes will use this to display more accurate diagnostics.
Change-Id: Icc8767607cc17dc14d6227b07f34e81ba5525a96
Reviewed-by: David Schulz <david.schulz@qt.io>
Diffstat (limited to 'src/plugins/cpptools/baseeditordocumentparser.cpp')
-rw-r--r-- | src/plugins/cpptools/baseeditordocumentparser.cpp | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/src/plugins/cpptools/baseeditordocumentparser.cpp b/src/plugins/cpptools/baseeditordocumentparser.cpp index ca4d16e564..617c61de0a 100644 --- a/src/plugins/cpptools/baseeditordocumentparser.cpp +++ b/src/plugins/cpptools/baseeditordocumentparser.cpp @@ -54,6 +54,8 @@ namespace CppTools { BaseEditorDocumentParser::BaseEditorDocumentParser(const QString &filePath) : m_filePath(filePath) { + static int meta = qRegisterMetaType<ProjectPartInfo>("CppTools::ProjectPartInfo"); + Q_UNUSED(meta); } BaseEditorDocumentParser::~BaseEditorDocumentParser() @@ -102,9 +104,9 @@ void BaseEditorDocumentParser::setState(const State &state) m_state = state; } -ProjectPart::Ptr BaseEditorDocumentParser::projectPart() const +ProjectPartInfo BaseEditorDocumentParser::projectPartInfo() const { - return state().projectPart; + return state().projectPartInfo; } BaseEditorDocumentParser::Ptr BaseEditorDocumentParser::get(const QString &filePath) @@ -117,7 +119,7 @@ BaseEditorDocumentParser::Ptr BaseEditorDocumentParser::get(const QString &fileP return BaseEditorDocumentParser::Ptr(); } -ProjectPart::Ptr BaseEditorDocumentParser::determineProjectPart( +ProjectPartInfo BaseEditorDocumentParser::determineProjectPart( const QString &filePath, const Configuration &config, const State &state, @@ -125,7 +127,9 @@ ProjectPart::Ptr BaseEditorDocumentParser::determineProjectPart( Language languagePreference, bool hasActiveProjectChanged) { - Internal::ProjectPartChooser chooser; + using Internal::ProjectPartChooser; + + ProjectPartChooser chooser; chooser.setFallbackProjectPart([](){ return CppModelManager::instance()->fallbackProjectPart(); }); @@ -137,13 +141,16 @@ ProjectPart::Ptr BaseEditorDocumentParser::determineProjectPart( return CppModelManager::instance()->projectPartFromDependencies(fileName); }); - return chooser.choose(filePath, - state.projectPart, - config.manuallySetProjectPart, - config.stickToPreviousProjectPart, - activeProject, - languagePreference, - hasActiveProjectChanged); + const ProjectPartInfo chooserResult + = chooser.choose(filePath, + state.projectPartInfo.projectPart, + config.manuallySetProjectPart, + config.stickToPreviousProjectPart, + activeProject, + languagePreference, + hasActiveProjectChanged); + + return chooserResult; } } // namespace CppTools |