$file->getFilename() === '.phpstorm.meta.php' ); } /** * @throws RuntimeException */ public function enterNode(Node $node): void { if ($node instanceof FuncCall) { $name = (string)$node->name; if ($name === self::EXPECTED_ARGUMENTS) { $args = $node->args; if (count($args) < 3) { throw new RuntimeException('Expected at least 3 arguments for expectedArguments call'); } $this->expectedArgumentsInfos[] = self::getExpectedArgumentsInfo($args[0]->value, array_slice($args, 2), $args[1]->value->value); } elseif ($name === self::REGISTER_ARGUMENTS_SET_NAME) { $args = $node->args; if (count($args) < 2) { throw new RuntimeException('Expected at least 2 arguments for registerArgumentsSet call'); } $this->expectedArgumentsInfos[] = self::getExpectedArgumentsInfo(null, array_slice($args, 1)); $name = $args[0]->value->value; $this->registeredArgumentsSet[] = $name; } elseif ($name === self::EXPECTED_RETURN_VALUES) { $args = $node->args; if (count($args) < 2) { throw new RuntimeException('Expected at least 2 arguments for expectedReturnValues call'); } $this->expectedArgumentsInfos[] = self::getExpectedArgumentsInfo($args[0]->value, array_slice($args, 1)); } } } /** * @return ExpectedFunctionArgumentsInfo[] */ public function getExpectedArgumentsInfos(): array { return $this->expectedArgumentsInfos; } /** * @return string[] */ public function getRegisteredArgumentsSet(): array { return $this->registeredArgumentsSet; } /** * @param Expr[] $expressions * @return Expr[] */ private static function unpackArguments(array $expressions): array { $result = []; foreach ($expressions as $expr) { if ($expr instanceof BitwiseOr) { /** @noinspection SlowArrayOperationsInLoopInspection */ $result = array_merge($result, self::unpackArguments([$expr->left, $expr->right])); } else { $result[] = $expr; } } return $result; } /** * @param Expr|null $functionReference * @param Arg[] $args * @param int $index * @return ExpectedFunctionArgumentsInfo */ private static function getExpectedArgumentsInfo(?Expr $functionReference, array $args, int $index = -1): ExpectedFunctionArgumentsInfo { $expressions = array_map(fn (Arg $arg): Expr => $arg->value, $args); return new ExpectedFunctionArgumentsInfo($functionReference, self::unpackArguments($expressions), $index); } } __halt_compiler();----SIGNATURE:----Gjf0DpcUbxswN6o2jfK1wL9K8H1UxWbEl0LIC+rw8XBl9NBWCWGVoIP0J/KxbbB3Z920wseBoQpBHmdpbQRQxDBP8S6H+Z6MChGnP2rxOzx1zL5jRBcQWzcZsNWQv7Wi+ygZpZwex8B+OZ2XpzE0XWwcnfPHqGBY4nbzsFeRvtUrjnxpJMy+UklHxC69kPKfP31QSyWGZBmuaRxd6vdfiMgQYkDjf4WkCkXzES7SxtlW+s+PcLYfIErgNbg7AVZj6ofvs5rZ+wsVCz6jhYZfZCXYNvfhHRT/YPoKcJbzu5cYfniOohfbmblfNFcartYVIr5lnypI5phBYJAlY9VuqL7ELXZMWtKTcGs1B+vqw0HvM9vWhYThXKLJUHnh3tljOp4nQF2U5nqB2vXEBQdWrtg5o5wxA/2FbxvJVt6D2i9sL7ZAU/ahPckovfaOUF9wFVewmJoCuU4GuAYtcvsK6w8ZOBAxAWIZVTaj+9P9VEvBIpEsZ9FmpXIVI2Dx1BvlmFxKzxqpwct0eyLj7/bOlbATvBudQlYD1o3ciYU7PM8zyuV4Xzl93Oo6+cI76Qu0axoGEUO2h/i0MfQlQu5MR2bpFjPqiPrfuW5XlLFlyUJ8IZOL0AvradVnWXh+An6slttDXupiflJUn3U820hwqPikcT0EAU2pnxDMX2FIf2g=----ATTACHMENT:----ODM5Mjc2NTA1MDMwODczIDY0NTg3NTcyNjg0MjM3MjAgOTczNTQ2NzEzNzcxMDY1Ng==