-
-
Notifications
You must be signed in to change notification settings - Fork 154
Open
Description
Switched for a while to 89c6cbb to look what Node object was recognized previously. After adding
yield 'at the end of full name' => [
'<?php class F { public function foo() { while<> }}',
[],
];to KeywordCompletorTest::provideComplete() I see
$node = Microsoft\PhpParser\Node\Statement\ExpressionStatement
*Microsoft\PhpParser\Node*childNames = array(0)
parent = Microsoft\PhpParser\Node\Statement\WhileStatement
*Microsoft\PhpParser\Node*childNames = array(0)
parent = Microsoft\PhpParser\Node\Statement\CompoundStatementNode
whileToken = Microsoft\PhpParser\Token
openParen = Microsoft\PhpParser\MissingToken
expression = Microsoft\PhpParser\MissingToken
closeParen = Microsoft\PhpParser\MissingToken
colon = null
statements = Microsoft\PhpParser\Node\Statement\ExpressionStatement
endWhile = null
semicolon = null
expression = Microsoft\PhpParser\MissingToken
semicolon = Microsoft\PhpParser\MissingToken
$offset = Phpactor\TextDocument\ByteOffset
offset = 45
$source = Phpactor\TextDocument\StandardTextDocument
language = Phpactor\TextDocument\TextDocumentLanguage
text = "<?php class F { public function foo() { while }}"
uri = Phpactor\TextDocument\TextDocumentUri
dap> $node->__toString()
""
On the master branch I get the same direct and parent type, but different string representation:
dap> $node->__toString()
" }"
diff --git a/lib/Completion/Tests/Unit/Bridge/TolerantParser/NodeAtCursorProviderTest.php b/lib/Completion/Tests/Unit/Bridge/TolerantParser/NodeAtCursorProviderTest.php
index 1bf5ab3c..51b1a417 100644
--- a/lib/Completion/Tests/Unit/Bridge/TolerantParser/NodeAtCursorProviderTest.php
+++ b/lib/Completion/Tests/Unit/Bridge/TolerantParser/NodeAtCursorProviderTest.php
@@ -10,6 +10,8 @@ use Microsoft\PhpParser\Node\Expression\MemberAccessExpression;
use Microsoft\PhpParser\Node\Expression\Variable;
use Microsoft\PhpParser\Node\MethodDeclaration;
use Microsoft\PhpParser\Node\Statement\CompoundStatementNode;
+use Microsoft\PhpParser\Node\Statement\ExpressionStatement;
+use Microsoft\PhpParser\Node\Statement\WhileStatement;
use PHPUnit\Framework\Attributes\DataProvider;
use Phpactor\Completion\Bridge\TolerantParser\NodeAtCursorProvider;
use Phpactor\Completion\Tests\TestCase;
@@ -113,6 +115,17 @@ class NodeAtCursorProviderTest extends TestCase
self::assertInstanceOf(CaseStatementNode::class, $node);
}
];
+
+ yield [
+ <<<'PHP'
+ <?php class F { public function foo() { while<> }}
+ PHP,
+ function (Node $node): void {
+ self::assertInstanceOf(ExpressionStatement::class, $node);
+ self::assertInstanceOf(WhileStatement::class, $node->parent);
+ self::assertSame('', $node->__toString());
+ }
+ ];
}
public function testDoesNotCorruptOriginalAst(): voidThere was 1 failure:
1) Phpactor\Completion\Tests\Unit\Bridge\TolerantParser\NodeAtCursorProviderTest::testProvide with data set #6 ('<?php class F { public functi...e<> }}', Closure Object (...))
Failed asserting that two strings are identical.
--- Expected
+++ Actual
@@ @@
-''
+' }'
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels