Skip to content

Prepare dependencies for deprecation of implicitly nullable parameter types in PHP 8.4 #5719

@sebastianbergmann

Description

@sebastianbergmann

@kocsismate put forward an RFC to deprecate implicitly nullable parameter types for PHP 8.4.

PHPUnit >= 8.5 as well as its dependencies need to be updated to not trigger the respective deprecation warning.

I have already updated PHPUnit's own code on the 8.5, 9.6, 10.5, 11.0, and main branches as well as the code of PHPUnit's dependencies for which I am also responsible.

I used this fork of @kocsismate's script to find implicitly nullable parameter types in PHPUnit's own code as well as its dependencies.

Below is a list of implicitly nullable parameter types in PHPUnit's dependencies, shown per PHPUnit version, that are not under my control.

@theseer and I discussed that I will create pull requests for phar-io/manifest and theseer/tokenizer that he will merge. New releases of these two packages without implicitly nullable parameter types should be tagged within the next few days.

@nikic Would you accept a pull request for nikic/php-parser version 4.18 that removes implicitly nullable parameter types? If so, I would prepare that.

PHPUnit 8.5 (8.5 branch)

  • vendor/phar-io/manifest/src/values/Manifest.php:78 (from phar-io/manifest version 2.0.3 by @theseer)
  • vendor/theseer/tokenizer/src/XMLSerializer.php:22 (from theseer/tokenizer version 1.2.2 by @theseer)

PHPUnit 9.6 (9.6 branch)

  • vendor/phar-io/manifest/src/values/Manifest.php:78 (from phar-io/manifest version 2.0.3 by @theseer)
  • vendor/theseer/tokenizer/src/XMLSerializer.php:22 (from theseer/tokenizer version 1.2.2 by @theseer)
  • vendor/nikic/php-parser/lib/PhpParser/ConstExprEvaluator.php:40 (from nikic/php-parser version 4.18.0 by @nikic)
  • vendor/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php:34 (from nikic/php-parser version 4.18.0 by @nikic)
  • vendor/nikic/php-parser/lib/PhpParser/Lexer.php:72 (from nikic/php-parser version 4.18.0 by @nikic)
  • vendor/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php:77 (from nikic/php-parser version 4.18.0 by @nikic)
  • vendor/nikic/php-parser/lib/PhpParser/NameContext.php:39 (from nikic/php-parser version 4.18.0 by @nikic)
  • vendor/nikic/php-parser/lib/PhpParser/Node/Arg.php:30 (from nikic/php-parser version 4.18.0 by @nikic)
  • vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php:21 (from nikic/php-parser version 4.18.0 by @nikic)
  • vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php:26 (from nikic/php-parser version 4.18.0 by @nikic)
  • vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Exit_.php:22 (from nikic/php-parser version 4.18.0 by @nikic)
  • vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php:21 (from nikic/php-parser version 4.18.0 by @nikic)
  • vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php:21 (from nikic/php-parser version 4.18.0 by @nikic)
  • vendor/nikic/php-parser/lib/PhpParser/Node/Name.php:165 (from nikic/php-parser version 4.18.0 by @nikic)
  • vendor/nikic/php-parser/lib/PhpParser/Node/Param.php:37 (from nikic/php-parser version 4.18.0 by @nikic)
  • vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Break_.php:18 (from nikic/php-parser version 4.18.0 by @nikic)
  • vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php:26 (from nikic/php-parser version 4.18.0 by @nikic)
  • vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Continue_.php:18 (from nikic/php-parser version 4.18.0 by @nikic)
  • vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Declare_.php:21 (from nikic/php-parser version 4.18.0 by @nikic)
  • vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/EnumCase.php:23 (from nikic/php-parser version 4.18.0 by @nikic)
  • vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Namespace_.php:25 (from nikic/php-parser version 4.18.0 by @nikic)
  • vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.php:21 (from nikic/php-parser version 4.18.0 by @nikic)
  • vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Return_.php:18 (from nikic/php-parser version 4.18.0 by @nikic)
  • vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/StaticVar.php:23 (from nikic/php-parser version 4.18.0 by @nikic)
  • vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php:24 (from nikic/php-parser version 4.18.0 by @nikic)
  • vendor/nikic/php-parser/lib/PhpParser/NodeDumper.php:42 (from nikic/php-parser version 4.18.0 by @nikic)
  • vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php:38 (from nikic/php-parser version 4.18.0 by @nikic)
  • vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php:167 (from nikic/php-parser version 4.18.0 by @nikic)
  • vendor/nikic/php-parser/lib/PhpParser/Parser.php:17 (from nikic/php-parser version 4.18.0 by @nikic)
  • vendor/nikic/php-parser/lib/PhpParser/Parser/Multiple.php:27 (from nikic/php-parser version 4.18.0 by @nikic)
  • vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php:158 (from nikic/php-parser version 4.18.0 by @nikic)
  • vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php:24 (from nikic/php-parser version 4.18.0 by @nikic)

PHPUnit 10.5 (10.5 branch)

  • vendor/phar-io/manifest/src/values/Manifest.php:78 (from phar-io/manifest version 2.0.3 by @theseer)
  • vendor/theseer/tokenizer/src/XMLSerializer.php:22 (from theseer/tokenizer version 1.2.2 by @theseer)

PHPUnit 11.0 (11.0 branch)

  • vendor/phar-io/manifest/src/values/Manifest.php:78 (from phar-io/manifest version 2.0.3 by @theseer)
  • vendor/theseer/tokenizer/src/XMLSerializer.php:22 (from theseer/tokenizer version 1.2.2 by @theseer)

PHPUnit 11.1 (main branch)

  • vendor/phar-io/manifest/src/values/Manifest.php:78 (from phar-io/manifest version 2.0.3 by @theseer)
  • vendor/theseer/tokenizer/src/XMLSerializer.php:22 (from theseer/tokenizer version 1.2.2 by @theseer)

Metadata

Metadata

Labels

type/change-in-php-requires-adaptationA change in PHP requires a change so that existing PHPUnit functionality continues to workversion/10Something affects PHPUnit 10version/11Something affects PHPUnit 11version/8Something affects PHPUnit 8version/9Something affects PHPUnit 9

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions