ENH: Enforce logical blocks in functions/macros

This teaches function() and macro() to enforce matching logical blocks
inside the recorded bodies.  This makes the error message more specific.
This commit is contained in:
Brad King 2009-01-21 09:49:31 -05:00
parent 1dcc5b4558
commit 919fdb7f27
2 changed files with 6 additions and 0 deletions

View File

@ -104,6 +104,7 @@ bool cmFunctionHelperCommand::InvokeInitialPass
}
// we push a scope on the makefile
cmMakefile::LexicalPushPop lexScope(this->Makefile);
cmMakefile::ScopePushPop varScope(this->Makefile);
static_cast<void>(varScope);
@ -163,6 +164,7 @@ bool cmFunctionHelperCommand::InvokeInitialPass
{
// The error message should have already included the call stack
// so we do not need to report an error here.
lexScope.Quiet();
inStatus.SetNestedError(true);
return false;
}

View File

@ -107,6 +107,9 @@ bool cmMacroHelperCommand::InvokeInitialPass
return false;
}
// Enforce matching logical blocks inside the macro.
cmMakefile::LexicalPushPop lexScope(this->Makefile);
// set the value of argc
cmOStringStream argcDefStream;
argcDefStream << expandedArgs.size();
@ -215,6 +218,7 @@ bool cmMacroHelperCommand::InvokeInitialPass
{
// The error message should have already included the call stack
// so we do not need to report an error here.
lexScope.Quiet();
inStatus.SetNestedError(true);
return false;
}