Merge branch '3.4' into 3

This commit is contained in:
Daniel Hensby 2016-07-07 10:28:49 +01:00
commit 8a21d53a07
No known key found for this signature in database
GPG Key ID: B00D1E9767F0B06E
4 changed files with 35 additions and 1 deletions

View File

@ -242,6 +242,19 @@ class SS_ConfigStaticManifest_Parser {
$type = ($token === (array)$token) ? $token[0] : $token;
if($type == T_CLASS) {
// Fetch the last token
$pos = $this->pos - 1; // Subtract 1 as the pointer is always 1 place ahead of the current token
do {
$pos--;
$prev = $this->tokens[$pos];
} while ($pos > 0 && is_array($prev) && $prev[0] == T_WHITESPACE);
// Ignore class keyword if it's being used for class name resolution: ClassName::class
$lastType = ($prev === (array)$prev) ? $prev[0] : $prev;
if ($lastType === T_PAAMAYIM_NEKUDOTAYIM) {
continue;
}
$next = $this->nextString();
if($next === null) {
user_error("Couldn\'t parse {$this->path} when building config static manifest", E_USER_ERROR);

View File

@ -96,7 +96,7 @@ class MySQLiConnector extends DBConnector {
}
public function __destruct() {
if ($this->dbConn) {
if (is_resource($this->dbConn)) {
mysqli_close($this->dbConn);
$this->dbConn = null;
}

View File

@ -257,6 +257,16 @@ DOC;
$this->assertEquals($expected, $statics[':ss:test2']);
}
public function testParsingClassKeyword() {
$parser = new SS_ConfigStaticManifest_Parser(__DIR__ .
'/ConfigStaticManifestTest/ConfigStaticManifestTestClassKeyword.php');
$parser->parse();
$statics = $parser->getStatics();
$this->assertEquals('bar', $statics['ConfigStaticManifestTestClassKeyword']['foo']['value']);
}
}
class ConfigStaticManifestTest_Parser extends SS_ConfigStaticManifest_Parser implements TestOnly {

View File

@ -0,0 +1,11 @@
<?php
class ConfigStaticManifestTestClassKeyword implements TestOnly {
private static $foo = 'bar';
public function __construct() {
$this->inst = Injector::inst()->get(static::class);
}
}