Skip to content

Incorrect behavior of DowngradeArraySpreadRector, DowngradeArraySpreadStringKeyRector #9291

@samsonasik

Description

@samsonasik

Bug Report

Subject Details
Rector version last dev-main
Installed as composer dependency

Minimal PHP Code Causing Issue

See https://getrector.com/demo/3933a069-e42d-4d93-a226-55fcab03e6ec

<?php

use PhpCsFixer\Tokenizer\CT;
use PhpCsFixer\Tokenizer\FCT;

class A
{
    private const PROPERTY_TYPE_DECLARATION_KINDS = [
        \T_STRING, 
        \T_NS_SEPARATOR, 
        CT::T_NULLABLE_TYPE, 
        CT::T_ARRAY_TYPEHINT, 
        CT::T_TYPE_ALTERNATION, 
        CT::T_TYPE_INTERSECTION, 
        CT::T_DISJUNCTIVE_NORMAL_FORM_TYPE_PARENTHESIS_OPEN, 
        CT::T_DISJUNCTIVE_NORMAL_FORM_TYPE_PARENTHESIS_CLOSE
    ];
    
    private const EXPECTED_KINDS_GENERIC = [
        \T_ABSTRACT, 
        \T_FINAL, \T_PRIVATE, 
        \T_PROTECTED, \T_PUBLIC, 
        \T_STATIC, 
        \T_VAR, 
        CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PUBLIC, 
        CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PROTECTED,
        CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PRIVATE, 
        FCT::T_READONLY, 
        FCT::T_PRIVATE_SET, 
        FCT::T_PROTECTED_SET, 
        FCT::T_PUBLIC_SET
    ];
    
    private const EXPECTED_KINDS_PROPERTY_KINDS = [
        ...self::EXPECTED_KINDS_GENERIC, 
        ...self::PROPERTY_TYPE_DECLARATION_KINDS
    ];
}

Responsible rules

  • DowngradeArraySpreadRector

  • DowngradeArraySpreadStringKeyRector

Expected Behavior

array_merge() on property definition cause error:

Fatal error: Constant expression contains invalid operations in /in/suBZM on line 7

It should be extracted instead.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions