Skip to content

Commit 3994faa

Browse files
authored
fix(dev): respect escaped @type for nested parameter parsing (#8987)
1 parent 1942db8 commit 3994faa

3 files changed

Lines changed: 11 additions & 2 deletions

File tree

dev/src/DocFx/Node/ParameterNode.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ public function getNestedParameters(): array
8484
$parameterString = substr($parameterString, 1, -1);
8585

8686
// Create an array item for each parameter.
87-
$nestedParameters = explode('@type', $parameterString);
87+
$nestedParameters = preg_split('/(?<!\\\\)@type/', $parameterString);
8888

8989
// Remove the first, since that's the wrapping array param,
9090
// and use it for the wrapping param description

dev/tests/Unit/DocFx/NodeTest.php

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public function testNestedParameters()
4343
$params = $method->getParameters();
4444

4545
// Assert the parameters have been parsed
46-
$this->assertCount(8, $params);
46+
$this->assertCount(9, $params);
4747

4848
// Assert parent option parameter
4949
$this->assertEquals('data', $params[1]->getName());
@@ -76,6 +76,13 @@ public function testNestedParameters()
7676
'Ensure special chars are decoded, such as alice@example.com.',
7777
$params[7]->getDescription()
7878
);
79+
80+
$this->assertEquals('↳ escapedType', $params[8]->getName());
81+
$this->assertEquals('string', $params[8]->getType());
82+
$this->assertEquals(
83+
'Ensure @ is escaped, such as in \@type.',
84+
$params[8]->getDescription()
85+
);
7986
}
8087

8188
public function testProtoRefInParameters()

dev/tests/fixtures/phpdoc/nestedparams.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@
4040
@type ImageContext $imageContext Additional context that may accompany the image.
4141
@type string $exampleString
4242
Ensure special chars are decoded, such as alice&#64;example.com.
43+
@type string $escapedType
44+
Ensure @ is escaped, such as in \@type.
4345
}"
4446
variable="data"
4547
type="array"

0 commit comments

Comments
 (0)