1
0
mirror of https://github.com/danog/psalm.git synced 2024-11-27 04:45:20 +01:00

Fix #714 - fix trait class constants

This commit is contained in:
Matthew Brown 2018-05-08 22:32:57 -04:00
parent 8f9b4098bc
commit 77d4629896
3 changed files with 35 additions and 9 deletions

View File

@ -242,6 +242,7 @@ abstract class ClassLikeChecker extends SourceChecker implements StatementsSourc
$interface_exists = $codebase->interfaceExists($fq_class_name); $interface_exists = $codebase->interfaceExists($fq_class_name);
if (!$class_exists && !$interface_exists) { if (!$class_exists && !$interface_exists) {
if (!$codebase->classlikes->traitExists($fq_class_name)) {
if (IssueBuffer::accepts( if (IssueBuffer::accepts(
new UndefinedClass( new UndefinedClass(
'Class or interface ' . $fq_class_name . ' does not exist', 'Class or interface ' . $fq_class_name . ' does not exist',
@ -252,6 +253,7 @@ abstract class ClassLikeChecker extends SourceChecker implements StatementsSourc
)) { )) {
return false; return false;
} }
}
return null; return null;
} }

View File

@ -508,6 +508,16 @@ class ClassLikes
return $storage->parent_interfaces; return $storage->parent_interfaces;
} }
/**
* @param string $fq_trait_name
*
* @return bool
*/
public function traitExists($fq_trait_name)
{
return $this->hasFullyQualifiedTraitName($fq_trait_name);
}
/** /**
* Determine whether or not a class has the correct casing * Determine whether or not a class has the correct casing
* *

View File

@ -522,6 +522,20 @@ class TraitTest extends TestCase
} }
}', }',
], ],
'traitClassConst' => [
'<?php
trait A {
public function foo(): string {
return B::class;
}
}
trait B {}
class C {
use A;
}'
],
]; ];
} }