Skip to content

chore(deps): update composer dev tooling dependencies - #249

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/composer-dev-tooling
Open

renovate[bot] wants to merge 1 commit into
mainfrom
renovate/composer-dev-tooling

Conversation

@renovate

@renovate renovate Bot commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Confidence
ergebnis/phpstan-rules ^2.14.0 → ^2.14.2 age confidence
phpstan/phpstan ^2.3.1 → ^2.3.3 age confidence
phpstan/phpstan-phpunit ^2.0.21 → ^2.1.1 age confidence
phpstan/phpstan-strict-rules ^2.0.12 → ^2.1.0 age confidence
phpunit/phpunit (source) ^13.3.6 → ^13.4.5 age confidence
rector/rector (source) ^2.7.0 → ^2.8.1 age confidence

Release Notes

ergebnis/phpstan-rules

v2.14.2

Compare Source

v2.14.1

Compare Source

For a full diff see [2.14.0...2.14.1][2.14.0...2.14.1].

Fixed
  • Adjusted Methods\InvokeParentHookMethodRule to detect the invocation of a parent hook method in a finally block ([#​1139]), by [@​localheinz]
phpstan/phpstan-phar-composer-source (phpstan/phpstan)

v2.3.3

Compare Source

v2.3.2

Compare Source

phpstan/phpstan-phpunit

v2.1.1

Compare Source

  • 8d16b84 - AssertEmptyIsDiscouragedRule is auto-fixable (#​342)
  • b73700a - Make AssertSameWithCountRule auto-fixable (#​259)
  • ac3237e - Skip named and unpack arguments when autofixing

v2.1.0

Compare Source

  • a31e9de - Merge remote-tracking branch 'origin/2.0.x' into 2.1.x
  • 626549b - Merge pull request #​336 from phpstan/renovate/github-actions
  • ca0a5ae - Update github-actions
  • c38f716 - Merge 2.0.x into 2.1.x
  • 0d17121 - AssertEmptyIsDiscouragedRule: use unique error identifier
  • 414a487 - feat: Discourage assert(Not)Empty if "empty" usage is disallowed (#​325)
  • 3320043 - Merge remote-tracking branch 'origin/2.0.x' into 2.1.x
  • ba569da - Name the node types DataProviderDataRule wants
  • e98eb3d - Require PHPStan 2.3.0
  • 33212d9 - Open 2.1.x-dev
phpstan/phpstan-strict-rules

v2.1.0

Compare Source

sebastianbergmann/phpunit (phpunit/phpunit)

v13.4.5: PHPUnit 13.4.5

Compare Source

Fixed
  • The static analysis cache directory that is automatically created in the operating system's path used for temporary files when no cache directory is configured is not used when the POSIX extension is not loaded

Learn how to install or update PHPUnit 13.4 in the documentation.

Keep up to date with PHPUnit:

v13.4.4: PHPUnit 13.4.4

Compare Source

Fixed
  • The TeamCity logger writes testSuiteFinished twice for a test class when one of its before-first-test methods errors or fails
  • The TestDox output shows a less important outcome of a test that has more than one outcome, for instance the failure in tearDown() of a test that errored
  • When the test run is interrupted by a signal while a test is run in process isolation, the result of the test is discarded and the test is counted as passed, and the TestDox output cannot be printed
  • When no static analysis cache directory is configured, the cache directory that is automatically created in the operating system's path used for temporary files is also used when it was created by another user or can be written to by other users
  • The directory in the operating system's path used for temporary files in which the temporary files for collecting code coverage for a PHPT test are created has a fixed name, and is also used when it was created by another user, who can then replace the code of the PHPT test before it is executed

Learn how to install or update PHPUnit 13.4 in the documentation.

Keep up to date with PHPUnit:

v13.4.3: PHPUnit 13.4.3

Compare Source

Fixed
  • The dependencies of a test that are listed after a dependency on a test that does not return a value, or after a dependency on a larger test, were not checked, so the test was run instead of being skipped when one of these dependencies had not passed
  • Tests could not be run in process isolation when the namespace of the test class begins with a name that the code of the child process imports, for instance CodeCoverage or Facade
  • A test that is run in process isolation aborts the test run when its data set or a value returned by a test it depends on cannot be serialized, for instance because it is a closure
  • When a before-first-test method or an after-last-test method errors or fails, the remaining methods of the same kind are still called, and each of them that does not error or fail itself is reported with the exception of the earlier method
  • When a hook method of a test, for instance a #[Before] method, skips the test, the remaining hook methods of the same kind are still called, so the test is reported as errored instead of skipped when one of them errors
  • An error or failure in a before-first-test method or an after-last-test method that is called again in the child process of a test that is run in process isolation is reported twice, once for the test class and once for the test
  • When a before-first-test method errors, the progress output shows one E for the test class instead of one for each of its tests, only one of its tests is counted as run, and the test that is run next is shown as an error
  • When a before-first-test method fails, the progress output shows nothing for the tests of the test class and only one of them is counted as run
  • The Open Test Reporting XML logfile has no start for a test that errors before it is prepared, for instance because it depends on a test that does not exist, and no end for the test that is run after a test that is skipped because a test it depends on did not pass or because one of its
    requirements is not met
  • The Open Test Reporting XML logfile has no entry for a test that is marked as incomplete before it is prepared, for instance in setUp(), and reports the test that is run after it as aborted with the message of the incomplete test
  • The Open Test Reporting XML logfile has no end for the test that is run after a test whose preparation errors, for instance because setUp() raises an exception or the global state cannot be backed up
  • The Open Test Reporting XML logfile reports a test that has more than one outcome, for instance because tearDown() fails after the test errored, with its last outcome instead of its most severe one, and with more than one end when the preparation of the test errored
  • The Open Test Reporting XML logfile is not well-formed when a test name, a message, the output of a test, or the string representation of an exception contains ]]>, bytes that are not valid UTF-8, or characters that are not allowed in XML, for instance the escape character of an ANSI
    escape sequence
  • The Open Test Reporting XML logfile reports an issue that is triggered before a test is prepared, for instance in setUp(), with an empty ID before the start of the test

Learn how to install or update PHPUnit 13.4 in the documentation.

Keep up to date with PHPUnit:

v13.4.2: PHPUnit 13.4.2

Compare Source

Fixed
  • #​7033: Compact printer is created although an extension replaces the progress output
  • #​7035: Sorting tests by duration recomputes the duration of a test suite for every comparison
  • Sorting tests by size recomputes the size of a test suite for every comparison
  • expectUserDeprecationMessage() and expectUserDeprecationMessageMatches() did not see the deprecations triggered by an attempt of a retried test and saw those of the previously run test instead
  • The status of a test whose mock object raises an exception in its destructor is success although the test is reported as errored, so #[Retry] does not retry the test, --repeat does not skip the remaining repetitions, tearDown() sees the wrong status, and code coverage records the test as successful
  • Named arguments passed to with() were matched by position instead of by name, so an expectation such as ->with(b: 7) compared the expected value with the first parameter of the method and the parameter named $b was not checked
  • String keys of the parameter sets passed to withParameterSetsInOrder(), withParameterSetsInAnyOrder(), and withParameterSetsInPartialOrder() were ignored, so a parameter set such as ['b' => 7] compared the expected value with the first parameter of the method and the parameter
    named $b was not checked

Learn how to install or update PHPUnit 13.4 in the documentation.

Keep up to date with PHPUnit:

v13.4.1: PHPUnit 13.4.1

Compare Source

Changed
  • The Software Bill of Materials (SBOM) embedded in the PHAR now uses CycloneDX 1.7 and provides the NTIA minimum elements as well as the data fields that BSI TR-03183-2 (version 2.1.0) requires for logical and identified components, including component creators, original, distribution and effective licences, source code URIs, and the PHP runtime and its extensions as external components
Fixed
  • #​7029: TestSuite::runTests() doubles garbage collector time when zend.exception_ignore_args is off
  • setUpBeforeClass() and tearDownAfterClass() were run twice for a test class that is the only test class in a test suite of the XML configuration file that has the name of that test class
  • Tests could not be run in process isolation when the path of the bootstrap script, the test file, or the directory for temporary files contained a single quote
  • Arguments in the --ARGS-- section of a PHPT test that start with - were interpreted by PHP instead of being passed to the test when the test also has a --STDIN-- section
  • Recording the tests that passed in a child process copied all tests that had passed so far, which made running many tests in process isolation increasingly slow

Learn how to install or update PHPUnit 13.4 in the documentation.

Keep up to date with PHPUnit:

v13.4.0: PHPUnit 13.4.0

Compare Source

Added
  • #​6585: executionOrder attribute values and --order-by token lists that spell the order before defects, for example duration-ascending,defects
  • #​6585: pipeline() on the TestSuite\Sorted event for inspecting which reordering stages were applied
  • #​6686: Constraint::negatedToString() and Constraint::negatedFailureDescription() for authoring the description of a constraint that is wrapped in LogicalNot
  • #​6863: Cache which tests a test file contains
  • #​6957: Allow ordering tests by the time their source files were last modified
  • #​6958: Select the tests that are in all of several groups
  • #​6960: Record the order in which methods of mock objects are invoked
  • #​6964: #[RequiresClass] attribute to skip a test if a class does not exist
  • #​6995: ChildProcessExtension interface for extensions that need to be bootstrapped in the child process of a test that runs in process isolation
  • --coverage-jsonl CLI option and <jsonl> element for the XML configuration file to write a code coverage report in JSONL format, one JSON object per line, that reports uncovered code rather than every executable line
  • --timeout CLI option to limit the wall-clock time of the entire test run
  • requireCoverageMetadataOnSmallTests, requireCoverageMetadataOnMediumTests, and requireCoverageMetadataOnLargeTests attributes for the XML configuration file to require code coverage metadata depending on the size of a test; these have precedence over requireCoverageMetadata
Changed
  • Output printed by a test is now shown in the compact output as a --- OUTPUT: record that is attributed to the test instead of being passed through unformatted; the record is omitted when beStrictAboutOutputDuringTests or --disallow-test-output already reports the output as risky
Deprecated
  • #​6585: Writing defects before the order for --order-by and executionOrder, which will change meaning in PHPUnit 14
  • #​6585: depends and no-depends for --order-by and executionOrder
  • #​6585: Configuring more than one order for --order-by and executionOrder
  • #​6585: Unknown values for the executionOrder XML configuration attribute, which are currently ignored
  • #​6686: Constraint::failureDescriptionInContext() and LogicalNot::negate()
  • #​6999: Class-level #[Group], #[Ticket], #[Small], #[Medium], and #[Large] on parent classes of test classes
Fixed
  • Issues that are listed in the baseline are not ignored for tests that are run in a separate process
  • A test that is run in process isolation aborts the test run when its result cannot be unserialized, for instance because it returns an object that holds a test double
  • A test that uses #[DataProviderClosure] errors when it is run in process isolation

Learn how to install or update PHPUnit 13.4 in the documentation.

Keep up to date with PHPUnit:
rectorphp/rector (rector/rector)

v2.8.1: Released Rector 2.8.1

Compare Source

Fixes

  • Fix crash cache due to PHPStan Turbo (#​8850)

v2.8.0: Released Rector 2.8

Compare Source

Faster runs, single-pass rules, and a leaner rule set 🚀

The Rector core engine is ~26 % faster (1.36x) with ~8 % less memory than 2.7.0.

If you run PHP 8.3+, it's 3x faster using PHPStan Turbo, the native parsing extension shipped with phpstan/phpstan:

Rev Core engine (time / peak RSS)
2.7.0 32.0s / 351 MB
2.8.0 23.6s / 324 MB
2.8.0 + PHPStan Turbo (PHP 8.3+) ~10.0s / ~317 MB

Turbo factor measured on this release via an A/B run on Rector's own rules/ (24-core host, PHP 8.4, cold, identical changed-file fingerprint): ~2.4x wall and ~2.6x worker CPU. Turbo speeds up PHPStan parsing in the workers, so the wall-time gain scales with the available core count.


This release is mostly about speed and reliability. A large performance campaign hoists cheap node guards in front of expensive reflection, scope and type lookups across hundreds of rules, replaces per-node config scans in configurable rules with keyed lookups, and resolves short names and unused imports in a single AST walk.

Rules now converge in a single pass: instead of a re-processing guard, the engine iterates rules to a fixed point and tests enforce idempotency, so a rule that changes a file produces the same result whether it runs once or many times.

We also trimmed the rule set: many niche, context-dependent rules that are not part of any set and rarely used are now deprecated. Deprecated rules still run and print a warning; they will be removed in a future major release. The goal is a smaller set of valuable, reliable rules for everyday upgrades.


New features 🥳

  • [CodeQuality] Add ExplicitNullableObjectInstanceRector, replacing 4 nullable-object instanceof rules (#​8636)
  • [Console] Add --all option to list-rules to list every rule in core and rector-* packages (#​8637)
  • [Console] Undeprecate the list-rules command (#​8533)
  • Respect cgroup/CFS CPU quota when picking the parallel worker count (#​8559)
  • Bump to PHPStan 2.3

Performance Improvements 🚀

  • Run the parallel workers with PHPStan Turbo, the native parsing extension shipped with phpstan/phpstan, on PHP 8.3+ - no main-process restart, the workers do the analysis (#​8812) Thanks @​SanderMuller
  • Retarget class-level rules to a single Class_/ClassLike node and add getClassReflection() to AbstractRector: RemoveParentDelegatingClassMethodRector, ReturnTypeFromMockObjectRector, AddVoidReturnTypeWhereNoReturnRector and ChangeMethodVisibilityRector (#​8824, #​8827, #​8828, #​8830, #​8831)
  • Hoist the repeated fully qualified name build in UseImportNameMatcher::resolveName() and resolve the parent class reflection by name in Php4ConstructorRector (#​8841, #​8838)
  • Drop scope attachment on pre/post increment expressions and remove an unneeded array_values() in BetterStandardPrinter::pArray() (#​8814, #​8821)
  • Hoist cheap name and structural guards before reflection, scope and type lookups across CodeQuality, DeadCode, CodingStyle, TypeDeclaration, Transform, EarlyReturn and legacy Php rules (#​8664, #​8666, #​8667, #​8668, #​8669, #​8670, #​8671, #​8672, #​8661, #​8663)
  • Replace per-node config scans with keyed lookups in configurable rules - method, property, rename, transform, arguments and removing rules (#​8734, #​8735, #​8736, #​8739, #​8742, #​8743, #​8744, #​8745)
  • Iterate rules to a fixed point with a content-cycle guard instead of a per-node re-processing guard, and enforce single-pass idempotency in tests (#​8679, #​8719, #​8715, #​8722)
  • Skip rules whose work depends on a docblock when the node has none (#​8624, #​8625, #​8626, #​8627, #​8628, #​8629, #​8630, #​8631, #​8632)
  • Resolve short names and used names in a single AST walk, and cache resolved names per file version (#​8697, #​8700, #​8701, #​8702, #​8704)
  • Reuse the rebuilt ClassReflection by class content hash to stop memory growth on class refresh (#​8731, #​8728, #​8729)
  • Cache per-file import facts in ClassNameImportContext (#​8687)
  • Cache realpath() of skip patterns in FileInfoMatcher (#​8699) Thanks @​SanderMuller
  • Memoize StaticPHPUnitEnvironment::isPHPUnitRun and replace the isStringName wildcard loop with a single strpbrk scan (#​8732, #​8733)
  • Only process the catch statements PHPStan skipped and run the decorating visitors once (#​8738)
  • Avoid nested traversals in ContextNodeVisitor by tracking loop/try/attribute depth (#​8741)
  • Short-circuit NodeComparator::areNodesEqual before printing (#​8752)
  • Move skipping from enterNode() to FileProcessor so it runs once per file (#​8593)
  • Parallel LPT buckets for a more even worker load (#​8496) Thanks @​webard
  • Add a single-process hotspot profiler and A/B benchmark script with a performance methodology (#​8718, #​8536)
  • Speed up ConvertStaticToSelfRector, ArrayToFirstClassCallableRector and SimplifyEmptyCheckOnEmptyArrayRector with cheap guards before scope fetching (#​8801, #​8796, #​8795) Thanks @​alfredbez
  • Hoist loop-invariant resolve+continue guards above foreach (#​8761)
  • Stop attaching scope to class extends/implements names and drop the unused process property on the node scope (#​8788, #​8792)
  • Remove the infinite-loop guard from FileProcessor now that rules converge in a single pass (#​8811)

Bugfixes 🐛

  • NewlineBeforeNewAssignSetRector: fix a false positive on a local var and $this property name collision (#​8535)
  • SimplifyQuoteEscapeRector: handle strings with accented characters (#​8532)
  • TernaryToNullsafeCoalesceRector: skip mixed and untyped calls (#​8531) Thanks @​roxblnfk
  • TernaryToNullCoalescingRector: preserve fallback parentheses on the Identical/NotIdentical path (#​8674)
  • AddArrowFunctionReturnTypeRector: fix a crash on NonexistentParentClassType (#​8568)
  • Fix scope on an enum when combining DowngradeEnumToConstantListClassRector and RenameMethodRector (#​8727)
  • Fix class scope refresh losing method scope when the class node is already in a class (#​8725)
  • StrContainsRector / MbStrContainsRector: skip a non-zero strpos()/mb_strpos() offset (#​8640, #​8642) Thanks @​guillaume-sainthillier
  • SplitGroupedClassConstantsRector: preserve the attribute and type (#​8650)
  • RemoveUselessUnionReturnDocblockRector: skip a static/$this union @return (#​8649)
  • StrictArrayParamDimFetchRector: skip a private method param called with an ArrayAccess arg (#​8648)
  • ReadOnlyAnonymousClassRector: skip an anonymous class with attributes (#​8665)
  • NullToStrictStringFuncCallArgRector: skip an arg already cast to the target type (#​8688)
  • AddNameToBooleanArgumentRector: skip session_set_save_handler (#​8750)
  • RemoveDuplicatedCaseInSwitchRector: compare switch case statements node-by-node (#​8754)
  • MergePhpstanDocTagIntoNativeRector: keep the native @param/@var/@return description (#​8781)
  • Record in-place node mutations as changes, so a rule that mutates a node and returns null is still reported, across rector-doctrine, rector-symfony, rector-phpunit and rector-downgrade-php (doctrine #​539, symfony #​1087, phpunit #​810, downgrade #​418)
  • fix(parallel): report the error limit only when it is actually reached (#​8844) Thanks @​alfredbez
  • Lazy-load rule class aliases to fix the PHP 7.4 scoped-build lint (#​8845)
  • Fix Windows CI error on ChangedFilesDetectorPortableCacheTest (#​8537)

Deprecations 💀

Deprecated rules still run and print a warning; they will be removed in a future major release. These are niche, context-dependent or rarely used rules outside the main PHP upgrade path.

Transform / Arguments

  • FuncCallToNewRector (#​8776), FuncCallToStaticCallRector (#​8775), MethodCallToFuncCallRector (#​8769), MethodCallToStaticCallRector (#​8770), NewToStaticCallRector (#​8768), StaticCallToMethodCallRector (#​8759), ConstFetchToClassConstFetchRector (#​8771), MergeInterfacesRector (#​8772), ArrayDimFetchToMethodCallRector (#​8762), StringToClassConstantRector (#​8779), RemoveMethodCallParamRector (#​8766)
  • ReplaceArgumentDefaultValueRector and FunctionArgumentDefaultValueReplacerRector in favor of dedicated rules (#​8686, #​8692)

Renaming

Naming (and the SetList::NAMING set itself)

  • RenameParamToMatchTypeRector (#​8553), RenamePropertyToMatchTypeRector (#​8547), RenameVariableToMatchNewTypeRector (#​8554), RenameVariableToMatchMethodCallReturnTypeRector (#​8549), RenameForeachValueVariableToMatchExprVariableRector (#​8548), RenameForeachValueVariableToMatchMethodCallReturnTypeRector (#​8550), and the naming prepared set warning (#​8555)

TypeDeclaration

  • ParamTypeByMethodCallTypeRector and its Object/Scalar/Array splits (#​8567), ParamTypeByParentCallTypeRector (#​8813), AddPropertyTypeDeclarationRector (#​8774), AddParamStringTypeFromSprintfUseRector (#​8723), DeclareStrictTypesRector in favor of SafeDeclareStrictTypesRector (#​8562), BinaryOpNullableToInstanceofRector folded into ExplicitNullableObjectInstanceRector (#​8817)

CodeQuality / CodingStyle / DeadCode / EarlyReturn / Php

  • CompleteDynamicPropertiesRector (#​8753), SwitchTrueToMatchRector (#​8622), InnerFunctionToPrivateMethodRector (#​8621), MoveInnerFunctionToTopLevelRector (#​8616), ForRepeatedCountToOwnVariableRector (#​8620), CallUserFuncWithArrowFunctionToInlineRector (#​8615), RemoveUselessIsObjectCheckRector (#​8614), SimplifyStrposLowerRector (#​8611), SetTypeToCastRector (#​8610), ForeachItemsAssignToEmptyArrayToAssignRector (#​8577), PostIncDecToPreIncDecRector (#​8583), TernaryFalseExpressionToIfRector (#​8683), RemoveDeadReturnRector in favor of RemoveAlwaysTrueIfConditionRector (#​8685), RemoveDuplicatedReturnSelfDocblockRector (#​8634), RemoveParentDelegatingConstructorRector (#​8755), ChangeConstantVisibilityRector (#​8767), AddOverrideAttributeToOverriddenMethodsRector (#​8773), RemoveTraitUseRector (#​8778), ReturnEarlyIfVariableRector (#​8818)

Internals ⚙️

  • Replace tomasvotruba/unused-public with shipmonk/dead-code-detector (#​8530)
  • Decouple Rector rules from the PhpParser NodeVisitor and move enterNode() out of AbstractRector into RectorRunner (#​8541, #​8560)
  • Add a standalone RectorRegistry and merge the skipper services into a single Skipper (#​8600, #​8601, #​8604)
  • Inline the deprecated symplify/rule-doc-generator-contracts under the Rector\RuleDoc namespace (#​8586)
  • Add a PHPStan rule to flag Rector rules not registered in any set (#​8760)
  • Remove dead and deprecated public API: @api annotations, unused collectors, converters and interfaces, the created_by_rule attribute and RectifiedAnalyzer, and the deprecated withPhp53Sets()..withPhp74Sets() and cache-meta methods (#​8794, #​8803, #​8804, #​8805, #​8806, #​8807, #​8808, #​8809, #​8810, #​8798, #​8799)
  • Register MergePhpstanDocTagIntoNativeRector in the type-declaration docblock level (#​8763)
  • Move VariableNaming to rector-downgrade-php (#​8797, downgrade #​417)
  • Deprecate PhpVersionFeature and use PhpVersion constants directly in rules (#​8839)
  • Remove the deprecated custom-rule and setup-ci commands, and the unused doctrine/inflector dependency (#​8815, #​8816)
  • Add a NoGetClassReflectionOnScopeRule PHPStan rule and route class reflection through a safer fetchClassLikeReflection(), used in ReadonlyClassManipulator and ObjectTypeSpecifier (#​8820, #​8829, #​8832, #​8835, #​8840)
  • Remove NullToStrictStringIntConverter, use an explicit null type in the null-to-strict rules (#​8837)
  • Lock the fixture directory while a test uses its temp file (#​8822) Thanks @​SanderMuller

rector-doctrine 🟠

  • Deprecate AddArrayResultColumnNamesRector (#​533)
  • Retarget RemoveNullFromNullableCollectionTypeRector to a single Class_ node and make it idempotent (#​535, #​534)
  • Cap removed-API rules at an upper version bound (#​532)
  • Check the method name before type inference in DBAL/ORM method call rules (#​536, #​537)

rector-symfony 🎵

  • [Symfony 8.2] Add rules for Schedule::with() to add() and Doctrine middleware renames (#​1082)
  • [Symfony 8.0] Merge the eraseCredentials body into an existing __serialize() instead of a dead serialize() (#​1085)
  • Reimplement ReplaceArgumentDefaultValueRector usages as dedicated rules (#​1079)
  • Make LogoutHandlerToLogoutEventSubscriberRector idempotent (#​1080)
  • Cap legacy removed-API rules and StringToArrayArgumentProcessRector at upper version bounds (#​1076, #​1075)
  • Move the nullable ServiceMap out of the ServiceMapProvider constructor (#​1073)
  • Check the method name before type inference in Intl and WebLink rules, and bail before reflection when a node has no attributes (#​1083, #​1084)
  • Deprecate the JMS AccessType/Accessor annotation-to-attribute rules and drop the orphaned enum (#​1086, #​1088)

rector-phpunit 🟢

  • [PHPUnit 7.0] Add ScenarioToTestAnnotationRector to replace the scenario annotation with test (#​809)
  • Match the rename map case-insensitively in IdentifierManipulator (#​808)
  • WillReturnCallbackFallbackToReturnFalseRector: skip never-returning fall-through and a trailing comment after return (#​801, #​800)
  • AssertEmptyNullableObjectToAssertInstanceofRector: skip an anonymous class (#​792)
  • Deprecate SuffixMockObjectPropertyRector as it can produce invalid variable names (#​795)
  • Make AddProphecyTraitRector idempotent and skip a non-test class early (#​806, #​793)
  • Speed up AssertRegExpRector and the PHPUnit test-case call guard with a cheap method-name gate (#​796, #​807)
  • Inline the scenario-to-test doc tag replace in ScenarioToTestAnnotationRector and drop the deprecated findFirstNonAnonymousClass() call (#​812, #​811)

rector-downgrade-php ⬇️

  • Fix an infinite loop on DowngradeIteratorCountToArrayRector, and skip iterator_to_array()/iterator_count() already guarded by is_array() (#​414, #​415)
  • Match array_key_first/array_key_last in a single statement traversal, and convert nested arrow functions to anonymous functions in a single pass (#​416, #​413)
  • Drop JSON constants from a bitwise-or structurally in JsonConstCleaner (#​410)
  • Make the exposed downgrade rules idempotent on repeated application (#​409)
  • Deprecate DowngradeParameterTypeWideningRector (#​411)
  • Add a local VariableNaming service moved from core, and fix the missing COVARIANT_RETURN constant with PhpVersion::PHP_74 (#​417, #​419)

Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Enabled.

♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate
renovate Bot requested a review from a team as a code owner October 9, 2026 06:38
@renovate renovate Bot added the renovate label Oct 9, 2026
@renovate
renovate Bot enabled auto-merge October 9, 2026 06:38
@renovate
renovate Bot force-pushed the renovate/composer-dev-tooling branch 2 times, most recently from 237e8f6 to 69b2cd4 Compare October 12, 2026 12:52
@renovate renovate Bot changed the title chore(deps): update dependency phpunit/phpunit to ^13.4.0 chore(deps): update dependency phpunit/phpunit to ^13.4.1 Oct 12, 2026
@renovate
renovate Bot force-pushed the renovate/composer-dev-tooling branch from 69b2cd4 to 163bb05 Compare October 16, 2026 20:51
@renovate renovate Bot changed the title chore(deps): update dependency phpunit/phpunit to ^13.4.1 chore(deps): update composer dev tooling dependencies Oct 16, 2026
@renovate
renovate Bot force-pushed the renovate/composer-dev-tooling branch 2 times, most recently from 66b02ae to 8f811e6 Compare October 23, 2026 18:06
@renovate
renovate Bot force-pushed the renovate/composer-dev-tooling branch 3 times, most recently from d6f9c49 to 6645e37 Compare November 3, 2026 07:29
@renovate
renovate Bot force-pushed the renovate/composer-dev-tooling branch from 6645e37 to 3c7853e Compare November 3, 2026 22:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants