mirror of https://github.com/rectorphp/rector.git
33 lines
974 B
PHP
33 lines
974 B
PHP
<?php
|
|
|
|
declare (strict_types=1);
|
|
namespace Rector\Exception;
|
|
|
|
use Exception;
|
|
use Throwable;
|
|
final class ShouldNotHappenException extends Exception
|
|
{
|
|
/**
|
|
* @param string $message
|
|
* @param int $code
|
|
*/
|
|
public function __construct($message = '', $code = 0, ?Throwable $throwable = null)
|
|
{
|
|
if ($message === '') {
|
|
$message = $this->createDefaultMessageWithLocation();
|
|
}
|
|
parent::__construct($message, $code, $throwable);
|
|
}
|
|
private function createDefaultMessageWithLocation() : string
|
|
{
|
|
$debugBacktrace = \debug_backtrace();
|
|
$class = $debugBacktrace[2]['class'] ?? null;
|
|
$function = $debugBacktrace[2]['function'];
|
|
$line = $debugBacktrace[1]['line'] ?? 0;
|
|
$method = $class !== null ? $class . '::' . $function : $function;
|
|
/** @var string $method */
|
|
/** @var int $line */
|
|
return \sprintf('Look at "%s()" on line %d', $method, $line);
|
|
}
|
|
}
|