Type %s is redundant with type %s
Description
In a DNF (Disjunctive Normal Form) type, two intersection groups can look textually different while describing the exact same combination of types once names are resolved. Here, B is only a local alias for A (introduced by use A as B;), so X&A and X&B are, in fact, the very same intersection written twice.
PHP resolves use aliases at compile time, notices that the second group adds nothing over the first, and reports it as redundant.
Example
<?php
interface X {}
use A as B;
function foo(): (X&A)|(X&B) {}
?>
Literal Examples
- Type X&A is redundant with type X&A
Alternatives
- Remove the duplicated intersection group.
- Use the class’s real name consistently, instead of mixing the name and its alias.
Related error messages
Changed Behavior
This error may appear following an evolution in behavior, in previous versions. See