Skip to content

Commit 8fcb6b4

Browse files
authored
Merge pull request #10891 from josephwynn-sc/json-serialize-should-be-ignored
Ignore jsonSerialize for implementors of JsonSerializable
2 parents 81e4b97 + 98ecec6 commit 8fcb6b4

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

src/Psalm/Internal/Codebase/ClassLikes.php

+6
Original file line numberDiff line numberDiff line change
@@ -1755,6 +1755,12 @@ private function checkMethodReferences(ClassLikeStorage $classlike_storage, Meth
17551755
continue;
17561756
}
17571757

1758+
if ($codebase->classImplements($classlike_storage->name, 'JsonSerializable')
1759+
&& ($method_name === 'jsonserialize')
1760+
) {
1761+
continue;
1762+
}
1763+
17581764
$has_variable_calls = $codebase->analyzer->hasMixedMemberName($method_name)
17591765
|| $codebase->analyzer->hasMixedMemberName(strtolower($classlike_storage->name . '::'));
17601766

tests/UnusedCodeTest.php

+10
Original file line numberDiff line numberDiff line change
@@ -757,6 +757,16 @@ function getArg(string $method) : void {
757757
}
758758
}',
759759
],
760+
'ignoreJsonSerialize' => [
761+
'code' => '<?php
762+
class Foo implements JsonSerializable {
763+
public function jsonSerialize() : array {
764+
return [];
765+
}
766+
}
767+
768+
new Foo();',
769+
],
760770
'ignoreSerializerSerialize' => [
761771
'code' => '<?php
762772
class Foo implements Serializable {

0 commit comments

Comments
 (0)