diff --git a/.travis.yml b/.travis.yml
index 505618952a..d365f8782f 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -26,7 +26,7 @@ env:
matrix:
include:
- php: 7.2
- env: php_extra="7.4snapshot"
+ env: php_extra="7.4"
- php: 7.3
env: deps=high
- php: 7.4
diff --git a/src/Symfony/Component/Console/Application.php b/src/Symfony/Component/Console/Application.php
index 1d0d606236..38956d1fe0 100644
--- a/src/Symfony/Component/Console/Application.php
+++ b/src/Symfony/Component/Console/Application.php
@@ -783,7 +783,7 @@ class Application implements ResetInterface
}
if (false !== strpos($message, "class@anonymous\0")) {
- $message = preg_replace_callback('/class@anonymous\x00.*?\.php0x?[0-9a-fA-F]++/', function ($m) {
+ $message = preg_replace_callback('/class@anonymous\x00.*?\.php(?:0x?|:)[0-9a-fA-F]++/', function ($m) {
return class_exists($m[0], false) ? get_parent_class($m[0]).'@anonymous' : $m[0];
}, $message);
}
diff --git a/src/Symfony/Component/DependencyInjection/Loader/FileLoader.php b/src/Symfony/Component/DependencyInjection/Loader/FileLoader.php
index 1b615c758e..26577c9ef8 100644
--- a/src/Symfony/Component/DependencyInjection/Loader/FileLoader.php
+++ b/src/Symfony/Component/DependencyInjection/Loader/FileLoader.php
@@ -73,7 +73,7 @@ abstract class FileLoader extends BaseFileLoader
}
}
- if ($args !== $frame['args']) {
+ if (__FILE__ !== $frame['file']) {
throw $e;
}
}
diff --git a/src/Symfony/Component/ErrorHandler/ErrorHandler.php b/src/Symfony/Component/ErrorHandler/ErrorHandler.php
index 7e2bf11ef2..f4dcfb1094 100644
--- a/src/Symfony/Component/ErrorHandler/ErrorHandler.php
+++ b/src/Symfony/Component/ErrorHandler/ErrorHandler.php
@@ -761,7 +761,7 @@ class ErrorHandler
*/
private function parseAnonymousClass(string $message): string
{
- return preg_replace_callback('/class@anonymous\x00.*?\.php0x?[0-9a-fA-F]++/', static function ($m) {
+ return preg_replace_callback('/class@anonymous\x00.*?\.php(?:0x?|:)[0-9a-fA-F]++/', static function ($m) {
return class_exists($m[0], false) ? get_parent_class($m[0]).'@anonymous' : $m[0];
}, $message);
}
diff --git a/src/Symfony/Component/ErrorHandler/Exception/FlattenException.php b/src/Symfony/Component/ErrorHandler/Exception/FlattenException.php
index 762e8587df..0cff4cd898 100644
--- a/src/Symfony/Component/ErrorHandler/Exception/FlattenException.php
+++ b/src/Symfony/Component/ErrorHandler/Exception/FlattenException.php
@@ -200,7 +200,7 @@ class FlattenException
public function setMessage($message): self
{
if (false !== strpos($message, "class@anonymous\0")) {
- $message = preg_replace_callback('/class@anonymous\x00.*?\.php0x?[0-9a-fA-F]++/', function ($m) {
+ $message = preg_replace_callback('/class@anonymous\x00.*?\.php(?:0x?|:)[0-9a-fA-F]++/', function ($m) {
return class_exists($m[0], false) ? get_parent_class($m[0]).'@anonymous' : $m[0];
}, $message);
}
diff --git a/src/Symfony/Component/ErrorHandler/Resources/views/trace.html.php b/src/Symfony/Component/ErrorHandler/Resources/views/trace.html.php
index 3112af4abe..153f7d6f8e 100644
--- a/src/Symfony/Component/ErrorHandler/Resources/views/trace.html.php
+++ b/src/Symfony/Component/ErrorHandler/Resources/views/trace.html.php
@@ -5,7 +5,7 @@
- = $this->abbrClass($trace['class']); ?>= $trace['type']; ?>= $trace['function']; ?>(= $this->formatArgs($trace['args']); ?>)
+ = $this->abbrClass($trace['class']); ?>= $trace['type']; ?>= $trace['function']; ?>(= $this->formatArgs($trace['args']); ?>)
diff --git a/src/Symfony/Component/ErrorHandler/Resources/views/traces_text.html.php b/src/Symfony/Component/ErrorHandler/Resources/views/traces_text.html.php
index 1b06954dcd..e178fe0fcd 100644
--- a/src/Symfony/Component/ErrorHandler/Resources/views/traces_text.html.php
+++ b/src/Symfony/Component/ErrorHandler/Resources/views/traces_text.html.php
@@ -28,7 +28,7 @@
foreach ($exception['trace'] as $trace) {
echo "\n ";
if ($trace['function']) {
- echo 'at '.$trace['class'].$trace['type'].$trace['function'].'('.$this->formatArgsAsText($trace['args']).')';
+ echo 'at '.$trace['class'].$trace['type'].$trace['function'].'('.(isset($trace['args']) ? $this->formatArgsAsText($trace['args']) : '').')';
}
if ($trace['file'] && $trace['line']) {
echo($trace['function'] ? "\n (" : 'at ').strtr(strip_tags($this->formatFile($trace['file'], $trace['line'])), [' at line '.$trace['line'] => '']).':'.$trace['line'].($trace['function'] ? ')' : '');
diff --git a/src/Symfony/Component/ErrorHandler/Tests/Exception/FlattenExceptionTest.php b/src/Symfony/Component/ErrorHandler/Tests/Exception/FlattenExceptionTest.php
index cceb144b12..5783de38bc 100644
--- a/src/Symfony/Component/ErrorHandler/Tests/Exception/FlattenExceptionTest.php
+++ b/src/Symfony/Component/ErrorHandler/Tests/Exception/FlattenExceptionTest.php
@@ -226,6 +226,10 @@ class FlattenExceptionTest extends TestCase
public function testArguments()
{
+ if (\PHP_VERSION_ID >= 70400) {
+ $this->markTestSkipped('PHP 7.4 removes arguments from exception traces.');
+ }
+
$dh = opendir(__DIR__);
$fh = tmpfile();
@@ -288,6 +292,10 @@ class FlattenExceptionTest extends TestCase
public function testRecursionInArguments()
{
+ if (\PHP_VERSION_ID >= 70400) {
+ $this->markTestSkipped('PHP 7.4 removes arguments from exception traces.');
+ }
+
$a = null;
$a = ['foo', [2, &$a]];
$exception = $this->createException($a);
@@ -299,6 +307,10 @@ class FlattenExceptionTest extends TestCase
public function testTooBigArray()
{
+ if (\PHP_VERSION_ID >= 70400) {
+ $this->markTestSkipped('PHP 7.4 removes arguments from exception traces.');
+ }
+
$a = [];
for ($i = 0; $i < 20; ++$i) {
for ($j = 0; $j < 50; ++$j) {
diff --git a/src/Symfony/Component/Messenger/Tests/Transport/AmqpExt/ConnectionTest.php b/src/Symfony/Component/Messenger/Tests/Transport/AmqpExt/ConnectionTest.php
index 00b30fbbb5..f4df694b60 100644
--- a/src/Symfony/Component/Messenger/Tests/Transport/AmqpExt/ConnectionTest.php
+++ b/src/Symfony/Component/Messenger/Tests/Transport/AmqpExt/ConnectionTest.php
@@ -287,7 +287,7 @@ class ConnectionTest extends TestCase
$factory->method('createQueue')->willReturn($amqpQueue);
$amqpExchange->expects($this->once())->method('declareExchange');
- $amqpExchange->expects($this->once())->method('publish')->with('body', null, AMQP_NOPARAM, ['headers' => []]);
+ $amqpExchange->expects($this->once())->method('publish')->with('body', null, AMQP_NOPARAM, ['headers' => [], 'delivery_mode' => 2]);
$amqpQueue->expects($this->once())->method('declareQueue');
$amqpQueue->expects($this->exactly(1))->method('bind')->withConsecutive(
[self::DEFAULT_EXCHANGE_NAME, null, ['x-match' => 'all']]
diff --git a/src/Symfony/Component/VarDumper/Caster/ClassStub.php b/src/Symfony/Component/VarDumper/Caster/ClassStub.php
index b6c45456d2..758fe57bb4 100644
--- a/src/Symfony/Component/VarDumper/Caster/ClassStub.php
+++ b/src/Symfony/Component/VarDumper/Caster/ClassStub.php
@@ -56,7 +56,7 @@ class ClassStub extends ConstStub
}
if (false !== strpos($identifier, "class@anonymous\0")) {
- $this->value = $identifier = preg_replace_callback('/class@anonymous\x00.*?\.php0x?[0-9a-fA-F]++/', function ($m) {
+ $this->value = $identifier = preg_replace_callback('/class@anonymous\x00.*?\.php(?:0x?|:)[0-9a-fA-F]++/', function ($m) {
return class_exists($m[0], false) ? get_parent_class($m[0]).'@anonymous' : $m[0];
}, $identifier);
}
diff --git a/src/Symfony/Component/VarDumper/Caster/ExceptionCaster.php b/src/Symfony/Component/VarDumper/Caster/ExceptionCaster.php
index 1098a1fbb3..214026b01b 100644
--- a/src/Symfony/Component/VarDumper/Caster/ExceptionCaster.php
+++ b/src/Symfony/Component/VarDumper/Caster/ExceptionCaster.php
@@ -283,7 +283,7 @@ class ExceptionCaster
unset($a[$xPrefix.'string'], $a[Caster::PREFIX_DYNAMIC.'xdebug_message'], $a[Caster::PREFIX_DYNAMIC.'__destructorException']);
if (isset($a[Caster::PREFIX_PROTECTED.'message']) && false !== strpos($a[Caster::PREFIX_PROTECTED.'message'], "class@anonymous\0")) {
- $a[Caster::PREFIX_PROTECTED.'message'] = preg_replace_callback('/class@anonymous\x00.*?\.php0x?[0-9a-fA-F]++/', function ($m) {
+ $a[Caster::PREFIX_PROTECTED.'message'] = preg_replace_callback('/class@anonymous\x00.*?\.php(?:0x?|:)[0-9a-fA-F]++/', function ($m) {
return class_exists($m[0], false) ? get_parent_class($m[0]).'@anonymous' : $m[0];
}, $a[Caster::PREFIX_PROTECTED.'message']);
}