mirror of
https://github.com/danog/psalm.git
synced 2024-11-26 20:34:47 +01:00
Improve internal typing for sabre/event promises
This commit is contained in:
parent
d9945a0ced
commit
b052e211a0
@ -23,6 +23,10 @@
|
||||
<class name="LogicException"/>
|
||||
</ignoreExceptions>
|
||||
|
||||
<stubs>
|
||||
<file name="src/Psalm/Internal/Stubs/SabreEvent.php"/>
|
||||
</stubs>
|
||||
|
||||
<issueHandlers>
|
||||
<MisplacedRequiredParam errorLevel="suppress"/>
|
||||
<PossiblyNullOperand errorLevel="suppress"/>
|
||||
|
@ -173,7 +173,7 @@ class LanguageServer extends AdvancedJsonRpc\Dispatcher
|
||||
* @param int|null $processId The process Id of the parent process that started the server.
|
||||
* Is null if the process has not been started by another process. If the parent process is
|
||||
* not alive then the server should exit (see exit notification) its process.
|
||||
* @return Promise <InitializeResult>
|
||||
* @return Promise<InitializeResult>
|
||||
* @psalm-suppress PossiblyUnusedMethod
|
||||
*/
|
||||
public function initialize(
|
||||
|
@ -171,7 +171,7 @@ class TextDocument
|
||||
*
|
||||
* @param TextDocumentIdentifier $textDocument The text document
|
||||
* @param Position $position The position inside the text document
|
||||
* @return Promise <Location|Location[]>
|
||||
* @return Promise<Location|Hover>
|
||||
*/
|
||||
public function definition(TextDocumentIdentifier $textDocument, Position $position): Promise
|
||||
{
|
||||
@ -223,7 +223,7 @@ class TextDocument
|
||||
*
|
||||
* @param TextDocumentIdentifier $textDocument The text document
|
||||
* @param Position $position The position inside the text document
|
||||
* @return Promise <Hover>
|
||||
* @return Promise<Hover>
|
||||
*/
|
||||
public function hover(TextDocumentIdentifier $textDocument, Position $position): Promise
|
||||
{
|
||||
@ -275,7 +275,7 @@ class TextDocument
|
||||
*
|
||||
* @param TextDocumentIdentifier The text document
|
||||
* @param Position $position The position
|
||||
* @return Promise <CompletionItem[]|CompletionList>
|
||||
* @return Promise<CompletionItem[]|CompletionList>
|
||||
*/
|
||||
public function completion(TextDocumentIdentifier $textDocument, Position $position): Promise
|
||||
{
|
||||
|
20
src/Psalm/Internal/Stubs/SabreEvent.php
Normal file
20
src/Psalm/Internal/Stubs/SabreEvent.php
Normal file
@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
namespace Sabre\Event;
|
||||
|
||||
/**
|
||||
* @template TReturn
|
||||
* @param callable():\Generator<mixed, mixed, mixed, TReturn> $gen
|
||||
* @return Promise<TReturn>
|
||||
*/
|
||||
function coroutine(callable $gen) : Promise {}
|
||||
|
||||
/**
|
||||
* @template TReturn
|
||||
*/
|
||||
class Promise {
|
||||
/**
|
||||
* @return TReturn
|
||||
*/
|
||||
function wait() {}
|
||||
}
|
@ -57,9 +57,6 @@ class TNamedObject extends Atomic
|
||||
*/
|
||||
public function toNamespacedString($namespace, array $aliased_classes, $this_class, $use_phpdoc_format)
|
||||
{
|
||||
$class_parts = explode('\\', $this->value);
|
||||
$class_name = array_pop($class_parts);
|
||||
|
||||
$intersection_types = $this->getNamespacedIntersectionTypes(
|
||||
$namespace,
|
||||
$aliased_classes,
|
||||
@ -71,8 +68,12 @@ class TNamedObject extends Atomic
|
||||
return 'self' . $intersection_types;
|
||||
}
|
||||
|
||||
if ($namespace && preg_match('/^' . preg_quote($namespace) . '\\\\' . $class_name . '$/i', $this->value)) {
|
||||
return $class_name . $intersection_types;
|
||||
if ($namespace && stripos($this->value, $namespace . '\\') === 0) {
|
||||
return preg_replace(
|
||||
'/^' . preg_quote($namespace . '\\') . '/i',
|
||||
'',
|
||||
$this->value
|
||||
) . $intersection_types;
|
||||
}
|
||||
|
||||
if (!$namespace && stripos($this->value, '\\') === false) {
|
||||
|
Loading…
Reference in New Issue
Block a user