- 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
- Introduce NativeBuildConfigurationTrait to handle include, library, and linker paths
- Add platform-specific include path resolution for Windows and Linux/macOS
- Implement library path configuration with PHP SDK support
- Add cross-platform library linking for phpx, PHP core, and system libraries
- Include platform-specific target file naming and extension handling
- Support both extension and binary build modes on different platforms
- Move array parsing logic from CompilerBase to new ArrayExpressionTrait
- Extract globals array dimension fetch handling to the trait
- Separate writable identifier parsing into the trait
- Move array dimension fetch read/update logic to the trait
- Extract mixed array parsing functionality to the trait
- Add proper trait usage in CompilerBase class
- Moved conditional control methods (parseIf, parseIfChain) to ConditionalControlTrait
- Moved loop control methods (parseFor, parseWhile, parseDo) to LoopControlTrait
- Moved selection expression methods (parseTernary, parseMatch) to SelectionExpressionTrait
- Removed unused parseValueSelection method from CompilerBase
- Updated CompilerBase to import new trait files
- Extracted conditional, loop, and selection expression logic into modular traits
- Maintained all existing functionality while improving code organization
- Extract foreach parsing methods into new ForeachTrait
- Extract switch parsing methods into new SwitchTrait
- Add trait usage in CompilerBase to maintain existing functionality
- Remove duplicate method implementations from CompilerBase
- Preserve all original parsing behavior through trait integration
- Improve code organization by separating concerns into focused modules
- 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
- Extract method call handling from CompilerBase to MethodCallTrait
- Add MethodCallTrait import and usage in CompilerBase
- Remove redundant method call parsing functions from CompilerBase
- Move all method-related helper functions to the new trait
- Maintain same functionality while improving code organization
- Separate concerns by isolating method call parsing logic
- Extracted class constant fetch logic from CompilerBase to ClassConstantFetchTrait
- Moved nullsafe property and method access implementation to NullsafeAccessTrait
- Added ClosureGenerator methods for arrow functions and closures
- Introduced isReturnStmtInLastLine helper method for closure generation
- Updated CompilerBase to use trait composition instead of inline methods
- Added NodeFinder import for arrow function variable detection
- Extract throw and try/catch/finally parsing methods to ExceptionControlFlowTrait
- Add ExceptionControlFlowTrait import to CompilerBase class
- Remove duplicate method implementations from CompilerBase
- Move all exception handling related functionality to dedicated trait file
- Maintain same functionality while improving
- Implement parseNativeCallArgs method for native function argument parsing
- Add buildNativeVariadicArg method for variadic argument handling
- Create parseNamedCallArgs method for named argument processing
- Add isReferenceArgument method for checking reference parameters
- Implement AOT call argument info retrieval methods
- Add method resolution for AOT class and interface methods
- Include argument info by index lookup functionality
- Add reference named argument checking capability
- Implement comprehensive parseCallArgs method for general argument parsing
- Add scoped callback argument parsing for static/self/parent scopes
- Create utility methods for ensuring call args, array args and named args
- Add positional call argument handling with
- Replace UNSUPPORTED_SYNTAX.md with INCOMPATIBLE_PHP_FEATURES.md in CLASS_INHERITANCE.md
- Update COMPILATION_MODES.md with correct command example using ldd instead of static compilation
- Replace syntax support documentation links with compatibility-focused documents in COMPILATION_MODES.md
- Rewrite COMPILER_CLI.md with concise
- 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
- Replace direct static property access with parseDynamicStaticPropertyFetch method
- Add proper runtime evaluation order for class and property operands
- Implement dynamic class value resolution supporting self, parent, static keywords
- Add temporary variable assignment for class and property values
- Create proper class name resolution using get_class or toString methods
- Update documentation to reflect dynamic property chains now use Zend runtime fallback
- Modify incompatibility classification from pending to partial support
- Clarify that native optimization is not guaranteed for dynamic operations
- 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 cleanupResponseFile call after successful builds in BackendTest
- Implement proper exception handling for link failures with TestError
- Add test case for response file cleanup when linking fails
- Replace php_aot_static_int_ref with typephp_static_int_ref in assertions
- Refactor Translator to always clean up response files in finally block
- Improve error reporting for both link failures and missing target files
- Update FunctionTest return type declaration and method implementation
- 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
- Added logic to detect and properly handle reference return types using returnsByRef property
- Updated return type determination to include both regular and reference types
- Modified condition check to use new cppReturnType variable instead of getReturnType()
- Ensured proper return statement generation for reference type methods
- 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
- Create comprehensive classification system for TypePHP AOT incompatibilities
- Define categories including Hard Limit, Intentional Rule, Pending, and Partial
- Document hard limits with AOT execution model constraints
- List intentional TypePHP rules for explicit and predictable behavior
- Detail implementable features
- Document recommended pipeline from PHP Parser AST to backend-specific code generation
- Define Bound AST structure preserving PHP syntax shape with resolved semantic information
- Specify PHP Semantic IR close to PHP runtime semantics with suggested instruction families
- Outline Runtime ABI operations for consistent
- 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
- Add support for 'lib' build mode that creates shared libraries with correct extensions
- Implement automatic 'lib' prefix for library targets on Unix systems unless explicit output is set
- Add build mode aliases normalization ('library', 'extension', 'cli' map to standard modes)
- Update target filename generation to handle explicit output paths with custom extensions
- Add platform-specific target extensions: .so for Linux, .dylib for macOS, .dll for Windows
- Include smoke test for validating library compilation and linking
- Update documentation with library build instructions and usage examples
- Add linker flag -Wl,-z,defs for Linux library builds to ensure self-contained libraries
- Modify command line help to document new build modes and clarify existing options
- Add C API header generation for exported
- Introduce NativePropertyAssignOpClassConstBox class with flags property
- Implement clearPublic method using bitwise AND assignment operator
- Add native_property_assign_op_class_const function for testing
- Demonstrate bitwise operation with ReflectionClassConstant::IS_PUBLIC
- Support integer type declaration for flags property
- Enable
- Add CMakeLists.txt for building TypePHP Ocean Godot bridge extension
- Create main.php game logic with chunk-based world generation and weather system
- Add Godot scene configuration with environment settings and particle effects
- Implement PHP stubs for ocean backend functions
- Add complete C++ backend implementation with OpenGL rendering and physics
- Integrate spectral wave simulation and dynamic weather transitions
- Implement chunk loading/unloading system for infinite world navigation
- Add mouse capture and input handling for 3D camera controls
- Create marker placement system for world objects and islands
- Add GDExtension ignore files for C++ and GDExtension source directories
- Implement CMakeLists.txt for Godot extension with proper library linking
- Create PHP stub functions for Minecraft crafting operations
- Add comprehensive C++ backend implementation with OpenGL rendering
- Implement window management, texture loading, and block rendering
- Add chunk system with face building and distance-based visibility
- Include mouse capture, camera controls, and crosshair rendering
- Implement world initialization, block placement, and chunk management
- Add sky gradient, fog effects, and transparent object rendering
- Add BUILD_MODE_LIB constant to CompilerBase class
- Implement isBuildModeLib and isBuildModeEmbed methods for library detection
- Update Clang backend to handle lib build mode with -fPIC flag and DLL linking
- Modify GccLikeBackend to support lib build mode with shared library flags
- Update MSVC backend to handle lib build mode with DLL compilation
- Extend PlatformBase to return correct extensions for lib builds
- Add proper handling for misc directory files during preprocessing
- Create new example project demonstrating library build functionality
- Update Translator to include main.cc for embed modes and add PHPX_NO_MAIN define for libraries
- Expand mode mapping to accept multiple library-related build mode aliases
- Increment version number from 1082 to 1084
- Update documentation to reflect new lib build option alongside bin and ext modes
- 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