- Add acceptsCallable property to ArgInfo entity to track callable type acceptance
- Implement logic to detect when function parameters accept callable types
- Add normalization of bare function callable arguments to string representation
- Create helper methods to check if types contain callable declarations
- Add resolution logic for bare identifier function names in callable context
- Update native class support to set acceptsCallable flag based on type checking
- Modify preprocessor to populate acceptsCallable field during argument parsing
- Remove deprecated typeDeclContainsCallable method and consolidate logic
- Add comprehensive test coverage for bare
- Allow int, float, bool, string, and array Native Class properties to be passed
directly to matching reference parameters on statically resolved calls
- Generate call-scoped C++ T& bindings for typed reference parameters instead
of creating Zend references
- Maintain compile-time rooting of Native receiver objects during typed calls
- Add new parseNativeTypedPropertyReferenceArg method to handle typed property
reference arguments
- Update documentation to reflect new typed reference capabilities for fixed
Native properties
- Create new test case covering typed property reference functionality
- Modify changelog to document the
- Replace any() with std::any() in test files and compiler logic
- Replace refval() with std::ref() for reference wrapping operations
- Replace expected() with std::expected() for branch prediction hints
- Replace unexpected() with std::unexpected() for branch prediction hints
- Remove deprecated objval() function and use toObject() keyword method
- Update parser to recognize std:: class expressions with case insensitivity
- Add comprehensive changelog documenting breaking API changes
- Update documentation to reflect new std:: namespace conventions
- Add tests for case-insensitive std class and method names
- Verify global function names remain available for user-defined functions
- Add runtime check mechanism for objects that require value validation
- Prevent null assignment to typed objects after unset with proper error message
- Disable native call optimizations when object values become unpredictable
- Maintain class constraints even after unset and reassignment
- Generate appropriate error handling for invalid object operations
- Update SSA analysis to recognize unset operations as dangerous for property hoisting
- Add comprehensive tests for typed object unset behavior scenarios
- Add genNewClosure method to handle closure creation with correct scope
- Preserve lexical class scope and late static binding for closures
- Handle trait method flattening correctly when creating closures in traits
- Update arrow function and fiber generator closure creation to use new method
- Fix strict scalar parameter checking to run inside argument expressions
- Correct trait name resolution in class definition processing
- Add comprehensive test coverage for closure lexical scope behavior
- Add strict scalar type checking for function parameters and return values
- Preserve zval types until declared boundaries are validated
- Generate type error exceptions with detailed argument information
- Support dynamic parameter validation in variadic and default argument contexts
- Add comprehensive test coverage for strict scalar type boundaries
- Introduce helper methods for scalar type condition generation and validation
- Replaced all occurrences of self::TYPE_* with Type::* in AnonClassGenerator.php
- Updated ArrayExpressionTrait.php to use Type::ARRAY and Type::VAR instead of self::TYPE_*
- Modified AssignOpTrait.php to reference Type constants instead of self::TYPE_*
- Changed BinaryOpTrait.php to use Type::BIGINT, Type::DECIMAL, Type::BIGFLOAT constants
- Updated CallArgumentGenerator.php to use Type::ARRAY and Type::REF constants
- Added Type import statements to all modified files
- Maintained same functionality while improving code consistency with Type namespace
- Move Reflection class from TypePhp to TypePhp\Resolver namespace
- Rename ArgInfo.php to TypePhp\Entity\ArgInfo and update all references
- Move AstNodeType.php to TypePhp\Parser\AstNodeType with namespace update
- Update Symbol.php import paths to use TypePhp\Generator\Symbol
- Move Constants.php to TypePhp\Metadata\Constants with namespace change
- Rename FileScanner.php to TypePhp\Build\FileScanner with namespace update
- Move MagicMethodDetector.php to TypePhp\Resolver\MagicMethodDetector
- Rename PropertyHookLowering.php to TypePhp\Transform\PropertyHookLowering
- Move Visitor.php to TypePhp\Transform\Visitor with namespace update
- Update all test files to reflect new class
- Move constant definition and namespace use handling to DeclarationSymbolTrait
- Extract native type compatibility logic into NativeTypeCompatibilityTrait
- Remove duplicated method implementations from CompilerBase
- Add trait usage in CompilerBase for better code organization
- Separate concerns between compiler base and specialized functionality
- Extract composite type checking logic to new CompositeTypeCheckerTrait
- Move dynamic property access methods from CompilerBase to PropertyAccessTrait
- Add use statement for CompositeTypeCheckerTrait in CompilerBase
- Remove duplicate method implementations from CompilerBase
- Maintain all existing functionality through trait-based code organization