Skip to content

Commit 6932260

Browse files
committed
Fix replacement of class signatures when a packagesynopsis element is present
So far, the gen_stub.php --replace-classsynopses subcommand didn't take the packagesynopsis element into account, causing some bugs: the wrong element was tried to be replaced (classynopsis instead of packagesynopsis) with the wrong content (the classname without the namespace: e.g. \Exception instead of \FFI\Exception).
1 parent 5485f8e commit 6932260

1 file changed

Lines changed: 14 additions & 1 deletion

File tree

build/gen_stub.php

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5776,6 +5776,19 @@ function replaceClassSynopses(
57765776
continue;
57775777
}
57785778
$className = $child->textContent;
5779+
5780+
if ($classSynopsis->parentElement->nodeName === "packagesynopsis" &&
5781+
$classSynopsis->parentElement->firstElementChild->nodeName === "package"
5782+
) {
5783+
$package = $classSynopsis->parentElement->firstElementChild;
5784+
$namespace = $package->textContent;
5785+
5786+
$className = $namespace . "\\" . $className;
5787+
$elementToReplace = $classSynopsis->parentElement;
5788+
} else {
5789+
$elementToReplace = $classSynopsis;
5790+
}
5791+
57795792
if (!isset($classMap[$className])) {
57805793
continue;
57815794
}
@@ -5791,7 +5804,7 @@ function replaceClassSynopses(
57915804

57925805
// Check if there is any change - short circuit if there is not any.
57935806

5794-
if (replaceAndCompareXmls($doc, $classSynopsis, $newClassSynopsis)) {
5807+
if (replaceAndCompareXmls($doc, $elementToReplace, $newClassSynopsis)) {
57955808
continue;
57965809
}
57975810

0 commit comments

Comments
 (0)