diff --git a/src/DocBlock/Tags/InvalidTag.php b/src/DocBlock/Tags/InvalidTag.php index c37ea69..412be62 100644 --- a/src/DocBlock/Tags/InvalidTag.php +++ b/src/DocBlock/Tags/InvalidTag.php @@ -102,16 +102,16 @@ final class InvalidTag implements Tag }; do { - $trace = array_map( - static function (array $call) use ($flatten) : array { - $call['args'] = $call['args'] ?? []; - - array_walk_recursive($call['args'], $flatten); - - return $call; - }, - $exception->getTrace() - ); + $trace = $exception->getTrace(); + if (isset($trace[0]['args'])) { + $trace = array_map( + static function (array $call) use ($flatten) : array { + array_walk_recursive($call['args'], $flatten); + return $call; + }, + $trace + ); + } $traceProperty->setValue($exception, $trace); $exception = $exception->getPrevious(); } while ($exception !== null); diff --git a/tests/unit/DocBlock/Tags/InvalidTagTest.php b/tests/unit/DocBlock/Tags/InvalidTagTest.php index 49d79a6..88456bd 100644 --- a/tests/unit/DocBlock/Tags/InvalidTagTest.php +++ b/tests/unit/DocBlock/Tags/InvalidTagTest.php @@ -56,8 +56,11 @@ final class InvalidTagTest extends TestCase self::assertSame('name', $tag->getName()); self::assertSame('@name Body', $tag->render()); self::assertSame($parentException, $tag->getException()); - self::assertStringStartsWith('(Closure at', $tag->getException()->getPrevious()->getTrace()[0]['args'][0]); - self::assertStringContainsString(__FILE__, $tag->getException()->getPrevious()->getTrace()[0]['args'][0]); + $trace = $tag->getException()->getPrevious()->getTrace(); + if (isset($trace[0]['args'])) { // Not set by default on 7.4 + self::assertStringStartsWith('(Closure at', $trace[0]['args'][0]); + self::assertStringContainsString(__FILE__, $trace[0]['args'][0]); + } self::assertEquals($parentException, unserialize(serialize($parentException))); } } @@ -81,10 +84,13 @@ final class InvalidTagTest extends TestCase self::assertSame('name', $tag->getName()); self::assertSame('@name Body', $tag->render()); self::assertSame($parentException, $tag->getException()); - self::assertStringStartsWith( - 'resource(stream)', - $tag->getException()->getPrevious()->getTrace()[0]['args'][0] - ); + $trace = $tag->getException()->getPrevious()->getTrace(); + if (isset($trace[0]['args'])) { // Not set by default on 7.4 + self::assertStringStartsWith( + 'resource(stream)', + $trace[0]['args'][0] + ); + } self::assertEquals($parentException, unserialize(serialize($parentException))); } }