diff --git a/src/Cdn77/Sniffs/NamingConventions/ValidVariableNameSniff.php b/src/Cdn77/Sniffs/NamingConventions/ValidVariableNameSniff.php index d39cca3..8795377 100644 --- a/src/Cdn77/Sniffs/NamingConventions/ValidVariableNameSniff.php +++ b/src/Cdn77/Sniffs/NamingConventions/ValidVariableNameSniff.php @@ -6,6 +6,7 @@ use PHP_CodeSniffer\Files\File; use PHP_CodeSniffer\Sniffs\AbstractVariableSniff; +use RuntimeException; use function assert; use function ltrim; @@ -110,7 +111,13 @@ protected function processMemberVar(File $phpcsFile, $stackPtr): void $tokens = $phpcsFile->getTokens(); $varName = ltrim($tokens[$stackPtr]['content'], '$'); - $memberProps = $phpcsFile->getMemberProperties($stackPtr); + + try { + $memberProps = $phpcsFile->getMemberProperties($stackPtr); + } catch (RuntimeException) { + return; + } + if ($memberProps === []) { // Couldn't get any info about this variable, which // generally means it is invalid or possibly has a parse diff --git a/tests/Sniffs/NamingConventions/data/ValidVariableNameSniffTest.inc b/tests/Sniffs/NamingConventions/data/ValidVariableNameSniffTest.inc index 53c46ba..4f9d116 100644 --- a/tests/Sniffs/NamingConventions/data/ValidVariableNameSniffTest.inc +++ b/tests/Sniffs/NamingConventions/data/ValidVariableNameSniffTest.inc @@ -146,3 +146,25 @@ $var_name . $var_name; fn($_, $__, $_x) => true; $var = Potato::new(); + +class PropertyHookClass +{ + private string|null $resolved = null; + private bool $isResolved = false; + + public function __construct( + private readonly Closure $provider, + ) { + } + + public string|null $hooked { + get { + if (! $this->isResolved) { + $this->resolved = ($this->provider)(); + $this->isResolved = true; + } + + return $this->resolved; + } + } +}