- Add readonly flag to PropertyDef entity
- Implement readonly check in property hoisting logic
- Prevent hoisting of readonly properties in SsaPropOptimizer
- Update canHoist methods to accept PropertyDef parameter
- Add test case for readonly cross-class property access
- Document readonly property restriction in hoisting rules
- Removed camelCase to snake_case conversion in extension function lookups
- Changed object extension methods to require exact name matches without case conversion
- Updated universal method extensions to use exact spelling instead of case variants
- Modified keyword extension methods to use exact __{method} naming
- Simplified function candidate search to single exact match instead of multiple variants
- Updated test cases to reflect exact naming requirements for all extension methods
- Maintained case-insensitive lookup behavior according to PHP function semantics
- Create new test file for trait method writing injected private property on child object
- Add trait PrivatePropertyWriter with private array property and items method
- Implement PropertyOwner class using the trait
- Create ChildPropertyOwner class extending PropertyOwner
- Add main function to test the inherited private property access
- Define expected output for the array dump result
- Add sourceFile and startLine properties to FunctionDef entity
- Track PHP source file and line number during preprocessing
- Generate proper file location context for AOT runtime exceptions
- Implement entry script prefixing with correct line numbers
- Update eval calls to include source file information
- Create test case for main file location reporting in exceptions
- Modified findObjectExtensionMethod to clarify that static lookup is only used
for named MethodCall AST paths
- Added distinction between static method name resolution and dynamic method
calls
- Updated documentation to explain that real methods are resolved before
extension fallback
- Clarified that __call() magic method is only used when no valid extension exists
- Added test coverage for missing method calls using __call magic method
- Included dynamic method name handling in test assertions
- Add parameterOffset parameter to parseNativeCallArgs with validation logic
- Implement named argument offset validation to prevent targeting extension receiver
- Update variadic argument handling with offset calculations
- Skip parameter validation for indices below offset threshold
- Adjust function definition checks to account for parameter offset
- Add object extension method lookup in findObjectExtensionMethod
- Implement extension function resolution within specific namespaces only
- Create genObjectExtensionFn to generate proper extension function calls
- Add comprehensive test coverage for namespaced object extension methods
- Support both snake_case and camelCase method naming conventions
- Ensure extension methods receive correct parameter positioning with offset 1
- Allow extension functions to use either snake_case or lowerCamelCase naming
- Implement function name candidate generation with both naming conventions
- Prioritize snake_case over lowerCamelCase when both exist
- Add test cases for camel case keyword extension methods
- Add test cases for universal method extension with camel case names
- Refactor extension method lookup to iterate through both naming patterns
- Update documentation to reflect dual naming convention support
- Implement property hook lowering to getter/setter method calls
- Add support for private(set) and protected(set) asymmetric visibility
- Generate appropriate error handling for read-only hooked properties
- Support compound assignments and increment/decrement operations on hooked properties
- Add proper visibility checks for asymmetric property setters
- Update documentation to reflect new property hook capabilities
- Add comprehensive test coverage for property hook functionality
- Introduce --php-version CLI option to specify accepted PHP syntax version
- Add support for PHP 8.5 pipe operator with left-to-right evaluation
- Implement PHP version validation in project configuration parsing
- Update parser factory usage to respect configured PHP version
- Add tests for pipe operator functionality and PHP version controls
- Modify stub generation to use configured PHP version
- Update documentation with new --php-version option details
- Remove unnecessary assignment expression check in echo statement parsing
- Update null assignment error messages to include actual type strings
- Add support for untyped properties retaining PHP mixed semantics with null values
- Modify object property unset logic to preserve PHP behavior for typed properties
- Implement proper parent::method() call handling with dynamic method names
- Add comprehensive property inheritance compatibility checks between parent and child classes
- Update documentation to reflect property visibility and inheritance requirements
- Remove test case for null assignment rejection since semantics changed
- Add detailed comments explaining property typing and inheritance behavior
- Replace noLiteralString handling with getInlineString method
- Add getInlineString function to generate PHP strings without literal table
- Use ZEND_STRL to preserve string length with embedded NULs
- Update scalar parsing to use getInlineString for noLiteralString case
- Add test case for embedded null string handling
- Remove skip condition for trim tests related to embedded nulls
- Move any() function handling from assignment-specific paths to general function call entry point
- Add comprehensive composite type relation analysis with INT/COMPOSITE_TYPE_MATCH/COMPOSITE_TYPE_UNKNOWN states
- Implement static type checking for closure and arrow function return values
- Add support for int to float coercion in composite type contexts
- Enhance type checking for property assignments with composite types
- Update documentation to reflect unified any() function behavior across all expression positions
- Add extensive test coverage for composite type edge cases and error scenarios
- Remove redundant dynamic_value helper functions from test files
- Implement proper null
- Implement static type validation for union, intersection, and nullable types
- Add composite type assignment checking for parameters, return values, and property assignments
- Introduce dynamic value wrapper tests to verify type checking behavior
- Enhance error messaging for composite type mismatches
- Update documentation to reflect improved static type analysis capabilities
- Add proper restoration of compiler state after generator conversion errors
- Improve parallel compilation process management and error handling
- Add metadata caching for object files with PHP ABI compatibility checks
- Add proper exception rethrow mechanism using typephp_fiber_rethrow in compiler
- Implement comprehensive generator return type validation supporting UnionType, IntersectionType, and nullable types
- Add support for constructor property promotion in generator functions
- Enhance generator destructor handling with proper finally block execution
- Implement proper exception boundary crossing between Fiber and generator contexts
- Add comprehensive test coverage for generator lifecycle, yielding, and error scenarios
- Update documentation to reflect new supported return types including object and mixed
- Fix parameter validation and type checking integration within generator functions
- Add proper handling of yield from delegation with throw and return value preservation
- Implement automatic key tracking for generator yield operations
- Add validation for recursive IteratorAggregate cycles in yield from operations
- Implement FiberGenerator trait with yield/yield from parsing
- Add generator detection and preparation logic in function compilation
- Generate TypePHP\FiberGenerator objects that implement Iterator
- Support yield expressions and statements with key-value pairs
- Enable yield from delegation with array and traversable forwarding
- Register fiber generator class entry during module initialization
- Update runtime initialization to use typephp_runtime_init
- Replace php_aot_ prefixed helpers with typephp_ prefixed versions
- Add comprehensive generator test suite covering various scenarios
- Document generator limitations and compatibility restrictions
- Mark dynamic PHP foreach over native generators as XFAIL case
- Implement parseDynamicClassConstFetch method to handle non-name expressions in class constant fetch
- Add materializeDynamicClassConstTarget method to properly evaluate dynamic class targets
- Modify parseClassConstFetch to delegate dynamic cases to new handler
- Remove outdated conditional logic for variable expressions in class
- Add isPromoted property to PropertyInfo class
- Include isPromoted flag in PropertyInfo constructor and initialization
- Set ZEND_ACC_PROMOTED flag for promoted properties in PHP 8.0+
- Update Preprocessor to track promoted status during property creation
- Add promoted flag to PropertyDef entity
- Remove xfails for promoted property tests since they now pass
- Handle promoted properties in constructor parameter processing
- Replace direct string concatenation with formatCppLineComment method
- Add proper line wrapping for multi-line comments in generated code
- Apply consistent comment formatting across function calls, expressions and method calls
- Introduce formatCppLineComment helper to handle comment formatting logic
- Update all comment generation points to use the new standardized approach
- Add test cases for ThinkPHP cookie, environment and service patterns
- Add test case for trait method return by reference functionality
- Add test case for array_map nested closure and unpacked callable params in ThinkPHP middleware
- Add test case for array_walk_recursive by-ref filter and match throw type cast in ThinkPHP request filter
- Add test case for preg_replace_callback use ref and foreach ref match cast in ThinkPHP route parsing
- Remove XFAIL annotations from Symfony nullable first-class callable test
- Remove XFAIL annotations from Symfony uksort priority fallback test
- Add config lazy hook fallback test with dotted key lookup
- Add event observer reflection prefix test for dynamic dispatch
- Add file hashname match callable test with closure branch handling
- Add pipeline array reduce exception handler test with nested closures
- Add request dynamic property cache test with method fallback
- Add route magic call forward test using call_user_func_array
- Create new test file return-by-ref-method.phpt
- Add test class with private value property
- Implement getValue method returning copy of value
- Implement getRefValue method returning reference to value
- Test both regular and reference return behaviors
- Verify reference assignment modifies original value
- Add expected output with proper integer dumps
- Implement handling of MethodCall expressions in assignment operations with references
- Add StaticCall expression support for reference assignments with proper name validation
- Introduce native method lookup and reference return validation for method calls
- Add static method reference assignment with class name resolution and parent/self handling
- Update function return by reference to support property fetches and chained expressions
- Modify documentation to reflect updated reference assignment capabilities
- Add comprehensive tests for method and static call reference return scenarios
- Add returnsByRef property to FunctionDef entity
- Remove restriction on reference return types in Preprocessor
- Implement proper reference return handling in CompilerBase
- Add validation for reference assignment from function calls
- Update Translator to generate correct C++ code for reference returns
- Add compatibility checks for method override with reference returns
- Include test case for function returning by reference preserving aliases
- Updated CompilerBase.php to use convertIntExpr for bitwise not operations on variables
- Modified gen_stub.php to always use var_export for default value conversion
- Enhanced object_property test to follow strict type checking with TypeError handling
- Added native property test for bitwise not class constant assignments
- Updated Translator.php to return raw values instead of CValue wrappers for constants
- Improved documentation consistency across project overview files
- Added strict types declaration to property assignment test cases
- Implement proper type checking for native scalar property assignments from variables
- Add exact type conversion helpers for int, float, and bool property types
- Enforce compile-time validation of static type mismatches in property assignments
- Introduce PHP-style error messages for property type assignment failures
- Optimize property fetch operations with zval macro support in loops
- Refine compound assignment operations to validate variable types before native writes
- Update attribute handling in node parsing to preserve original values correctly
- Enhance property assignment type resolution with comprehensive scalar type mapping
- Added clock timezone coalesce assignment and clone constructor test
- Added CSS selector unicode escape preg_replace_callback test
- Added dotenv escaped dollars protection test
- Added filesystem dynamic call error handler test
- Added finder gitignore preg_replace_callback test
- Added finder directory normalization with array_merge unpack test
- Added intl environment variable filtering with static cache test
- Added LDAP collection iterator caching test
- Added process environment union and command line string conversion test
- Added semaphore negated coalesce assignment test
- Added serializer context group merging with unpack test
- Added validator constraint serialization with private key handling test
- Added word count trimming and filtering test
- Added weblink header parser with repeated attributes test
- Add EventDispatcher wrapped listener cache test with first-class callable support
- Implement Messenger nullsafe merge unpack functionality test case
- Create Runtime options global coalesce assignment test scenario
- Add Security badge dynamic class key with coalesce assignment test
- Include comprehensive test coverage for Symfony-style PHP patterns
- Verify proper handling of nullsafe operators and array unpacking operations
- Add test case for Symfony Cache style negated static coalesce assignment condition
- Add test case for Symfony Serializer style array_map(strval(...)) with Stringable values
- Add test case for Symfony ServiceLocator style match count with closure unpack
- Add test case for Symfony Workflow style array dim coalesce assignment followed by assign-op
- Include comprehensive test scenarios covering edge cases and expected behaviors
- Verify proper handling of null coalescing operators and array operations in AOT context
- Add SplObjectStorage promise pool test with clone options
- Add __serialize/__unserialize parent state destructuring test
- Add null coalesce assignment in comparison condition test
- Add match(true) condition with assignment and negation test
- Add test for AssetMapper style match statement with nullsafe side effect and throw arm
- Add test for Finder style lazy iterator using yield from callable property invocation
- Add test for HttpFoundation style static reflection cache with coalesce assignment operator
- Include proper skip conditions for unsupported features
- Verify correct behavior of Symfony-style PHP constructs in AOT compilation
- Implement dynamic native property write detection logic
- Add shouldUseDynamicNativePropertyWrite method for type checking
- Support native property assignment with type conversion
- Handle compound assignment operations for native properties
- Add canUseNativePropertyAssignOp validation method
- Create comprehensive documentation for compile-time functions
- Add test cases for native int property assignments
- Include unit tests for native property assignment operations
- Update incompatible PHP features documentation
- Add native property assignment to test suite