[cmake-developers] [PATCH v5 3/4] Reject continue with arguments (#14013)

Gregor Jasny gjasny at googlemail.com
Tue Nov 18 10:34:31 EST 2014


Signed-off-by: Gregor Jasny <gjasny at googlemail.com>
---
 Source/cmContinueCommand.cxx                             | 12 +++++++++++-
 Tests/RunCMake/continue/NoArgumentsToContinue-result.txt |  1 +
 Tests/RunCMake/continue/NoArgumentsToContinue-stderr.txt |  1 +
 Tests/RunCMake/continue/NoArgumentsToContinue.cmake      |  3 +++
 Tests/RunCMake/continue/RunCMakeTest.cmake               |  1 +
 5 files changed, 17 insertions(+), 1 deletion(-)
 create mode 100644 Tests/RunCMake/continue/NoArgumentsToContinue-result.txt
 create mode 100644 Tests/RunCMake/continue/NoArgumentsToContinue-stderr.txt
 create mode 100644 Tests/RunCMake/continue/NoArgumentsToContinue.cmake

diff --git a/Source/cmContinueCommand.cxx b/Source/cmContinueCommand.cxx
index 8b249c2..ce70dd6 100644
--- a/Source/cmContinueCommand.cxx
+++ b/Source/cmContinueCommand.cxx
@@ -12,7 +12,7 @@
 #include "cmContinueCommand.h"
 
 // cmContinueCommand
-bool cmContinueCommand::InitialPass(std::vector<std::string> const&,
+bool cmContinueCommand::InitialPass(std::vector<std::string> const &args,
                                   cmExecutionStatus &status)
 {
   if(!this->Makefile->IsLoopBlock())
@@ -25,6 +25,16 @@ bool cmContinueCommand::InitialPass(std::vector<std::string> const&,
     }
 
   status.SetContinueInvoked(true);
+
+  if(!args.empty())
+    {
+    this->Makefile->IssueMessage(cmake::FATAL_ERROR,
+                                 "The CONTINUE command does not accept any "
+                                 "arguments.");
+    cmSystemTools::SetFatalErrorOccured();
+    return true;
+    }
+
   return true;
 }
 
diff --git a/Tests/RunCMake/continue/NoArgumentsToContinue-result.txt b/Tests/RunCMake/continue/NoArgumentsToContinue-result.txt
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/Tests/RunCMake/continue/NoArgumentsToContinue-result.txt
@@ -0,0 +1 @@
+1
diff --git a/Tests/RunCMake/continue/NoArgumentsToContinue-stderr.txt b/Tests/RunCMake/continue/NoArgumentsToContinue-stderr.txt
new file mode 100644
index 0000000..d968a62
--- /dev/null
+++ b/Tests/RunCMake/continue/NoArgumentsToContinue-stderr.txt
@@ -0,0 +1 @@
+  The CONTINUE command does not accept any arguments.
diff --git a/Tests/RunCMake/continue/NoArgumentsToContinue.cmake b/Tests/RunCMake/continue/NoArgumentsToContinue.cmake
new file mode 100644
index 0000000..609804d
--- /dev/null
+++ b/Tests/RunCMake/continue/NoArgumentsToContinue.cmake
@@ -0,0 +1,3 @@
+foreach(i RANGE 1 2)
+  continue(1)
+endforeach()
diff --git a/Tests/RunCMake/continue/RunCMakeTest.cmake b/Tests/RunCMake/continue/RunCMakeTest.cmake
index f85154f..37caf9c 100644
--- a/Tests/RunCMake/continue/RunCMakeTest.cmake
+++ b/Tests/RunCMake/continue/RunCMakeTest.cmake
@@ -4,5 +4,6 @@ run_cmake(ContinueForeach)
 run_cmake(ContinueForEachInLists)
 run_cmake(ContinueNestedForeach)
 run_cmake(ContinueWhile)
+run_cmake(NoArgumentsToContinue)
 run_cmake(NoEnclosingBlock)
 run_cmake(NoEnclosingBlockInFunction)
-- 
1.9.3 (Apple Git-50)



More information about the cmake-developers mailing list