summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools/baseeditordocumentparser.cpp
diff options
context:
space:
mode:
authorNikolai Kosjar <nikolai.kosjar@qt.io>2017-01-17 15:27:31 +0100
committerNikolai Kosjar <nikolai.kosjar@qt.io>2017-01-24 14:41:48 +0000
commit0b8df41387005156ea73b029f4d9d77f91ce5eb5 (patch)
tree6b44cb326108dff1c0b37322741aaa3da646fb2b /src/plugins/cpptools/baseeditordocumentparser.cpp
parent19eaf87ef95a510351557119a955223a4aeea7b3 (diff)
downloadqt-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.cpp29
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