@@ -55,18 +55,33 @@ public function getRuleDefinition(): RuleDefinition
5555 */
5656 public function getNodeTypes (): array
5757 {
58- return [NullsafeMethodCall::class, NullsafePropertyFetch::class];
58+ return [MethodCall::class, PropertyFetch::class, NullsafeMethodCall::class, NullsafePropertyFetch::class];
5959 }
6060
6161 /**
62- * @param NullsafeMethodCall|NullsafePropertyFetch $node
62+ * @param MethodCall| NullsafeMethodCall|NullsafePropertyFetch $node
6363 */
64- public function refactor (Node $ node ): Ternary
64+ public function refactor (Node $ node ): ? Ternary
6565 {
66+ if ($ node instanceof MethodCall || $ node instanceof PropertyFetch) {
67+ if ($ node ->var instanceof NullsafeMethodCall || $ node ->var instanceof NullsafePropertyFetch) {
68+ $ nullsafeVariable = $ this ->createNullsafeVariable ();
69+
70+ $ assign = new Assign ($ nullsafeVariable , $ node ->var ->var );
71+ $ methodCallOrPropertyFetch = $ node ->var instanceof NullsafeMethodCall
72+ ? new MethodCall (new MethodCall ($ nullsafeVariable , $ node ->var ->name , $ node ->var ->args ), $ node ->name , $ node ->args )
73+ : new PropertyFetch (new PropertyFetch ($ nullsafeVariable , $ node ->var ->name ), $ node ->name );
74+
75+ return new Ternary ($ assign , $ methodCallOrPropertyFetch , $ this ->nodeFactory ->createNull ());
76+ }
77+
78+ return null ;
79+ }
80+
6681 $ nullsafeVariable = $ this ->createNullsafeVariable ();
6782
6883 $ methodCallOrPropertyFetch = $ node instanceof NullsafeMethodCall
69- ? new MethodCall ($ nullsafeVariable , $ node ->name , $ node ->getArgs () )
84+ ? new MethodCall ($ nullsafeVariable , $ node ->name , $ node ->args )
7085 : new PropertyFetch ($ nullsafeVariable , $ node ->name );
7186
7287 $ assign = new Assign ($ nullsafeVariable , $ node ->var );
0 commit comments