f1ad71d7f8
Since commit 14a8d61f (cmMakefile: Port nested error logic away from cmExecutionStatus) we fail to continue processing function and macro bodies after non-fatal errors. A non-fatal error should not stop foreach loops, macro bodies, nested bodies, or the outer script. Add a test covering these cases, and revert the change to fix them. Also revert commit 2af853de (cmMakefile: Simplify IssueMessage implementation) because the assertion it added (which was removed by the above commit and is restored by reverting it) is incorrect. We do have code paths that call cmMakefile::IssueMessage with an empty execution stack, such as in CheckForUnusedVariables's LogUnused call.
56 lines
1.6 KiB
C++
56 lines
1.6 KiB
C++
/*============================================================================
|
|
CMake - Cross Platform Makefile Generator
|
|
Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
|
|
|
|
Distributed under the OSI-approved BSD License (the "License");
|
|
see accompanying file Copyright.txt for details.
|
|
|
|
This software is distributed WITHOUT ANY WARRANTY; without even the
|
|
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
See the License for more information.
|
|
============================================================================*/
|
|
#ifndef cmExecutionStatus_h
|
|
#define cmExecutionStatus_h
|
|
|
|
#include <cmConfigure.h>
|
|
|
|
#include "cmStandardIncludes.h"
|
|
|
|
/** \class cmExecutionStatus
|
|
* \brief Superclass for all command status classes
|
|
*
|
|
* when a command is involked it may set values on a command status instance
|
|
*/
|
|
class cmExecutionStatus
|
|
{
|
|
public:
|
|
cmExecutionStatus() { this->Clear(); }
|
|
|
|
void SetReturnInvoked(bool val) { this->ReturnInvoked = val; }
|
|
bool GetReturnInvoked() { return this->ReturnInvoked; }
|
|
|
|
void SetBreakInvoked(bool val) { this->BreakInvoked = val; }
|
|
bool GetBreakInvoked() { return this->BreakInvoked; }
|
|
|
|
void SetContinueInvoked(bool val) { this->ContinueInvoked = val; }
|
|
bool GetContinueInvoked() { return this->ContinueInvoked; }
|
|
|
|
void Clear()
|
|
{
|
|
this->ReturnInvoked = false;
|
|
this->BreakInvoked = false;
|
|
this->ContinueInvoked = false;
|
|
this->NestedError = false;
|
|
}
|
|
void SetNestedError(bool val) { this->NestedError = val; }
|
|
bool GetNestedError() { return this->NestedError; }
|
|
|
|
private:
|
|
bool ReturnInvoked;
|
|
bool BreakInvoked;
|
|
bool ContinueInvoked;
|
|
bool NestedError;
|
|
};
|
|
|
|
#endif
|