diff --git a/bin/composer b/bin/composer
index b7ab5318b..b4f18dfdc 100755
--- a/bin/composer
+++ b/bin/composer
@@ -10,6 +10,7 @@ require __DIR__.'/../src/bootstrap.php';
use Composer\Console\Application;
use Composer\XdebugHandler\XdebugHandler;
+use Composer\Util\ErrorHandler;
error_reporting(-1);
@@ -57,6 +58,8 @@ if (function_exists('ini_set')) {
putenv('COMPOSER_BINARY='.realpath($_SERVER['argv'][0]));
+ErrorHandler::register();
+
// run the command application
$application = new Application();
$application->run();
diff --git a/src/Composer/Console/Application.php b/src/Composer/Console/Application.php
index bc1cf0993..a6553b277 100644
--- a/src/Composer/Console/Application.php
+++ b/src/Composer/Console/Application.php
@@ -127,6 +127,8 @@ class Application extends BaseApplication
$io = $this->io = new ConsoleIO($input, $output, new HelperSet(array(
new QuestionHelper(),
)));
+
+ // Register error handler again to pass it the IO instance
ErrorHandler::register($io);
if ($input->hasParameterOption('--no-cache')) {
diff --git a/src/Composer/Util/ErrorHandler.php b/src/Composer/Util/ErrorHandler.php
index c4dabd1d7..9364ce260 100644
--- a/src/Composer/Util/ErrorHandler.php
+++ b/src/Composer/Util/ErrorHandler.php
@@ -52,6 +52,15 @@ class ErrorHandler
}
if (self::$io) {
+ // ignore symfony/* deprecation warnings about return types
+ // also ignore them from the Composer namespace, as 1.x won't get all that fixed anymore
+ if (preg_match('{^Return type of (Symfony|Composer)\\\\.*ReturnTypeWillChange}is', $message)) {
+ return true;
+ }
+ if (strpos(strtr($file, '\\', '/'), 'vendor/symfony/') !== false) {
+ return true;
+ }
+
self::$io->writeError('Deprecation Notice: '.$message.' in '.$file.':'.$line.'');
if (self::$io->isVerbose()) {
self::$io->writeError('Stack trace:');