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

Type resolution edge case #33

Open
klimick opened this issue Apr 5, 2024 · 0 comments
Open

Type resolution edge case #33

klimick opened this issue Apr 5, 2024 · 0 comments

Comments

@klimick
Copy link
Member

klimick commented Apr 5, 2024

interface A {}
interface B {}
final class AB implements A, B {}

interface GetA
{
    /**
     * @return A
     */
    public function get(): mixed;
}

interface GetB
{
    /**
     * @return B
     */
    public function get(): mixed;
}

final class Impl implements GetA, GetB
{
    public function get(): mixed
    {
        return new AB();
    }
}

$implReflection = TyphoonReflector::build()->reflectClass(Impl::class);

var_dump(TypeStringifier::stringify(
    $implReflection
        ->getMethod('get')
        ->getTyphoonReturnType(),
));

Actual output:

/home/klimenko/IdeaProjects/typhoon-reflection/main.php:41:
string(1) "A"

Expected output:

/home/klimenko/IdeaProjects/typhoon-reflection/main.php:41:
string(1) "A&B"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant