mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-11 08:20:18 -06:00
cmake: Fix processing of -Wno-error= flags
Fix two bugs that happened to cancel each other out for cases covered by our test suite. Add a test case that distinguishes them.
This commit is contained in:
@@ -427,12 +427,12 @@ bool cmake::SetCacheArgs(const std::vector<std::string>& args)
|
||||
bool foundError = false;
|
||||
unsigned int nameStartPosition = 0;
|
||||
|
||||
if (entry.find("no-", nameStartPosition) == 0) {
|
||||
if (entry.find("no-", nameStartPosition) == nameStartPosition) {
|
||||
foundNo = true;
|
||||
nameStartPosition += 3;
|
||||
}
|
||||
|
||||
if (entry.find("error=", nameStartPosition) == 0) {
|
||||
if (entry.find("error=", nameStartPosition) == nameStartPosition) {
|
||||
foundError = true;
|
||||
nameStartPosition += 6;
|
||||
}
|
||||
@@ -454,7 +454,12 @@ bool cmake::SetCacheArgs(const std::vector<std::string>& args)
|
||||
this->DiagLevels[name] = DIAG_ERROR;
|
||||
} else {
|
||||
// -Wno-error=<name>
|
||||
this->DiagLevels[name] = std::min(this->DiagLevels[name], DIAG_WARN);
|
||||
// This can downgrade an error to a warning, but should not enable
|
||||
// or disable a warning in the first place.
|
||||
auto dli = this->DiagLevels.find(name);
|
||||
if (dli != this->DiagLevels.end()) {
|
||||
dli->second = std::min(dli->second, DIAG_WARN);
|
||||
}
|
||||
}
|
||||
} else if (cmHasLiteralPrefix(arg, "-U")) {
|
||||
std::string entryPattern = arg.substr(2);
|
||||
|
||||
@@ -671,6 +671,10 @@ set(RunCMake_TEST_OPTIONS -Wno-error=deprecated)
|
||||
run_cmake(Wno-error_deprecated)
|
||||
unset(RunCMake_TEST_OPTIONS)
|
||||
|
||||
set(RunCMake_TEST_OPTIONS -Werror=deprecated -Wno-error=deprecated)
|
||||
run_cmake(Wno-error_deprecated)
|
||||
unset(RunCMake_TEST_OPTIONS)
|
||||
|
||||
# Dev warnings should be on by default
|
||||
run_cmake(Wdev)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user