A property that has a default in the heredoc format will always be seen as not having a type, this isn't the case for a regular string or Nowdoc
PHPStan 0.12.3
<?php declare(strict_types = 1);
class BugReportMailrcConfigTests
{
/** @var string */
private $s1 = <<<STRING
I'm a string :(
STRING;
/** @var string */
private $s2 = <<<'STRING'
I'm a string :)
STRING;
/** @var string */
private $s3 = 'I\'m a string :)';
}
https://phpstan.org/r/e225ae46-945f-4327-bff5-77df51e1bf5b
[OK] No errors
Looks like this is a PHP bug introduced in PHP 7.3.0: https://3v4l.org/4fRLA
Submitted a bug report: https://bugs.php.net/bug.php?id=79062
Fixed in PHP.