Skip to content

Commit 0cdc636

Browse files
authored
Merge pull request #11 from Cheburon/fix-php7-params
fix
2 parents b4caa1a + 33d0ef5 commit 0cdc636

File tree

3 files changed

+17
-3
lines changed

3 files changed

+17
-3
lines changed

src/Naneau/Obfuscator/Node/Visitor/ScrambleUse.php

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,9 +156,23 @@ public function enterNode(Node $node)
156156
}
157157
}
158158

159+
if ($node instanceof Param && $node->type instanceof Node\NullableType && $node->type->type instanceof Name) {
160+
// Name
161+
$name = $node->type->type->toString();
162+
163+
// Has it been renamed?
164+
if ($this->isRenamed($name)) {
165+
$node->type->type = $this->getNewName($name);
166+
return $node;
167+
} elseif ($this->isRenamed($node->type->type->getFirst())) {
168+
reset($node->type->type->parts);
169+
$node->type->type->parts[key($node->type->type->parts)] = $this->getNewName($node->type->type->getFirst());
170+
return $node;
171+
}
172+
}
173+
159174
// Param rename
160175
if ($node instanceof Param && $node->type instanceof Name) {
161-
162176
// Name
163177
$name = $node->type->toString();
164178

tests/before/Namespaces.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public function __construct() {
3535

3636
class classE extends namespaceDAlias\classD implements namespaceDAlias\interfaceA {
3737

38-
public function method(namespaceDAlias\classD $objectD) : ?namespaceDAlias\classD {
38+
public function method(?namespaceDAlias\classD $objectD) : ?namespaceDAlias\classD {
3939

4040
}
4141
}

tests/expected/Namespaces.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
<?php
2-
namespace namespaceA; class classA { } namespace namespaceC\namespaceD; class classD { } interface interfaceA { } namespace namespaceB; use namespaceA\classA as spf0f507; use namespaceC\namespaceD as sp63627e; class classB { private $spa26210; private $sp2e1034; public function __construct() { $this->spa26210 = new spf0f507(); $this->sp2e1034 = new sp63627e\classD(); } } class classE extends sp63627e\classD implements sp63627e\interfaceA { public function method(sp63627e\classD $spc1ac55) : ?sp63627e\classD { } }
2+
namespace namespaceA; class classA { } namespace namespaceC\namespaceD; class classD { } interface interfaceA { } namespace namespaceB; use namespaceA\classA as spf0f507; use namespaceC\namespaceD as sp63627e; class classB { private $spa26210; private $sp2e1034; public function __construct() { $this->spa26210 = new spf0f507(); $this->sp2e1034 = new sp63627e\classD(); } } class classE extends sp63627e\classD implements sp63627e\interfaceA { public function method(?sp63627e\classD $spc1ac55) : ?sp63627e\classD { } }

0 commit comments

Comments
 (0)