Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Promoted properties are losing nullable flag #183

Open
Grundik opened this issue May 16, 2023 · 1 comment
Open

Promoted properties are losing nullable flag #183

Grundik opened this issue May 16, 2023 · 1 comment
Labels
Bug Something isn't working

Comments

@Grundik
Copy link

Grundik commented May 16, 2023

Bug Report

Q A
Version(s) 4.7.1 (all versions affected since 4.5.0)

Summary

Laminas\Code\Generator\PromotedParameterGenerator#fromParameterGeneratorWithVisibility are losing nullable flag of such parameter.

Current behavior

class Test {
    public function __construct(
        protected ?int $value
    ) {
    }
}

$parameterReflection = new ParameterReflection([Test::class, '__construct'], 0);
$parameterGenerator = PromotedParameterGenerator::fromReflection($parameterReflection);
echo $parameterGenerator->generate();

will echo protected int $value, nullable flag is lost.

How to reproduce

Use snippet above.

Expected behavior

Code above should echo protected ?int $value.

Additional information

https://github.com/laminas/laminas-code/blob/169123b3ede20a9193480c53de2a8194f8c073ec/src/Generator/PromotedParameterGenerator.php#LL73C51-L73C51

    public static function fromParameterGeneratorWithVisibility(ParameterGenerator $generator, string $visibility): self
    {
        $name = $generator->getName();
        $type = $generator->getType(); // <----- this would return "bare" type, without modifiers

Unfortunately, there are no way to get nullable flag from TypeGenerator at all for now. Unsurprisingly it get lost on the way.

@Grundik Grundik added the Bug Something isn't working label May 16, 2023
Grundik added a commit to Grundik/laminas-code that referenced this issue May 16, 2023
Grundik added a commit to Grundik/laminas-code that referenced this issue May 16, 2023
Signed-off-by: Grundik <grundik@ololo.cc>
Grundik added a commit to Grundik/laminas-code that referenced this issue May 16, 2023
Signed-off-by: Grundik <grundik@ololo.cc>
@Grundik
Copy link
Author

Grundik commented May 16, 2023

Possible fix: #184

Grundik added a commit to Grundik/laminas-code that referenced this issue May 16, 2023
Signed-off-by: Grundik <grundik@ololo.cc>
Grundik added a commit to Grundik/laminas-code that referenced this issue May 16, 2023
Signed-off-by: Grundik <grundik@ololo.cc>
Grundik added a commit to Grundik/laminas-code that referenced this issue May 16, 2023
Signed-off-by: Grundik <grundik@ololo.cc>
Grundik added a commit to Grundik/laminas-code that referenced this issue May 16, 2023
Signed-off-by: Grundik <grundik@ololo.cc>
Grundik added a commit to Grundik/laminas-code that referenced this issue May 16, 2023
Signed-off-by: Grundik <grundik@ololo.cc>
Grundik added a commit to Grundik/laminas-code that referenced this issue May 16, 2023
Signed-off-by: Grundik <grundik@ololo.cc>
Grundik added a commit to Grundik/laminas-code that referenced this issue May 16, 2023
Signed-off-by: Grundik <grundik@ololo.cc>
Grundik added a commit to Grundik/laminas-code that referenced this issue May 16, 2023
Signed-off-by: Grundik <grundik@ololo.cc>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant