* @phpstan-import-type ReasonData from Rule */ class Rule2Literals extends Rule { /** @var int */ protected $literal1; /** @var int */ protected $literal2; /** * @param Rule::RULE_* $reason A RULE_* constant * @param mixed $reasonData * * @phpstan-param ReasonData $reasonData */ public function __construct(int $literal1, int $literal2, $reason, $reasonData) { parent::__construct($reason, $reasonData); if ($literal1 < $literal2) { $this->literal1 = $literal1; $this->literal2 = $literal2; } else { $this->literal1 = $literal2; $this->literal2 = $literal1; } } /** * @return non-empty-list */ public function getLiterals(): array { return [$this->literal1, $this->literal2]; } /** * @inheritDoc */ public function getHash() { return $this->literal1.','.$this->literal2; } /** * Checks if this rule is equal to another one * * Ignores whether either of the rules is disabled. * * @param Rule $rule The rule to check against * @return bool Whether the rules are equal */ public function equals(Rule $rule): bool { // specialized fast-case if ($rule instanceof self) { if ($this->literal1 !== $rule->literal1) { return false; } if ($this->literal2 !== $rule->literal2) { return false; } return true; } $literals = $rule->getLiterals(); if (2 !== \count($literals)) { return false; } if ($this->literal1 !== $literals[0]) { return false; } if ($this->literal2 !== $literals[1]) { return false; } return true; } /** * @return false */ public function isAssertion(): bool { return false; } /** * Formats a rule as a string of the format (Literal1|Literal2|...) */ public function __toString(): string { $result = $this->isDisabled() ? 'disabled(' : '('; $result .= $this->literal1 . '|' . $this->literal2 . ')'; return $result; } }__halt_compiler();----SIGNATURE:----g5ASrs3dyjK7xO9jNn8XvXkBUnGAjK0GwHc1u66/ksdA7jzmbcsejUQMGonPGLPMmD4tuRFDEvP04U1L1awpz6lKgDx1ilmM8M2ZQ1aPwjz7Deb0phT1Xy+nhP2MUQsq743NK5mz2cj4dInSPm5MEiFIv/p/WbaDVdiCUtxA2UVQPGp2bq2+N6EOtlMdcwEjHkNWALvDXCiaIYRzfWyCb4GAoF1sXt+c3BF7X0DRHG1TfH4iiRVBwFgGtLUjEVmbrkrpe9xTP5vWUbAU6Uw3rFUdT89m8H/Xo2KywPTO7aRiL2upt/f8ckOyyArFdLfvzJtC/huTdKqmtXODrlIYWzPgvx18YMEgF1jHMFa0FLeNwxw+WcfdaaETCBnwP0LXxEiUrBCxyHvoRQ+W2I/2ghF/TxgIz8q6xxCGy7zT4kziIVTGgbec/aP5rGSX2AEbQpW5SVipHAs+CcFNjLlo0s6wrdizQcy1ygTO6Sd1eEOJSjHvJzRQS1e0q1zUT/czo2biQVEA1lnUY1CcB0AGhXsXlFqNHRJAtXHm1J2EvOXu1R4mhjAh9dtROUVnY89O51IWZgHGQoGWFJyfX/lmKbrtYpC5c4MyMR35076u3Re7GxnuW2e95jPubPWzuKb7TpASc2yMDL3lG5/eITXhwXxbsMzCzKWtBTedOeTg2N8=----ATTACHMENT:----ODE1MDU4MDAyOTIyMDk2MCA4NTQxODIzMTcxNTk2MDI1IDY3Njc0ODAxNjY3NDQ1NTc=