From 561f041784ebea0d106975b769aa16500ed72f06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Kucha=C5=99?= <honza.kuchar@grifart.cz> Date: Mon, 20 Aug 2018 16:46:01 +0200 Subject: [PATCH] support for any pseudotype --- src/SignatureAssertionUtil.php | 5 +++-- tests/fn.assertSignature.any-parameter.phpt | 14 ++++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 tests/fn.assertSignature.any-parameter.phpt diff --git a/src/SignatureAssertionUtil.php b/src/SignatureAssertionUtil.php index 9efb028..96bbf79 100644 --- a/src/SignatureAssertionUtil.php +++ b/src/SignatureAssertionUtil.php @@ -34,11 +34,12 @@ final class SignatureAssertionUtil $i = 0; /** @var string[] $parameters */ foreach ($parameters AS $parameter) { - assert(is_string($parameter)); - $parameterReflection = $reflection->getParameters()[$i++]; assert($parameterReflection instanceof \ReflectionParameter); + if ($parameter === 'any') continue; + assert(is_string($parameter)); + self::checkFunctionParameter( $reflection, $parameterReflection, diff --git a/tests/fn.assertSignature.any-parameter.phpt b/tests/fn.assertSignature.any-parameter.phpt new file mode 100644 index 0000000..b69f63c --- /dev/null +++ b/tests/fn.assertSignature.any-parameter.phpt @@ -0,0 +1,14 @@ +<?php declare(strict_types=1); +namespace MyTestNamespace; +require __DIR__ . '/bootstrap.php'; +require __DIR__ . '/testClasses.php'; +use function Grifart\AssertFunction\{assertSignature, nullable, params}; +use Grifart\AssertFunction\FunctionSignatureAssertionError; +use Tester\Assert; +$place = 'tests/' . basename(__FILE__) . ':' . (__LINE__ +2) . ' '; + +$fn = function(string $p1, $p2) {}; + +assertSignature($fn, params('any', 'mixed'), 'mixed'); + +Assert::true(true); // if assertion do not fail, we are OK -- GitLab