cmState: Enforce policy scope balancing around variable scopes

Everywhere we use cmMakefile::ScopePushPop to manage variable scopes
also expects policy scopes to be balanced.  There is no place that we
use cmMakefile::PolicyPushPop without also using ScopePushPop.  Relieve
PolicyPushPop of responsibility for policy scope balance checks by
moving it to ScopePushPop.
This commit is contained in:
Brad King 2015-11-24 13:37:34 -05:00
parent 0fa7f143a0
commit 32edac6fdd
2 changed files with 2 additions and 6 deletions

View File

@ -4233,9 +4233,7 @@ void cmMakefile::PopScope()
this->CheckForUnusedVariables();
this->StateSnapshot =
this->GetState()->Pop(this->StateSnapshot);
assert(this->StateSnapshot.IsValid());
this->PopSnapshot();
}
void cmMakefile::RaiseScope(const std::string& var, const char *varDef)
@ -4603,8 +4601,6 @@ bool cmMakefile::SetPolicy(cmPolicies::PolicyID id,
//----------------------------------------------------------------------------
cmMakefile::PolicyPushPop::PolicyPushPop(cmMakefile* m): Makefile(m)
{
this->Makefile->StateSnapshot = this->Makefile->StateSnapshot.GetState()
->CreatePolicyScopeSnapshot(this->Makefile->StateSnapshot);
this->Makefile->PushPolicy();
}
@ -4612,7 +4608,6 @@ cmMakefile::PolicyPushPop::PolicyPushPop(cmMakefile* m): Makefile(m)
cmMakefile::PolicyPushPop::~PolicyPushPop()
{
this->Makefile->PopPolicy();
this->Makefile->PopSnapshot();
}
//----------------------------------------------------------------------------

View File

@ -884,6 +884,7 @@ cmState::CreateVariableScopeSnapshot(cmState::Snapshot originSnapshot,
pos->EntryPointLine = entryPointLine;
pos->EntryPointCommand = entryPointCommand;
pos->SnapshotType = VariableScopeType;
pos->PolicyScope = originSnapshot.Position->Policies;
assert(originSnapshot.Position->Vars.IsValid());
cmLinkedTree<cmDefinitions>::iterator origin =