Skip to content

Commit dca0447

Browse files
Copilotruudk
andauthored
Remove enum support from import method in favor of dedicated importEnum method (#1)
* Initial plan * Initial plan to extract enum handling from import method Co-authored-by: ruudk <104180+ruudk@users.noreply.github.com> * Extract enum handling to separate importEnum method Co-authored-by: ruudk <104180+ruudk@users.noreply.github.com> * Fix importEnum to call import method and remove enum support from import Co-authored-by: ruudk <104180+ruudk@users.noreply.github.com> * Inline alias variable in importEnum method Co-authored-by: ruudk <104180+ruudk@users.noreply.github.com> * Revert composer.lock to original state Co-authored-by: ruudk <104180+ruudk@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: ruudk <104180+ruudk@users.noreply.github.com>
1 parent cd583c3 commit dca0447

File tree

2 files changed

+30
-11
lines changed

2 files changed

+30
-11
lines changed

src/CodeGenerator.php

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -178,9 +178,17 @@ private function findAvailableAlias(Alias | FullyQualified | FunctionName | Name
178178
}
179179

180180
/**
181-
* Imports a class, function, or enum and returns the alias to use in the generated code
181+
* Imports an enum and returns the fully qualified reference to use in the generated code
182182
*/
183-
public function import(FullyQualified | FunctionName | string | UnitEnum $fqcnOrEnum) : string
183+
public function importEnum(UnitEnum $enum) : string
184+
{
185+
return sprintf('%s::%s', $this->import($enum::class), $enum->name);
186+
}
187+
188+
/**
189+
* Imports a class or function and returns the alias to use in the generated code
190+
*/
191+
public function import(FullyQualified | FunctionName | string $fqcnOrEnum) : string
184192
{
185193
if ($fqcnOrEnum instanceof FunctionName) {
186194
$alias = $this->findAvailableAlias($fqcnOrEnum, $fqcnOrEnum->shortName);
@@ -189,14 +197,6 @@ public function import(FullyQualified | FunctionName | string | UnitEnum $fqcnOr
189197
return $alias;
190198
}
191199

192-
if ($fqcnOrEnum instanceof UnitEnum) {
193-
$fqcn = new FullyQualified($fqcnOrEnum::class);
194-
$alias = $this->findAvailableAlias($fqcn, $fqcn->className->name);
195-
$this->imports[$alias] = $fqcn;
196-
197-
return sprintf('%s::%s', $alias, $fqcnOrEnum->name);
198-
}
199-
200200
$fqcn = FullyQualified::maybeFromString($fqcnOrEnum);
201201
$alias = $this->findAvailableAlias($fqcn, $fqcn->className->name);
202202
$this->imports[$alias] = $fqcn;

tests/CodeGeneratorTest.php

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ public function testImportFunction() : void
191191

192192
public function testImportEnum() : void
193193
{
194-
$reference = $this->generator->import(TestEnum::OPTION_ONE);
194+
$reference = $this->generator->importEnum(TestEnum::OPTION_ONE);
195195

196196
self::assertSame('TestEnum::OPTION_ONE', $reference);
197197

@@ -208,6 +208,25 @@ public function testImportEnum() : void
208208
);
209209
}
210210

211+
public function testImportEnumDirectly() : void
212+
{
213+
$reference = $this->generator->importEnum(TestEnum::OPTION_TWO);
214+
215+
self::assertSame('TestEnum::OPTION_TWO', $reference);
216+
217+
$this->assertDumpFile(
218+
<<<'PHP'
219+
<?php
220+
221+
declare(strict_types=1);
222+
223+
use Ruudk\CodeGenerator\Fixtures\TestEnum;
224+
225+
PHP,
226+
[],
227+
);
228+
}
229+
211230
public function testImportSameNamespace() : void
212231
{
213232
$this->generator = new CodeGenerator('App\\Models');

0 commit comments

Comments
 (0)