FIX ConfigStaticManifest persisting access level after parsing a static

This commit is contained in:
Hamish Friedlander 2013-03-22 14:26:48 +13:00
parent f7400198d7
commit 47edbfe8fc
2 changed files with 8 additions and 5 deletions

View File

@ -80,7 +80,7 @@ class SS_ConfigStaticManifest {
if ($static['access'] != T_PRIVATE) {
Deprecation::notice('3.2.0', "Config static $class::\$$name must be marked as private", Deprecation::SCOPE_GLOBAL);
// Don't warn more than once per static
$static['access'] = T_PRIVATE;
$this->statics[$class][$name]['access'] = T_PRIVATE;
}
return $static['value'];
@ -231,11 +231,12 @@ class SS_ConfigStaticManifest_Parser {
else if($type == T_PUBLIC || $type == T_PRIVATE || $type == T_PROTECTED) {
$access = $type;
}
else if($type == T_STATIC) {
if($class && $depth == $clsdepth) $this->parseStatic($access, $namespace ? $namespace.'\\'.$class : $class);
else if($type == T_STATIC && $class && $depth == $clsdepth) {
$this->parseStatic($access, $namespace ? $namespace.'\\'.$class : $class);
$access = 0;
}
else {
$access = '';
$access = 0;
}
}
}

View File

@ -12,6 +12,7 @@ class ConfigStaticManifestTest extends SapphireTest {
static public $public2;
static protected $protected2;
static private $private2;
static $nolevel_after_private;
// Assigning values
static $snone;
@ -96,7 +97,8 @@ DOC;
'protected' => T_PROTECTED,
'protected2' => T_PROTECTED,
'private' => T_PRIVATE,
'private2' => T_PRIVATE
'private2' => T_PRIVATE,
'nolevel_after_private' => null
);
foreach($levels as $var => $level) {