diff --git a/Source/cmIfCommand.cxx b/Source/cmIfCommand.cxx index ab27a92a36..c8c314c6c1 100644 --- a/Source/cmIfCommand.cxx +++ b/Source/cmIfCommand.cxx @@ -107,6 +107,12 @@ bool cmIfFunctionBlocker::Replay(std::vector functions, return true; } + if (func.Arguments().empty()) { + mf.GetCMakeInstance()->IssueMessage( + MessageType::AUTHOR_WARNING, + "ELSEIF called with no arguments, it will be skipped. ", elseifBT); + } + if (this->HasRun) { this->IsBlocking = true; } else { diff --git a/Tests/RunCMake/if/RunCMakeTest.cmake b/Tests/RunCMake/if/RunCMakeTest.cmake index e3b9b2d257..366e8a3104 100644 --- a/Tests/RunCMake/if/RunCMakeTest.cmake +++ b/Tests/RunCMake/if/RunCMakeTest.cmake @@ -16,6 +16,7 @@ run_cmake(duplicate-deep-else) run_cmake(duplicate-else) run_cmake(duplicate-else-after-elseif) run_cmake(elseif-message) +run_cmake(empty-elseif-warning) run_cmake(misplaced-elseif) run_cmake(unbalanced-parenthesis) diff --git a/Tests/RunCMake/if/empty-elseif-warning-stderr.txt b/Tests/RunCMake/if/empty-elseif-warning-stderr.txt new file mode 100644 index 0000000000..40af419c7b --- /dev/null +++ b/Tests/RunCMake/if/empty-elseif-warning-stderr.txt @@ -0,0 +1,5 @@ +CMake Warning \(dev\) at empty-elseif-warning.cmake:3 \(elseif\): + ELSEIF called with no arguments, it will be skipped. +Call Stack \(most recent call first\): + CMakeLists.txt:3 \(include\) +This warning is for project developers. Use -Wno-dev to suppress it. diff --git a/Tests/RunCMake/if/empty-elseif-warning.cmake b/Tests/RunCMake/if/empty-elseif-warning.cmake new file mode 100644 index 0000000000..855aa834bd --- /dev/null +++ b/Tests/RunCMake/if/empty-elseif-warning.cmake @@ -0,0 +1,4 @@ +if(0) +elseif(${emptyVar}) # okay +elseif() # warns +endif()