Browse Source

Improve unused warning logic

Only warn when changing the definition of an initialized variable.
Ben Boeckel 15 years ago
parent
commit
e49a935c20
1 changed files with 4 additions and 4 deletions
  1. 4 4
      Source/cmMakefile.cxx

+ 4 - 4
Source/cmMakefile.cxx

@@ -1649,12 +1649,12 @@ void cmMakefile::AddDefinition(const char* name, const char* value)
 #endif
 
   this->Internal->VarStack.top().Set(name, value);
-  this->Internal->VarInitStack.top().insert(name);
-  if (this->Internal->VarUsageStack.size() > 1)
+  if ((this->Internal->VarUsageStack.size() > 1) && this->VariableInitialized(name))
     {
     this->CheckForUnused("changing definition", name);
     this->Internal->VarUsageStack.top().erase(name);
     }
+  this->Internal->VarInitStack.top().insert(name);
 
 #ifdef CMAKE_BUILD_WITH_CMAKE
   cmVariableWatch* vv = this->GetVariableWatch();
@@ -1719,12 +1719,12 @@ void cmMakefile::AddCacheDefinition(const char* name, const char* value,
 void cmMakefile::AddDefinition(const char* name, bool value)
 {
   this->Internal->VarStack.top().Set(name, value? "ON" : "OFF");
-  this->Internal->VarInitStack.top().insert(name);
-  if (this->Internal->VarUsageStack.size() > 1)
+  if ((this->Internal->VarUsageStack.size() > 1) && this->VariableInitialized(name))
     {
     this->CheckForUnused("changing definition", name);
     this->Internal->VarUsageStack.top().erase(name);
     }
+  this->Internal->VarInitStack.top().insert(name);
 #ifdef CMAKE_BUILD_WITH_CMAKE
   cmVariableWatch* vv = this->GetVariableWatch();
   if ( vv )