- Add check for void return type to prevent materialization in tmp var
- Return method call directly when return type is void
- Prevent unnecessary temporary variable assignment for void providers
- Maintain proper expression statement handling for void operations
- Replaced all occurrences of native_types::type_* with Type::* constants
- Replaced all occurrences of complex_types::type_* with Type::* constants
- Updated ExtensionProvider annotation to use ExtensionProvider::Keyword
- Modified std array, vector, map, ordered_map, bigfloat, bigint, decimal tests
- Updated stream, array multidimensional, unsafe pointer, and type mismatch tests
- Changed camel case keyword extension to use Type::Any constant
- Updated documentation to reflect Type::* constant usage instead of type_* constants
- Add ExtensionProvider attribute class to define extension targets
- Convert function-based extensions to class-based ExtensionProvider pattern
- Support various target types including native_types, complex_types, and class names
- Parse ExtensionProvider attributes during preprocessing phase
- Generate proper extension method calls using provider classes
- Update test cases to use ExtensionProvider syntax instead of function prefixes
- Remove old extension function name patterns and related logic
- Add validation for extension provider method signatures and parameters
- Support both snake_case and camel
- 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
- 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.php from src/ to src/Resolver/
- Move Symbol.php from src/ to src/Generator/
- Move FileScanner.php from src/ to src/Build/
- Move ArgInfo.php from src/ to src/Entity/
- Move Visitor.php from src/ to src/Transform/
- Update all import statements across compiler base and related files
- Add new dependencies in CompilerBase.php and Preprocessor.php
- Update example files to use new namespace paths
- Correct documentation links in universal methods guide
- Add necessary use statements in metadata constants and generator files
- 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
- 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
- Change src/Php/Translator.php to src/Translator.php in documentation
- Update class hierarchy diagram to remove Php subdirectory references
- Modify composer.json autoloader to map TypePhp namespace to src directory only
- Adjust all src/Php/* paths to src/* in configuration and test files
- Update project.yml sources to include ./src instead of individual Php subdirectories
- Remove Php subdirectory from file paths in platform and analysis tests
- Clean up directory references in test results documentation
- Updated namespace declarations from PhpAot\Php to TypePhp in all source files
- Modified import statements to use TypePhp instead of PhpAot\Php throughout the codebase
- Adjusted composer.json autoload configuration to map TypePhp namespace to src directories
- Updated documentation references from PhpAot\Php to TypePhp in comments and markdown files
- Changed class references in test files to use new TypePhp namespace
- Updated bootstrap and utility scripts to reference TypePhp namespace
- Removed abstract base class inheritance in CompilerBase class
- Added new properties and methods for indentation and mode handling in CompilerBase
- Updated exception handling to use new TypePhp\Exception namespace