diff options
Diffstat (limited to 'Source/cmContinueCommand.cxx')
-rw-r--r-- | Source/cmContinueCommand.cxx | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/Source/cmContinueCommand.cxx b/Source/cmContinueCommand.cxx new file mode 100644 index 0000000..48f1f41 --- /dev/null +++ b/Source/cmContinueCommand.cxx @@ -0,0 +1,33 @@ +/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying + file Copyright.txt or https://cmake.org/licensing for details. */ +#include "cmContinueCommand.h" + +#include "cmExecutionStatus.h" +#include "cmMakefile.h" +#include "cmMessageType.h" +#include "cmSystemTools.h" + +// cmContinueCommand +bool cmContinueCommand::InitialPass(std::vector<std::string> const& args, + cmExecutionStatus& status) +{ + if (!this->Makefile->IsLoopBlock()) { + this->Makefile->IssueMessage(MessageType::FATAL_ERROR, + "A CONTINUE command was found outside of a " + "proper FOREACH or WHILE loop scope."); + cmSystemTools::SetFatalErrorOccured(); + return true; + } + + status.SetContinueInvoked(); + + if (!args.empty()) { + this->Makefile->IssueMessage(MessageType::FATAL_ERROR, + "The CONTINUE command does not accept any " + "arguments."); + cmSystemTools::SetFatalErrorOccured(); + return true; + } + + return true; +} |