Repository navigation
Conversation
Confidence Score: 3/5[Medium risk] Rejects late-static Promoted constructor defaults still miss the check and fail in the backend, and the SummaryProperty defaults now go through the class-constant lexical walker.
Diagramflowchart LR
prop["property default"] --> check["validate_lexical_property_default"]
check --> walk["rewrite_expr"]
walk --> reject["static::class error"]
walk --> keep["keep original expression"]
keep --> schema["apply_properties"]
Findings
Last reviewed commit: 5bcbb5a |
fc18c54 to
62c5d03
Compare
Confidence Score: 2/5[High risk] Rejects Early-bound defaults still do not compile or print the class name, and a trait SummaryProperty defaults, including nested arrays, now go through the class-constant lexical walker.
Earlier review on Diagramflowchart LR
decl["property or promoted default"] --> walk["rewrite_expr"]
walk --> drop["discard rewrite"]
drop --> keep["keep self or parent"]
keep --> objectNew["object_new literal default"]
keep --> callSite["new call site"]
traitUse["trait copied into class"] --> parentCheck["missing parent compile error"]
Findings
Last reviewed commit: 62c5d03 |
ab8fd46 to
8fe7795
Compare
Confidence Score: 2/5[High risk] Binds Direct SummaryProperty defaults, including nested arrays and promoted constructor parameters, are rewritten to early-bound class names before initialization.
Earlier review on Findings
Diagramflowchart LR
decl["property or promoted default"] --> bind["normalize_property_default_in_scope"]
bind --> literal["string literal self or parent"]
bind --> reject["compile error"]
traitUse["trait parent on class with no parent"] --> flag["deferred_property_default_error"]
flag --> init["new, static access, by-name alloc"]
flag --> dropDefault["stored default becomes None"]
Last reviewed commit: c782151 |
c782151 to
1fd5d84
Compare
|
Review follow-up published at 1fd5d84, aligned with main 9e7cad3. Both current P1 findings are fixed and regression-tested, including native reflection inside dynamic eval. The three source failures in the previous CI run are reproduced and corrected without weakening their fixtures. 44 focused checks and the full builtin documentation audit pass locally. The new complete matrix is pending, so this PR remains draft. |
Confidence Score: 2/5High risk Deferred missing-parent defaults are preserved for properties and calls, but parameter reflection and trait reflection metadata still disagree with PHP.
SummaryProperty and method defaults now keep lexical
Diagramflowchart LR
src["parent default"] --> split{"receiver"}
split -->|"static::"| compile["compile error"]
split -->|"direct parent::class"| useErr["compile error: Cannot use"]
split -->|"parent::CONST or trait parent::class"| defer["throw new Error stored on class signature"]
defer --> call["omitted argument throws Error"]
defer --> prop["ReflectionProperty DeferredError"]
defer --> param["ReflectionParameter default_value None"]
trait["trait snapshot keeps raw parent::class"] --> meta["ReflectionClass emits __traits"]
meta --> abort["codegen: parent receiver in trait"]
Findings
Earlier findings
Last reviewed commit: 1fd5d84 |
|
@greptile review |
|
@greptile review |
|
@greptile review |
|
@greptile review |
|
@greptile review |
|
@greptile review |
|
@greptile review |
|
@greptileai Please review current head 5601227 after integration with main and the deferred-default compound-order fix. Grok review is clean on this exact head. Focused strict-heap IR-on/off, metadata-aware DCE and all-five-target checks pass. Draft remains until fresh review and complete CI pass. |
|
@greptile-apps please review the current head bdab1d8. The integer-minimum expression encoding is fixed, with baseline-failing native/eval regression tests. The computed string-index claim was independently traced through parser-generated PhpLocal ownership and is covered by heap-clean throw regressions in both IR modes. Grok review is clean on this exact head. |
Summary
Reject late-static property defaults while preserving lexical self/parent binding and PHP's declaration-versus-materialization boundary. Ordinary missing-parent constants produce a lazy catchable access Error; trait-imported class-name defaults preserve their distinct use Error. Reflection retains deferred default presence per slot, including native metadata accessed through dynamic eval.
Fix the confirmed CI regressions: inline ReflectionClass metadata guards now borrow their receiver, and ReflectionParameter retains the original self::/parent:: constant spelling.
Closes #1539
Validation