diff --git a/src/Type/Constant/ConstantArrayType.php b/src/Type/Constant/ConstantArrayType.php index 5ab51870a8..8b46fdcb34 100644 --- a/src/Type/Constant/ConstantArrayType.php +++ b/src/Type/Constant/ConstantArrayType.php @@ -9,6 +9,7 @@ use PHPStan\Php\PhpVersion; use PHPStan\PhpDocParser\Ast\ConstExpr\ConstExprIntegerNode; use PHPStan\PhpDocParser\Ast\ConstExpr\ConstExprStringNode; +use PHPStan\PhpDocParser\Ast\ConstExpr\QuoteAwareConstExprStringNode; use PHPStan\PhpDocParser\Ast\Type\ArrayShapeItemNode; use PHPStan\PhpDocParser\Ast\Type\ArrayShapeNode; use PHPStan\PhpDocParser\Ast\Type\ConstTypeNode; @@ -1666,6 +1667,8 @@ public function toPhpDocNode(): TypeNode $value = $keyNode->value; if (self::isValidIdentifier($value)) { $keyNode = new IdentifierTypeNode($value); + } else { + $keyNode = new QuoteAwareConstExprStringNode($value, QuoteAwareConstExprStringNode::SINGLE_QUOTED); } } diff --git a/src/Type/ObjectShapeType.php b/src/Type/ObjectShapeType.php index a00324259a..35a640df84 100644 --- a/src/Type/ObjectShapeType.php +++ b/src/Type/ObjectShapeType.php @@ -5,6 +5,7 @@ use PHPStan\Analyser\OutOfClassScope; use PHPStan\Broker\Broker; use PHPStan\PhpDocParser\Ast\ConstExpr\ConstExprStringNode; +use PHPStan\PhpDocParser\Ast\ConstExpr\QuoteAwareConstExprStringNode; use PHPStan\PhpDocParser\Ast\Type\ConstTypeNode; use PHPStan\PhpDocParser\Ast\Type\IdentifierTypeNode; use PHPStan\PhpDocParser\Ast\Type\ObjectShapeItemNode; @@ -519,6 +520,8 @@ public function toPhpDocNode(): TypeNode /** @var ConstExprStringNode $keyNode */ $keyNode = $keyPhpDocNode->constExpr; + + $keyNode = new QuoteAwareConstExprStringNode($keyNode->value, QuoteAwareConstExprStringNode::SINGLE_QUOTED); } $items[] = new ObjectShapeItemNode( $keyNode,