Skip to content

Commit

Permalink
Promoted properties in functions
Browse files Browse the repository at this point in the history
  • Loading branch information
brendt committed Mar 26, 2024
1 parent 1874c65 commit 5882ea0
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 40 deletions.
2 changes: 1 addition & 1 deletion src/Languages/Php/PhpLanguage.php
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ public function getPatterns(): array
new CatchTypePattern(),
new EnumBackedTypePattern(),
new GroupedTypePattern(),
//

// PROPERTIES
new ClassPropertyPattern(),
new NamedArgumentPattern(),
Expand Down
8 changes: 8 additions & 0 deletions src/Languages/Php/PhpTypeLanguage.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
namespace Tempest\Highlight\Languages\Php;

use Tempest\Highlight\Languages\Base\BaseLanguage;
use Tempest\Highlight\Languages\Php\Patterns\ClassPropertyPattern;
use Tempest\Highlight\Languages\Php\Patterns\KeywordPattern;
use Tempest\Highlight\Languages\Php\Patterns\TypeForVariablePattern;

final class PhpTypeLanguage extends BaseLanguage
Expand All @@ -13,7 +15,13 @@ public function getPatterns(): array
{
return [
...parent::getPatterns(),

new KeywordPattern('public'),
new KeywordPattern('private'),
new KeywordPattern('protected'),

new TypeForVariablePattern(),
new ClassPropertyPattern(),
];
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ class PhpFunctionParametersInjectionTest extends TestCase
public function test_highlight(): void
{
$input = <<<'TXT'
public function __construct(private Console $console) {}
public function __construct(public Console $console) {}
public function __construct(protected Console $console) {}
function ((Foo&Bar)|null $bar)) {}
function (Foo|false $bar)) {}
fn((Foo&Bar)|null $post, (Foo&Bar)|null $foo)) => $foo,
Expand Down Expand Up @@ -54,6 +57,9 @@ public function show(
TXT;

$expectedOutput = <<<'TXT'
<span class="hl-keyword">public</span> <span class="hl-keyword">function</span> <span class="hl-property">__construct</span>(<span class="hl-injection"><span class="hl-keyword">private</span> <span class="hl-type">Console</span> <span class="hl-property">$console</span></span>) {}
<span class="hl-keyword">public</span> <span class="hl-keyword">function</span> <span class="hl-property">__construct</span>(<span class="hl-injection"><span class="hl-keyword">public</span> <span class="hl-type">Console</span> <span class="hl-property">$console</span></span>) {}
<span class="hl-keyword">public</span> <span class="hl-keyword">function</span> <span class="hl-property">__construct</span>(<span class="hl-injection"><span class="hl-keyword">protected</span> <span class="hl-type">Console</span> <span class="hl-property">$console</span></span>) {}
<span class="hl-keyword">function</span> (<span class="hl-injection"><span class="hl-type">(Foo&amp;Bar)|null</span> $bar)</span>) {}
<span class="hl-keyword">function</span> (<span class="hl-injection"><span class="hl-type">Foo|false</span> $bar)</span>) {}
<span class="hl-keyword">fn</span>(<span class="hl-injection"><span class="hl-type">(Foo&amp;Bar)|null</span> $post, <span class="hl-type">(Foo&amp;Bar)|null</span> $foo)</span>) =&gt; <span class="hl-variable">$foo</span>,
Expand Down
40 changes: 1 addition & 39 deletions tests/targets/test.md
Original file line number Diff line number Diff line change
@@ -1,41 +1,3 @@
```php
function ((Foo&Bar)|null $bar) {}
function (Foo|false $bar) {}
fn((Foo&Bar)|null $post, (Foo&Bar)|null $foo) => $foo,
fn ((Foo&Bar)|null $post, (Foo&Bar)|null $foo) => $foo,
public function show(Post $post, Baz $baz): Response
public function show((Foo&Bar)|null $post, (Foo&Bar)|null $foo): Response
public function show(Foo|Bar $post, Boo $boo): Response
public function show(?Foo $post, Bar $bar): Response
public function show(Post $post, Baz $baz): Response
public function show((Foo&Bar)|null $post, (Foo&Bar)|null $foo): Response
{
public function show(Foo|Bar $post, Boo $boo): Response {
public function show(?Foo $post, Bar $bar): Response;
public function show(?Foo $post, Bar $bar);
public function show(?Foo $post, Bar $bar) {}
function(?Foo $post, Bar $bar) {}
function (?Foo $post, Bar $bar) {}

public function show(
?Foo $post,
Bar $bar
): Response;

public function show(
?Foo $post,
Bar $bar
);

public function show(
?Foo $post,
Bar $bar
) {}



fn (
?Foo $post,
Bar $bar
) => $bar,
public function __construct(private Console $console) {}
```

0 comments on commit 5882ea0

Please sign in to comment.