cmState: Add a VariableScope snapshot type.
Match the scopes currently used in cmMakefile for definitions.
This commit is contained in:
parent
1fc645bd9c
commit
6954c8936f
@ -4464,6 +4464,17 @@ void cmMakefile::PushScope()
|
|||||||
{
|
{
|
||||||
this->Internal->PushDefinitions(Internals::VariableScope);
|
this->Internal->PushDefinitions(Internals::VariableScope);
|
||||||
|
|
||||||
|
std::string commandName;
|
||||||
|
long line = 0;
|
||||||
|
if (!this->ContextStack.empty())
|
||||||
|
{
|
||||||
|
commandName = this->ContextStack.back()->Name;
|
||||||
|
line = this->ContextStack.back()->Line;
|
||||||
|
}
|
||||||
|
this->StateSnapshot = this->GetState()->CreateVariableScopeSnapshot(
|
||||||
|
this->StateSnapshot,
|
||||||
|
commandName,
|
||||||
|
line);
|
||||||
this->PushLoopBlockBarrier();
|
this->PushLoopBlockBarrier();
|
||||||
|
|
||||||
#if defined(CMAKE_BUILD_WITH_CMAKE)
|
#if defined(CMAKE_BUILD_WITH_CMAKE)
|
||||||
@ -4482,6 +4493,9 @@ void cmMakefile::PopScope()
|
|||||||
this->CheckForUnusedVariables();
|
this->CheckForUnusedVariables();
|
||||||
|
|
||||||
this->Internal->PopDefinitions();
|
this->Internal->PopDefinitions();
|
||||||
|
this->StateSnapshot =
|
||||||
|
this->GetState()->Pop(this->StateSnapshot);
|
||||||
|
assert(this->StateSnapshot.IsValid());
|
||||||
}
|
}
|
||||||
|
|
||||||
void cmMakefile::RaiseScope(const std::string& var, const char *varDef)
|
void cmMakefile::RaiseScope(const std::string& var, const char *varDef)
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
struct cmState::SnapshotDataType
|
struct cmState::SnapshotDataType
|
||||||
{
|
{
|
||||||
|
cmState::PositionType ScopeParent;
|
||||||
cmState::PositionType DirectoryParent;
|
cmState::PositionType DirectoryParent;
|
||||||
cmLinkedTree<cmState::PolicyStackEntry>::iterator Policies;
|
cmLinkedTree<cmState::PolicyStackEntry>::iterator Policies;
|
||||||
cmLinkedTree<cmState::PolicyStackEntry>::iterator PolicyRoot;
|
cmLinkedTree<cmState::PolicyStackEntry>::iterator PolicyRoot;
|
||||||
@ -736,6 +737,7 @@ cmState::Snapshot cmState::CreateBaseSnapshot()
|
|||||||
{
|
{
|
||||||
PositionType pos = this->SnapshotData.Extend(this->SnapshotData.Root());
|
PositionType pos = this->SnapshotData.Extend(this->SnapshotData.Root());
|
||||||
pos->DirectoryParent = this->SnapshotData.Root();
|
pos->DirectoryParent = this->SnapshotData.Root();
|
||||||
|
pos->ScopeParent = this->SnapshotData.Root();
|
||||||
pos->SnapshotType = BaseType;
|
pos->SnapshotType = BaseType;
|
||||||
pos->BuildSystemDirectory =
|
pos->BuildSystemDirectory =
|
||||||
this->BuildsystemDirectory.Extend(this->BuildsystemDirectory.Root());
|
this->BuildsystemDirectory.Extend(this->BuildsystemDirectory.Root());
|
||||||
@ -763,6 +765,7 @@ cmState::CreateBuildsystemDirectorySnapshot(Snapshot originSnapshot,
|
|||||||
pos->EntryPointLine = entryPointLine;
|
pos->EntryPointLine = entryPointLine;
|
||||||
pos->EntryPointCommand = entryPointCommand;
|
pos->EntryPointCommand = entryPointCommand;
|
||||||
pos->DirectoryParent = originSnapshot.Position;
|
pos->DirectoryParent = originSnapshot.Position;
|
||||||
|
pos->ScopeParent = originSnapshot.Position;
|
||||||
pos->SnapshotType = BuildsystemDirectoryType;
|
pos->SnapshotType = BuildsystemDirectoryType;
|
||||||
pos->BuildSystemDirectory =
|
pos->BuildSystemDirectory =
|
||||||
this->BuildsystemDirectory.Extend(
|
this->BuildsystemDirectory.Extend(
|
||||||
@ -787,6 +790,7 @@ cmState::CreateFunctionCallSnapshot(cmState::Snapshot originSnapshot,
|
|||||||
{
|
{
|
||||||
PositionType pos = this->SnapshotData.Extend(originSnapshot.Position,
|
PositionType pos = this->SnapshotData.Extend(originSnapshot.Position,
|
||||||
*originSnapshot.Position);
|
*originSnapshot.Position);
|
||||||
|
pos->ScopeParent = originSnapshot.Position;
|
||||||
pos->EntryPointLine = entryPointLine;
|
pos->EntryPointLine = entryPointLine;
|
||||||
pos->EntryPointCommand = entryPointCommand;
|
pos->EntryPointCommand = entryPointCommand;
|
||||||
pos->SnapshotType = FunctionCallType;
|
pos->SnapshotType = FunctionCallType;
|
||||||
@ -834,6 +838,21 @@ cmState::CreateCallStackSnapshot(cmState::Snapshot originSnapshot,
|
|||||||
return cmState::Snapshot(this, pos);
|
return cmState::Snapshot(this, pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cmState::Snapshot
|
||||||
|
cmState::CreateVariableScopeSnapshot(cmState::Snapshot originSnapshot,
|
||||||
|
std::string const& entryPointCommand,
|
||||||
|
long entryPointLine)
|
||||||
|
{
|
||||||
|
PositionType pos = this->SnapshotData.Extend(originSnapshot.Position,
|
||||||
|
*originSnapshot.Position);
|
||||||
|
pos->ScopeParent = originSnapshot.Position;
|
||||||
|
pos->EntryPointLine = entryPointLine;
|
||||||
|
pos->EntryPointCommand = entryPointCommand;
|
||||||
|
pos->SnapshotType = VariableScopeType;
|
||||||
|
|
||||||
|
return cmState::Snapshot(this, pos);
|
||||||
|
}
|
||||||
|
|
||||||
cmState::Snapshot
|
cmState::Snapshot
|
||||||
cmState::CreateInlineListFileSnapshot(cmState::Snapshot originSnapshot,
|
cmState::CreateInlineListFileSnapshot(cmState::Snapshot originSnapshot,
|
||||||
const std::string& entryPointCommand,
|
const std::string& entryPointCommand,
|
||||||
|
@ -41,7 +41,8 @@ public:
|
|||||||
MacroCallType,
|
MacroCallType,
|
||||||
CallStackType,
|
CallStackType,
|
||||||
InlineListFileType,
|
InlineListFileType,
|
||||||
PolicyScopeType
|
PolicyScopeType,
|
||||||
|
VariableScopeType
|
||||||
};
|
};
|
||||||
|
|
||||||
class Directory;
|
class Directory;
|
||||||
@ -155,6 +156,9 @@ public:
|
|||||||
std::string const& entryPointCommand,
|
std::string const& entryPointCommand,
|
||||||
long entryPointLine,
|
long entryPointLine,
|
||||||
std::string const& fileName);
|
std::string const& fileName);
|
||||||
|
Snapshot CreateVariableScopeSnapshot(Snapshot originSnapshot,
|
||||||
|
std::string const& entryPointCommand,
|
||||||
|
long entryPointLine);
|
||||||
Snapshot CreateInlineListFileSnapshot(Snapshot originSnapshot,
|
Snapshot CreateInlineListFileSnapshot(Snapshot originSnapshot,
|
||||||
const std::string& entryPointCommand,
|
const std::string& entryPointCommand,
|
||||||
long entryPointLine,
|
long entryPointLine,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user