AutoloadGenerator: Account for PHP 5.5 syntax like "self::static"
authorTimo Tijhof <krinklemail@gmail.com>
Wed, 2 Mar 2016 19:17:42 +0000 (19:17 +0000)
committerTimo Tijhof <krinklemail@gmail.com>
Wed, 2 Mar 2016 19:17:42 +0000 (19:17 +0000)
Bug: T128625
Change-Id: I905b549a738b76c07c56ec92f500553c1d48f558

includes/utils/AutoloadGenerator.php

index 254e4e7..916e2f8 100644 (file)
@@ -311,6 +311,7 @@ class ClassCollector {
                case T_CLASS:
                case T_INTERFACE:
                case T_TRAIT:
+               case T_DOUBLE_COLON:
                        $this->startToken = $token;
                }
        }
@@ -322,6 +323,11 @@ class ClassCollector {
         */
        protected function tryEndExpect( $token ) {
                switch ( $this->startToken[0] ) {
+               case T_DOUBLE_COLON:
+                       // Skip over T_CLASS after T_DOUBLE_COLON because this is something like
+                       // "self::static" which accesses the class name. It doens't define a new class.
+                       $this->startToken = null;
+                       break;
                case T_NAMESPACE:
                        if ( $token === ';' || $token === '{' ) {
                                $this->namespace = $this->implodeTokens() . '\\';