BUG: Make RAISE_SCOPE function work when variable is not defined.

This commit is contained in:
Brad King 2008-01-02 17:49:16 -05:00
parent ec05369d04
commit dcd9a1b59f
3 changed files with 46 additions and 2 deletions

View File

@ -2853,7 +2853,14 @@ void cmMakefile::RaiseScope(const char *var)
// multiple scopes in this directory?
if (this->DefinitionStack.size() > 1)
{
this->DefinitionStack[this->DefinitionStack.size()-2][var] = varDef;
if(varDef)
{
this->DefinitionStack[this->DefinitionStack.size()-2][var] = varDef;
}
else
{
this->DefinitionStack[this->DefinitionStack.size()-2].erase(var);
}
}
// otherwise do the parent
else
@ -2861,7 +2868,14 @@ void cmMakefile::RaiseScope(const char *var)
cmMakefile *parent = this->LocalGenerator->GetParent()->GetMakefile();
if (parent)
{
parent->AddDefinition(var,varDef);
if(varDef)
{
parent->AddDefinition(var,varDef);
}
else
{
parent->RemoveDefinition(var);
}
}
}
}

View File

@ -83,4 +83,31 @@ FUNCTION(ADD_EXECUTABLE exec)
_ADD_EXECUTABLE(mini${exec} ${ARGN})
ENDFUNCTION(ADD_EXECUTABLE)
# var undef case
FUNCTION(undef_var m)
SET(${m})
RAISE_SCOPE(${m})
ENDFUNCTION(undef_var)
SET(FUNCTION_UNDEFINED 1)
undef_var(FUNCTION_UNDEFINED)
IF(DEFINED FUNCTION_UNDEFINED)
FAILED("Function Undefine Test" "(${FUNCTION_UNDEFINED})")
ELSE(DEFINED FUNCTION_UNDEFINED)
PASS("Function Undefine Test" "(${FUNCTION_UNDEFINED})")
ENDIF(DEFINED FUNCTION_UNDEFINED)
# Subdirectory scope raise.
SET(SUBDIR_UNDEFINED 1)
ADD_SUBDIRECTORY(SubDirScope)
IF(DEFINED SUBDIR_UNDEFINED)
FAILED("Subdir Undefine Test" "(${SUBDIR_UNDEFINED})")
ELSE(DEFINED SUBDIR_UNDEFINED)
PASS("Subdir Undefine Test" "(${SUBDIR_UNDEFINED})")
ENDIF(DEFINED SUBDIR_UNDEFINED)
IF(DEFINED SUBDIR_DEFINED)
PASS("Subdir Define Test" "(${SUBDIR_DEFINED})")
ELSE(DEFINED SUBDIR_DEFINED)
FAILED("Subdir Define Test" "(${SUBDIR_DEFINED})")
ENDIF(DEFINED SUBDIR_DEFINED)
ADD_EXECUTABLE(FunctionTest functionTest.c)

View File

@ -0,0 +1,3 @@
SET(SUBDIR_DEFINED 1)
SET(SUBDIR_UNDEFINED)
RAISE_SCOPE(SUBDIR_DEFINED SUBDIR_UNDEFINED)