mirror of
https://github.com/danog/psalm.git
synced 2024-11-30 04:39:00 +01:00
Partial revert "Fix auto completion by partial property or method"
Filtering is not necessary. Clients using LSP should filter the results themselves.
That's what it says in the documentation.
This reverts commit d6faff2844
.
This commit is contained in:
parent
c0e8d32561
commit
10402c426b
@ -2039,6 +2039,8 @@ final class Codebase
|
||||
/**
|
||||
* @param list<CompletionItem> $items
|
||||
* @return list<CompletionItem>
|
||||
* @deprecated to be removed in Psalm 6
|
||||
* @api fix deprecation problem "PossiblyUnusedMethod: Cannot find any calls to method"
|
||||
*/
|
||||
public function filterCompletionItemsByBeginLiteralPart(array $items, string $literal_part): array
|
||||
{
|
||||
|
@ -297,7 +297,6 @@ final class TextDocument
|
||||
|
||||
try {
|
||||
$completion_data = $this->codebase->getCompletionDataAtPosition($file_path, $position);
|
||||
$literal_part = $this->codebase->getBeginedLiteralPart($file_path, $position);
|
||||
if ($completion_data) {
|
||||
[$recent_type, $gap, $offset] = $completion_data;
|
||||
|
||||
@ -306,8 +305,6 @@ final class TextDocument
|
||||
->textDocument->completion->completionItem->snippetSupport ?? false;
|
||||
$completion_items =
|
||||
$this->codebase->getCompletionItemsForClassishThing($recent_type, $gap, $snippetSupport);
|
||||
$completion_items =
|
||||
$this->codebase->filterCompletionItemsByBeginLiteralPart($completion_items, $literal_part);
|
||||
} elseif ($gap === '[') {
|
||||
$completion_items = $this->codebase->getCompletionItemsForArrayKeys($recent_type);
|
||||
} else {
|
||||
|
@ -15,7 +15,6 @@ use Psalm\Tests\TestCase;
|
||||
use Psalm\Tests\TestConfig;
|
||||
use Psalm\Type;
|
||||
|
||||
use function array_map;
|
||||
use function count;
|
||||
|
||||
class CompletionTest extends TestCase
|
||||
@ -726,201 +725,6 @@ class CompletionTest extends TestCase
|
||||
$this->assertSame('baz()', $completion_items[1]->insertText);
|
||||
}
|
||||
|
||||
public function testObjectPropertyOnAppendToEnd(): void
|
||||
{
|
||||
$codebase = $this->codebase;
|
||||
$config = $codebase->config;
|
||||
$config->throw_exception = false;
|
||||
|
||||
$this->addFile(
|
||||
'somefile.php',
|
||||
'<?php
|
||||
namespace B;
|
||||
|
||||
class A {
|
||||
public $aProp = 123;
|
||||
public $bProp = 234;
|
||||
|
||||
public function bar() {
|
||||
$this->aPr
|
||||
}
|
||||
}',
|
||||
);
|
||||
|
||||
$codebase->file_provider->openFile('somefile.php');
|
||||
$codebase->scanFiles();
|
||||
|
||||
$this->analyzeFile('somefile.php', new Context());
|
||||
|
||||
$position = new Position(8, 34);
|
||||
$completion_data = $codebase->getCompletionDataAtPosition('somefile.php', $position);
|
||||
$literal_part = $codebase->getBeginedLiteralPart('somefile.php', $position);
|
||||
|
||||
$this->assertSame(['B\A&static', '->', 223], $completion_data);
|
||||
|
||||
$completion_items = $codebase->getCompletionItemsForClassishThing($completion_data[0], $completion_data[1], true);
|
||||
$completion_items = $codebase->filterCompletionItemsByBeginLiteralPart($completion_items, $literal_part);
|
||||
$completion_item_texts = array_map(fn($item) => $item->insertText, $completion_items);
|
||||
|
||||
$this->assertSame(['aProp'], $completion_item_texts);
|
||||
}
|
||||
|
||||
public function testObjectPropertyOnReplaceEndPart(): void
|
||||
{
|
||||
$codebase = $this->codebase;
|
||||
$config = $codebase->config;
|
||||
$config->throw_exception = false;
|
||||
|
||||
$this->addFile(
|
||||
'somefile.php',
|
||||
'<?php
|
||||
namespace B;
|
||||
|
||||
class A {
|
||||
public $aProp1 = 123;
|
||||
public $aProp2 = 234;
|
||||
|
||||
public function bar() {
|
||||
$this->aProp2;
|
||||
}
|
||||
}',
|
||||
);
|
||||
|
||||
$codebase->file_provider->openFile('somefile.php');
|
||||
$codebase->scanFiles();
|
||||
|
||||
$this->analyzeFile('somefile.php', new Context());
|
||||
|
||||
$position = new Position(8, 34);
|
||||
$completion_data = $codebase->getCompletionDataAtPosition('somefile.php', $position);
|
||||
$literal_part = $codebase->getBeginedLiteralPart('somefile.php', $position);
|
||||
|
||||
$this->assertSame(['B\A&static', '->', 225], $completion_data);
|
||||
|
||||
$completion_items = $codebase->getCompletionItemsForClassishThing($completion_data[0], $completion_data[1], true);
|
||||
$completion_items = $codebase->filterCompletionItemsByBeginLiteralPart($completion_items, $literal_part);
|
||||
$completion_item_texts = array_map(fn($item) => $item->insertText, $completion_items);
|
||||
|
||||
$this->assertSame(['aProp1', 'aProp2'], $completion_item_texts);
|
||||
}
|
||||
|
||||
public function testSelfPropertyOnAppendToEnd(): void
|
||||
{
|
||||
$codebase = $this->codebase;
|
||||
$config = $codebase->config;
|
||||
$config->throw_exception = false;
|
||||
|
||||
$this->addFile(
|
||||
'somefile.php',
|
||||
'<?php
|
||||
namespace B;
|
||||
|
||||
class A {
|
||||
public static $aProp = 123;
|
||||
public static $bProp = 234;
|
||||
|
||||
public function bar() {
|
||||
self::$aPr
|
||||
}
|
||||
}',
|
||||
);
|
||||
|
||||
$codebase->file_provider->openFile('somefile.php');
|
||||
$codebase->scanFiles();
|
||||
|
||||
$this->analyzeFile('somefile.php', new Context());
|
||||
|
||||
$position = new Position(8, 34);
|
||||
$completion_data = $codebase->getCompletionDataAtPosition('somefile.php', $position);
|
||||
$literal_part = $codebase->getBeginedLiteralPart('somefile.php', $position);
|
||||
|
||||
$this->assertSame(['B\A', '::', 237], $completion_data);
|
||||
|
||||
$completion_items = $codebase->getCompletionItemsForClassishThing($completion_data[0], $completion_data[1], true);
|
||||
$completion_items = $codebase->filterCompletionItemsByBeginLiteralPart($completion_items, $literal_part);
|
||||
$completion_item_texts = array_map(fn($item) => $item->insertText, $completion_items);
|
||||
|
||||
$this->assertSame(['$aProp'], $completion_item_texts);
|
||||
}
|
||||
|
||||
public function testStaticPropertyOnAppendToEnd(): void
|
||||
{
|
||||
$codebase = $this->codebase;
|
||||
$config = $codebase->config;
|
||||
$config->throw_exception = false;
|
||||
|
||||
$this->addFile(
|
||||
'somefile.php',
|
||||
'<?php
|
||||
namespace B;
|
||||
|
||||
class A {
|
||||
public static $aProp = 123;
|
||||
public static $bProp = 234;
|
||||
|
||||
public function bar() {
|
||||
static::$aPr
|
||||
}
|
||||
}',
|
||||
);
|
||||
|
||||
$codebase->file_provider->openFile('somefile.php');
|
||||
$codebase->scanFiles();
|
||||
|
||||
$this->analyzeFile('somefile.php', new Context());
|
||||
|
||||
$position = new Position(8, 36);
|
||||
$completion_data = $codebase->getCompletionDataAtPosition('somefile.php', $position);
|
||||
$literal_part = $codebase->getBeginedLiteralPart('somefile.php', $position);
|
||||
|
||||
$this->assertSame(['B\A', '::', 239], $completion_data);
|
||||
|
||||
$completion_items = $codebase->getCompletionItemsForClassishThing($completion_data[0], $completion_data[1], true);
|
||||
$completion_items = $codebase->filterCompletionItemsByBeginLiteralPart($completion_items, $literal_part);
|
||||
$completion_item_texts = array_map(fn($item) => $item->insertText, $completion_items);
|
||||
|
||||
$this->assertSame(['$aProp'], $completion_item_texts);
|
||||
}
|
||||
|
||||
public function testStaticPropertyOnReplaceEndPart(): void
|
||||
{
|
||||
$codebase = $this->codebase;
|
||||
$config = $codebase->config;
|
||||
$config->throw_exception = false;
|
||||
|
||||
$this->addFile(
|
||||
'somefile.php',
|
||||
'<?php
|
||||
namespace B;
|
||||
|
||||
class A {
|
||||
public static $aProp1 = 123;
|
||||
public static $aProp2 = 234;
|
||||
|
||||
public function bar() {
|
||||
self::$aProp2;
|
||||
}
|
||||
}',
|
||||
);
|
||||
|
||||
$codebase->file_provider->openFile('somefile.php');
|
||||
$codebase->scanFiles();
|
||||
|
||||
$this->analyzeFile('somefile.php', new Context());
|
||||
|
||||
$position = new Position(8, 34);
|
||||
$completion_data = $codebase->getCompletionDataAtPosition('somefile.php', $position);
|
||||
$literal_part = $codebase->getBeginedLiteralPart('somefile.php', $position);
|
||||
|
||||
$this->assertSame(['B\A', '::', 239], $completion_data);
|
||||
|
||||
$completion_items = $codebase->getCompletionItemsForClassishThing($completion_data[0], $completion_data[1], true);
|
||||
$completion_items = $codebase->filterCompletionItemsByBeginLiteralPart($completion_items, $literal_part);
|
||||
$completion_item_texts = array_map(fn($item) => $item->insertText, $completion_items);
|
||||
|
||||
$this->assertSame(['$aProp1', '$aProp2'], $completion_item_texts);
|
||||
}
|
||||
|
||||
public function testCompletionOnNewExceptionWithoutNamespace(): void
|
||||
{
|
||||
$codebase = $this->codebase;
|
||||
|
Loading…
Reference in New Issue
Block a user