mirror of
https://github.com/danog/psalm.git
synced 2024-11-27 04:45:20 +01:00
Fix #184 - prevent classes without reflected classes from breaking everything
This commit is contained in:
parent
a2a86ef9b1
commit
32ff386b4a
@ -447,8 +447,18 @@ class MethodChecker extends FunctionLikeChecker
|
|||||||
$declaring_method_id = self::getDeclaringMethodId($method_id);
|
$declaring_method_id = self::getDeclaringMethodId($method_id);
|
||||||
$appearing_method_id = self::getAppearingMethodId($method_id);
|
$appearing_method_id = self::getAppearingMethodId($method_id);
|
||||||
|
|
||||||
list($declaring_method_class) = explode('::', (string)$declaring_method_id);
|
if ($declaring_method_id === null && $appearing_method_id === null) {
|
||||||
list($appearing_method_class) = explode('::', (string)$appearing_method_id);
|
list($method_class, $method_name) = explode('::', $method_id);
|
||||||
|
|
||||||
|
if ($method_name === '__construct') {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new \UnexpectedValueException('$declaring_method_id not expected to be null here');
|
||||||
|
}
|
||||||
|
|
||||||
|
list($declaring_method_class) = explode('::', $declaring_method_id);
|
||||||
|
list($appearing_method_class) = explode('::', $appearing_method_id);
|
||||||
|
|
||||||
// if the calling class is the same, we know the method exists, so it must be visible
|
// if the calling class is the same, we know the method exists, so it must be visible
|
||||||
if ($appearing_method_class === $calling_context) {
|
if ($appearing_method_class === $calling_context) {
|
||||||
|
@ -12,6 +12,10 @@ class MethodCallTest extends TestCase
|
|||||||
public function providerFileCheckerValidCodeParse()
|
public function providerFileCheckerValidCodeParse()
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
|
'notInCallMapTest' => [
|
||||||
|
'<?php
|
||||||
|
new DOMImplementation();'
|
||||||
|
],
|
||||||
'parentStaticCall' => [
|
'parentStaticCall' => [
|
||||||
'<?php
|
'<?php
|
||||||
class A {
|
class A {
|
||||||
|
Loading…
Reference in New Issue
Block a user