- Added nativeBoolLiteral method to convert PHP boolean literals to C++ bool
- Updated parseCompareExpr to use native boolean literals for bool type
- Ensured strict comparisons between booleans use true/false instead of php::true_/php::false_
- Added test case for boolean literal identical comparisons
- Created compiler test to verify native boolean operand usage
- Added test file with boolean literal comparison examples
- Remove static constant lookup logic from parseConstFetch method
- Add support for unqualified constants in namespaces with runtime fallback mechanism
- Implement UnqualifiedInNamespace constant lookup strategy for proper PHP behavior
- Update test cases to verify runtime constant resolution works correctly
- Add comprehensive test coverage for namespace constant fallback scenarios
- Remove isValidDefineName validation in favor of direct string checking
- Support define() calls with namespaced and non-identifier constant names
- Add proper error handling for undefined constants in namespaces
- Update ReturnInfo::equalsApartFromPhpDocAndRefcount to consider PHPDoc types
in arginfo equivalence checks to prevent incorrect Reflection type exposure
- Rename method from equalsApartFromPhpDocAndRefcount to equalsApartFromRefcount
for better clarity and consistency
- Modify Translator.php to use hasClass and hasInterface methods instead of
symbols->hasClass and symbols->hasInterface for proper dependency resolution
- Add comprehensive tests for class registration preserving reverse inheritance
- Add tests for magic methods with implicit return types maintaining distinct
Zend arginfo during registration
- Include tests for interface registration handling child-before-parent scenarios
- Add cross-namespace interface dependency resolution tests
- Create diamond inheritance pattern registration preservation tests
- Simplified concat assignment logic by checking for Concat instance directly instead of flattening
- Changed SelectionExpressionTrait to use parseExprAsValue for ternary branches
- Added proper handling of void branch conversion to null in ternary expressions
- Added tests for concat assignment to inherited properties
- Added tests for ternary expressions with void branches and side effects
Cherry-pick of upstream 84ad3a5. The generator return type covariance
change is built on yurun's Translator.php, which diverged from
origin/master, so the files are materialized from the upstream commit
directly (they already include the cc25d71 FiberGenerator change).
- isReturnTypeOverrideCompatible now performs full covariance: every value
the child can return must be acceptable under the parent's declared
return type (nullable/union narrowing allowed).
- Add getReturnAcceptedTypes/isReturnTypeSubtype/isReturnTypeCoveredBy/
isReturnTypeEntryCompatible helpers; generators use their source-level
declared return type so interface/abstract covariance checks hold.
- FunctionDef gains declaredReturnType/declaredReturnClass/declaredReturnTypeCheck.
Regression tests: interface-return-type.phpt, interface-return-type-variants.phpt.
- Added check for staticVars when processing closure use references
- Prevented redeclaration of static variables as local variables in closures
- Updated variable resolution logic to include static variable scope
- Added comprehensive test case for static variable closure reference behavior
- Fixed variable name collision in preprocessor class constant handling
- Updated version number to 0.4.1
- Simplified test case prop-001 to focus on short-circuit evaluation
- Updated expected output values in object property tests
- Modified dynamic call return tests to expect 'user' instead of 'foo'
- Removed skip conditions and extensive test suite documentation
- Kept core functionality testing for isset and assignment operations
- Renamed ExtensionProvider attribute to MethodsFor across all test files
- Updated keyword extension tests to use MethodsFor instead of ExtensionProvider
- Modified universal method extension tests to reflect the attribute name change
- Adjusted stream method extension tests to use new attribute naming
- Changed object extension tests to use MethodsFor attribute
- Updated constant expression validation logic for PHP 8.3+ static initializers
- Added support for dynamic static variable initializers in PHP 8.3 and later
- Removed
- Implemented expected() and unexpected() compile-time functions for branch prediction hints
- Added C++ macro generation for EXPECTED(...) and UNEXPECTED(...) in compiled output
- Updated documentation to include new branch prediction functions
- Added comprehensive tests for branch prediction macro generation
- Modified compiler base to handle expected/unexpected function type detection
- Added parser support for branch prediction function calls with proper argument validation
- Included polyfill implementations for expected and unexpected functions
- Updated version number from 1086 to 1087
- Fixed zend_update_property call to use correct class entry variable
- Refactored object creation logic to delegate to parent allocator when needed
- Added parentHasCustomCreateObjectOnPhp84 method to detect parent class properties
- Simplified create object handler implementation using typephp_create_object_with_defaults
- Updated property initialization to work properly with asymmetric visibility
- Modified test case to include options property verification in inheritance scenario
- Add canConsumeWrapperArgument method to determine when arguments can be consumed
- Modify argument passing logic to use php::takeValue for consumable arguments
- Support variadic arguments and specific types (mixed, string, array, object) for consumption
- Preserve reference arguments without consumption to maintain memory safety
- Add comprehensive test coverage for argument move semantics
- Create test files to verify correct argument handling in wrapper generation
- Modified multi_return_repeated_value function to return three values instead of two
- Updated variable assignment to include $tail value in return statement
- Changed destructuring assignment to handle three returned values
- Updated expected output in test cases to include the additional tail value
- Modified PHPUnit test assertions to match new three
perf(compiler): optimize multi-return tuple assignment with move semantics
- Replace temporary Var construction with direct tuple element assignment
- Implement std::move for final local variable uses to avoid unnecessary copies
- Track remaining variable uses to determine when to apply move semantics
- Preserve PHP value-assignment semantics for references and indirect zvals
- Add comprehensive test coverage for tuple multi-return scenarios
- Include tests for repeated values, references, globals, and static variables
```