Merge topic 'fix-flow-control-override'

c017098d4d CMake: Allow override of unexpected non-flow-control commands

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6232
This commit is contained in:
Brad King 2021-06-17 10:47:36 +00:00 committed by Kitware Robot
commit 1aa16906e6
6 changed files with 22 additions and 8 deletions

View File

@ -164,36 +164,36 @@ void GetScriptingCommands(cmState* state)
state->AddBuiltinCommand("string", cmStringCommand);
state->AddBuiltinCommand("unset", cmUnsetCommand);
state->AddUnexpectedCommand(
state->AddUnexpectedFlowControlCommand(
"else",
"An ELSE command was found outside of a proper "
"IF ENDIF structure. Or its arguments did not match "
"the opening IF command.");
state->AddUnexpectedCommand(
state->AddUnexpectedFlowControlCommand(
"elseif",
"An ELSEIF command was found outside of a proper "
"IF ENDIF structure.");
state->AddUnexpectedCommand(
state->AddUnexpectedFlowControlCommand(
"endforeach",
"An ENDFOREACH command was found outside of a proper "
"FOREACH ENDFOREACH structure. Or its arguments did "
"not match the opening FOREACH command.");
state->AddUnexpectedCommand(
state->AddUnexpectedFlowControlCommand(
"endfunction",
"An ENDFUNCTION command was found outside of a proper "
"FUNCTION ENDFUNCTION structure. Or its arguments did not "
"match the opening FUNCTION command.");
state->AddUnexpectedCommand(
state->AddUnexpectedFlowControlCommand(
"endif",
"An ENDIF command was found outside of a proper "
"IF ENDIF structure. Or its arguments did not match "
"the opening IF command.");
state->AddUnexpectedCommand(
state->AddUnexpectedFlowControlCommand(
"endmacro",
"An ENDMACRO command was found outside of a proper "
"MACRO ENDMACRO structure. Or its arguments did not "
"match the opening MACRO command.");
state->AddUnexpectedCommand(
state->AddUnexpectedFlowControlCommand(
"endwhile",
"An ENDWHILE command was found outside of a proper "
"WHILE ENDWHILE structure. Or its arguments did not "

View File

@ -481,7 +481,7 @@ void cmState::AddDisallowedCommand(std::string const& name,
void cmState::AddUnexpectedCommand(std::string const& name, const char* error)
{
this->AddFlowControlCommand(
this->AddBuiltinCommand(
name,
[name, error](std::vector<cmListFileArgument> const&,
cmExecutionStatus& status) -> bool {
@ -496,6 +496,13 @@ void cmState::AddUnexpectedCommand(std::string const& name, const char* error)
});
}
void cmState::AddUnexpectedFlowControlCommand(std::string const& name,
const char* error)
{
this->FlowControlCommands.insert(name);
this->AddUnexpectedCommand(name, error);
}
bool cmState::AddScriptedCommand(std::string const& name, BT<Command> command,
cmMakefile& mf)
{

View File

@ -166,6 +166,8 @@ public:
void AddDisallowedCommand(std::string const& name, BuiltinCommand command,
cmPolicies::PolicyID policy, const char* message);
void AddUnexpectedCommand(std::string const& name, const char* error);
void AddUnexpectedFlowControlCommand(std::string const& name,
const char* error);
bool AddScriptedCommand(std::string const& name, BT<Command> command,
cmMakefile& mf);
void RemoveBuiltinCommand(std::string const& name);

View File

@ -0,0 +1 @@
1

View File

@ -0,0 +1,3 @@
^CMake Error at [^
]*/Tests/RunCMake/Syntax/Override\.cmake:[0-9]+ \(message\):
This shouldn't happen$

View File

@ -150,3 +150,4 @@ run_override(If)
run_override(Macro)
run_override(Return)
run_override(While)
run_override(Project)