mirror of
https://github.com/Kitware/CMake.git
synced 2026-02-25 10:18:34 -06:00
Merge topic 'fix-double-warn-uninitialized-in-script-mode'
53a5aec899CMP0053: Fix double warning on uninitialized variables in -P modef92f93467ecmMakefile: Rename SuppressWatches to SuppressSideEffects Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !2565
This commit is contained in:
@@ -67,7 +67,7 @@ cmMakefile::cmMakefile(cmGlobalGenerator* globalGenerator,
|
||||
this->WarnUnused = this->GetCMakeInstance()->GetWarnUnused();
|
||||
this->CheckSystemVars = this->GetCMakeInstance()->GetCheckSystemVars();
|
||||
|
||||
this->SuppressWatches = false;
|
||||
this->SuppressSideEffects = false;
|
||||
|
||||
// Setup the default include complaint regular expression (match nothing).
|
||||
this->ComplainFileRegularExpression = "^$";
|
||||
@@ -2421,7 +2421,7 @@ const std::string* cmMakefile::GetDef(const std::string& name) const
|
||||
}
|
||||
#ifdef CMAKE_BUILD_WITH_CMAKE
|
||||
cmVariableWatch* vv = this->GetVariableWatch();
|
||||
if (vv && !this->SuppressWatches) {
|
||||
if (vv && !this->SuppressSideEffects) {
|
||||
bool const watch_function_executed =
|
||||
vv->VariableAccessed(name,
|
||||
def ? cmVariableWatch::VARIABLE_READ_ACCESS
|
||||
@@ -2508,11 +2508,11 @@ const std::string& cmMakefile::ExpandVariablesInString(
|
||||
compareResults = true;
|
||||
// Suppress variable watches to avoid calling hooks twice. Suppress new
|
||||
// dereferences since the OLD behavior is still what is actually used.
|
||||
this->SuppressWatches = true;
|
||||
this->SuppressSideEffects = true;
|
||||
newError = ExpandVariablesInStringNew(
|
||||
newErrorstr, newResult, escapeQuotes, noEscapes, atOnly, filename,
|
||||
line, removeEmpty, replaceAt);
|
||||
this->SuppressWatches = false;
|
||||
this->SuppressSideEffects = false;
|
||||
CM_FALLTHROUGH;
|
||||
}
|
||||
case cmPolicies::OLD:
|
||||
@@ -2766,7 +2766,7 @@ cmake::MessageType cmMakefile::ExpandVariablesInStringNew(
|
||||
} else {
|
||||
varresult = value;
|
||||
}
|
||||
} else if (!removeEmpty) {
|
||||
} else if (!removeEmpty && !this->SuppressSideEffects) {
|
||||
// check to see if we need to print a warning
|
||||
// if strict mode is on and the variable has
|
||||
// not been "cleared"/initialized with a set(foo ) call
|
||||
|
||||
@@ -1025,7 +1025,7 @@ private:
|
||||
bool CheckCMP0000;
|
||||
std::set<std::string> WarnedCMP0074;
|
||||
bool IsSourceFileTryCompile;
|
||||
mutable bool SuppressWatches;
|
||||
mutable bool SuppressSideEffects;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -348,6 +348,10 @@ set(RunCMake_TEST_OPTIONS --trace-expand --warn-uninitialized)
|
||||
run_cmake(trace-expand-warn-uninitialized)
|
||||
unset(RunCMake_TEST_OPTIONS)
|
||||
|
||||
set(RunCMake_TEST_OPTIONS --warn-uninitialized)
|
||||
run_cmake(warn-uninitialized)
|
||||
unset(RunCMake_TEST_OPTIONS)
|
||||
|
||||
set(RunCMake_TEST_OPTIONS --trace-source=trace-only-this-file.cmake)
|
||||
run_cmake(trace-source)
|
||||
unset(RunCMake_TEST_OPTIONS)
|
||||
|
||||
5
Tests/RunCMake/CommandLine/warn-uninitialized-stderr.txt
Normal file
5
Tests/RunCMake/CommandLine/warn-uninitialized-stderr.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
^CMake Warning \(dev\) at warn-uninitialized.cmake:1 \(set\):
|
||||
uninitialized variable 'WARN_FROM_NORMAL_CMAKE_FILE'
|
||||
Call Stack \(most recent call first\):
|
||||
CMakeLists.txt:3 \(include\)
|
||||
This warning is for project developers. Use -Wno-dev to suppress it.$
|
||||
1
Tests/RunCMake/CommandLine/warn-uninitialized.cmake
Normal file
1
Tests/RunCMake/CommandLine/warn-uninitialized.cmake
Normal file
@@ -0,0 +1 @@
|
||||
set(FOO "${WARN_FROM_NORMAL_CMAKE_FILE}")
|
||||
Reference in New Issue
Block a user