Do not concat exception class name in Timestamp compat
authorWMDE-Fisch <christoph.jauera@wikimedia.de>
Thu, 1 Feb 2018 17:27:07 +0000 (18:27 +0100)
committerTimo Tijhof <krinklemail@gmail.com>
Fri, 2 Feb 2018 18:40:48 +0000 (10:40 -0800)
It seems this is not necessary and confused my IDE in thinking
'Exception' is an alias for TimestampException.

Given that we use a namespaced reference to the class,
ClassCollector still won't see it. Updated test to verify that.

Change-Id: I7c9258c5739a64959442af1296e2b93395260894

includes/compat/Timestamp.php
tests/phpunit/includes/utils/ClassCollectorTest.php

index bd25432..63b87ae 100644 (file)
@@ -7,12 +7,12 @@
 // loading context. This file will then register the alias and, as class_alias() does
 // by default, it will trigger a plain autoload for the destination class.
 
-// The below uses string concatenation for the alias to avoid being seen by ClassCollector,
-// which would insist on adding it to autoload.php, after which AutoLoaderTest will
+// The below uses a namespaced class reference, to to avoid being seen by ClassCollector,
+// which would otherwise add it to autoload.php, after which AutoLoaderTest will
 // complain about class_alias() not being in the target class file.
 
 /**
  * @deprecated since 1.29
  * @since 1.20
  */
-class_alias( Wikimedia\Timestamp\TimestampException::class, 'Timestamp' . 'Exception' );
+class_alias( Wikimedia\Timestamp\TimestampException::class, 'TimestampException' );
index 8e07b5e..796d459 100644 (file)
@@ -33,6 +33,12 @@ class ClassCollectorTest extends PHPUnit_Framework_TestCase {
                                "class_alias( Foo::class, 'Bar' );",
                                [ 'Bar' ],
                        ],
+                       [
+                               // Namespaced class is not currently supported. Must use namespace declaration
+                               // earlier in the file.
+                               "class_alias( Example\Foo::class, 'Bar' );",
+                               [],
+                       ],
                        [
                                "namespace Example;\nclass Foo {}\nclass_alias( Foo::class, 'Bar' );",
                                [ 'Example\Foo', 'Bar' ],