summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Source/cmMakefile.cxx26
-rw-r--r--Source/cmMakefile.h2
2 files changed, 19 insertions, 9 deletions
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index a9faa6b..5aa643c 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -178,15 +178,9 @@ bool cmMakefile::NeedCacheCompatibility(int major, int minor)
cmMakefile::~cmMakefile()
{
- std::set<cmStdString> usage = this->Internal->VarUsageStack.top();
- std::set<cmStdString>::const_iterator it = usage.begin();
- for (; it != usage.end(); ++it)
- {
- if (!this->VariableUsed(it->c_str()))
- {
- this->CheckForUnused("out of scope", it->c_str());
- }
- }
+ // Check for unused variables
+ this->CheckForUnusedVariables();
+
for(std::vector<cmInstallGenerator*>::iterator
i = this->InstallGenerators.begin();
i != this->InstallGenerators.end(); ++i)
@@ -713,6 +707,9 @@ bool cmMakefile::ReadListFile(const char* filename_in,
// pop the listfile off the stack
this->ListFileStack.pop_back();
+ // Check for unused variables
+ this->CheckForUnusedVariables();
+
return true;
}
@@ -1751,6 +1748,17 @@ void cmMakefile::AddDefinition(const char* name, bool value)
#endif
}
+void cmMakefile::CheckForUnusedVariables() const
+{
+ const cmDefinitions& defs = this->Internal->VarStack.top();
+ const std::set<cmStdString>& locals = defs.LocalKeys();
+ std::set<cmStdString>::const_iterator it = locals.begin();
+ for (; it != locals.end(); ++it)
+ {
+ this->CheckForUnused("out of scope", it->c_str());
+ }
+}
+
void cmMakefile::MarkVariableAsUsed(const char* var)
{
this->Internal->VarUsageStack.top().insert(var);
diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h
index 9d9606d..240a9cf 100644
--- a/Source/cmMakefile.h
+++ b/Source/cmMakefile.h
@@ -61,6 +61,8 @@ public:
unsigned int GetCacheMajorVersion();
unsigned int GetCacheMinorVersion();
+ /* Check for unused variables in this scope */
+ void CheckForUnusedVariables() const;
/* Mark a variable as used */
void MarkVariableAsUsed(const char* var);
/* return true if a variable has been initialized */