diff --git a/Source/cmForEachCommand.cxx b/Source/cmForEachCommand.cxx index 96867e2658..8b74118388 100644 --- a/Source/cmForEachCommand.cxx +++ b/Source/cmForEachCommand.cxx @@ -100,6 +100,9 @@ bool cmForEachFunctionBlocker::ArgumentsMatch(cmListFileFunction const& lff, bool cmForEachFunctionBlocker::Replay( std::vector functions, cmExecutionStatus& inStatus) { + if (this->Args.size() == this->IterationVarsCount) { + return true; + } return this->ZipLists ? this->ReplayZipLists(functions, inStatus) : this->ReplayItems(functions, inStatus); } diff --git a/Tests/RunCMake/foreach/RunCMakeTest.cmake b/Tests/RunCMake/foreach/RunCMakeTest.cmake index 15ca477043..acfc742ea6 100644 --- a/Tests/RunCMake/foreach/RunCMakeTest.cmake +++ b/Tests/RunCMake/foreach/RunCMakeTest.cmake @@ -22,3 +22,4 @@ run_cmake(foreach-RANGE-invalid-test) run_cmake(foreach-RANGE-out-of-range-test) run_cmake(foreach-var-scope-CMP0124-OLD) run_cmake(foreach-var-scope-CMP0124-NEW) +run_cmake(TrailingIn) diff --git a/Tests/RunCMake/foreach/TrailingIn-result.txt b/Tests/RunCMake/foreach/TrailingIn-result.txt new file mode 100644 index 0000000000..573541ac97 --- /dev/null +++ b/Tests/RunCMake/foreach/TrailingIn-result.txt @@ -0,0 +1 @@ +0 diff --git a/Tests/RunCMake/foreach/TrailingIn.cmake b/Tests/RunCMake/foreach/TrailingIn.cmake new file mode 100644 index 0000000000..e2b5b2f21f --- /dev/null +++ b/Tests/RunCMake/foreach/TrailingIn.cmake @@ -0,0 +1,5 @@ +foreach(v IN) +endforeach() + +foreach(v1 v2 IN) +endforeach()