Skip to content

Commit b3dc1d9

Browse files
committed
Make array/object keys quote aware
Fixes phpstan/phpdoc-parser#251
1 parent 8c4cb2f commit b3dc1d9

File tree

2 files changed

+6
-0
lines changed

2 files changed

+6
-0
lines changed

src/Type/Constant/ConstantArrayType.php

+3
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
use PHPStan\Php\PhpVersion;
1010
use PHPStan\PhpDocParser\Ast\ConstExpr\ConstExprIntegerNode;
1111
use PHPStan\PhpDocParser\Ast\ConstExpr\ConstExprStringNode;
12+
use PHPStan\PhpDocParser\Ast\ConstExpr\QuoteAwareConstExprStringNode;
1213
use PHPStan\PhpDocParser\Ast\Type\ArrayShapeItemNode;
1314
use PHPStan\PhpDocParser\Ast\Type\ArrayShapeNode;
1415
use PHPStan\PhpDocParser\Ast\Type\ConstTypeNode;
@@ -1666,6 +1667,8 @@ public function toPhpDocNode(): TypeNode
16661667
$value = $keyNode->value;
16671668
if (self::isValidIdentifier($value)) {
16681669
$keyNode = new IdentifierTypeNode($value);
1670+
} else {
1671+
$keyNode = new QuoteAwareConstExprStringNode($value, QuoteAwareConstExprStringNode::SINGLE_QUOTED);
16691672
}
16701673
}
16711674

src/Type/ObjectShapeType.php

+3
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use PHPStan\Analyser\OutOfClassScope;
66
use PHPStan\Broker\Broker;
77
use PHPStan\PhpDocParser\Ast\ConstExpr\ConstExprStringNode;
8+
use PHPStan\PhpDocParser\Ast\ConstExpr\QuoteAwareConstExprStringNode;
89
use PHPStan\PhpDocParser\Ast\Type\ConstTypeNode;
910
use PHPStan\PhpDocParser\Ast\Type\IdentifierTypeNode;
1011
use PHPStan\PhpDocParser\Ast\Type\ObjectShapeItemNode;
@@ -519,6 +520,8 @@ public function toPhpDocNode(): TypeNode
519520

520521
/** @var ConstExprStringNode $keyNode */
521522
$keyNode = $keyPhpDocNode->constExpr;
523+
524+
$keyNode = new QuoteAwareConstExprStringNode($keyNode->value, QuoteAwareConstExprStringNode::SINGLE_QUOTED);
522525
}
523526
$items[] = new ObjectShapeItemNode(
524527
$keyNode,

0 commit comments

Comments
 (0)