CMakePresets.json: Ensure configurePreset is reachable from current file

This commit is contained in:
Kyle Edwards
2022-02-02 11:30:56 -05:00
parent 9245925810
commit c18409cdac
12 changed files with 57 additions and 3 deletions

View File

@@ -108,7 +108,7 @@ ReadFileResult VisitPreset(
auto& parentPreset = parent->second.Unexpanded;
if (!preset.OriginFile->ReachableFiles.count(parentPreset.OriginFile)) {
return ReadFileResult::PRESET_UNREACHABLE_FROM_FILE;
return ReadFileResult::INHERITED_PRESET_UNREACHABLE_FROM_FILE;
}
auto result = VisitPreset(parentPreset, presets, cycleStatus, graph);
@@ -925,6 +925,10 @@ cmCMakePresetsGraph::ReadProjectPresetsInternal(bool allowNoFiles)
if (configurePreset == this->ConfigurePresets.end()) {
return ReadFileResult::INVALID_CONFIGURE_PRESET;
}
if (!it.second.Unexpanded.OriginFile->ReachableFiles.count(
configurePreset->second.Unexpanded.OriginFile)) {
return ReadFileResult::CONFIGURE_PRESET_UNREACHABLE_FROM_FILE;
}
if (it.second.Unexpanded.InheritConfigureEnvironment.value_or(true)) {
it.second.Unexpanded.Environment.insert(
@@ -945,6 +949,10 @@ cmCMakePresetsGraph::ReadProjectPresetsInternal(bool allowNoFiles)
if (configurePreset == this->ConfigurePresets.end()) {
return ReadFileResult::INVALID_CONFIGURE_PRESET;
}
if (!it.second.Unexpanded.OriginFile->ReachableFiles.count(
configurePreset->second.Unexpanded.OriginFile)) {
return ReadFileResult::CONFIGURE_PRESET_UNREACHABLE_FROM_FILE;
}
if (it.second.Unexpanded.InheritConfigureEnvironment.value_or(true)) {
it.second.Unexpanded.Environment.insert(
@@ -992,8 +1000,10 @@ const char* cmCMakePresetsGraph::ResultToString(ReadFileResult result)
return "Duplicate presets";
case ReadFileResult::CYCLIC_PRESET_INHERITANCE:
return "Cyclic preset inheritance";
case ReadFileResult::PRESET_UNREACHABLE_FROM_FILE:
case ReadFileResult::INHERITED_PRESET_UNREACHABLE_FROM_FILE:
return "Inherited preset is unreachable from preset's file";
case ReadFileResult::CONFIGURE_PRESET_UNREACHABLE_FROM_FILE:
return "Configure preset is unreachable from preset's file";
case ReadFileResult::INVALID_MACRO_EXPANSION:
return "Invalid macro expansion";
case ReadFileResult::BUILD_TEST_PRESETS_UNSUPPORTED:

View File

@@ -35,7 +35,8 @@ public:
INVALID_VARIABLE,
DUPLICATE_PRESETS,
CYCLIC_PRESET_INHERITANCE,
PRESET_UNREACHABLE_FROM_FILE,
INHERITED_PRESET_UNREACHABLE_FROM_FILE,
CONFIGURE_PRESET_UNREACHABLE_FROM_FILE,
INVALID_MACRO_EXPANSION,
BUILD_TEST_PRESETS_UNSUPPORTED,
INCLUDE_UNSUPPORTED,