You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: TOLERANT_TODO.md
+8-10Lines changed: 8 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -18,8 +18,8 @@ All major PHP 8.3 features are implemented and tested:
18
18
19
19
-**Dynamic class constant fetch** (`Foo::{expr}`): ✅ **COMPLETE** - verified via `tests/samples/dynamic_class_const.php`
20
20
-**Typed class constants**: ✅ **COMPLETE** - including union types (`const int|string VALUE = 3`), tested in `tests/cases/parser/classConstDeclaration*.php`
21
-
-**`#[\Override]` attribute**: attributes already parse, but we should add fixtures to verify tolerant preserves them on methods.
22
-
-**Arbitrary static variable initialisers**: while this is largely semantic, tolerant should accept the new grammar in function-level `static` declarations and update diagnostics if necessary.
21
+
-**`#[\Override]` attribute**: ✅ **COMPLETE** - fixtures added to verify tolerant preserves them on methods, tested in `tests/cases/parser/override-attribute-methods.php`
22
+
-**Arbitrary static variable initialisers**: ✅ **COMPLETE** - tolerant accepts the new grammar for function-level `static` declarations with arbitrary expressions, tested in `tests/cases/parser/static-variable-initializers.php`
23
23
24
24
### PHP 8.4 ✅
25
25
@@ -111,6 +111,8 @@ Recommended sample inputs for AST diffs (update as new fixtures are added):
| Typed class constants |`tests/cases/parser/classConstDeclaration*.php`| 8.3 | ✅ | (run after `sudo newphp 83+`) | same as above |
114
+
| #[\Override] attribute |`tests/cases/parser/override-attribute-methods.php`| 8.3 | ✅ | (run after `sudo newphp 83+`) | same as above |
115
+
| Arbitrary static initializers |`tests/cases/parser/static-variable-initializers.php`| 8.3 | ✅ | (run after `sudo newphp 83+`) | same as above |
114
116
| Property hooks |`tests/samples/property_hooks.php`, `tests/cases/parser/propertyHook*.php`| 8.4 | ✅ | (run after `sudo newphp 84`) | same as above |
115
117
| Asymmetric visibility |`tests/cases/parser84/asymetrical-visiblity.php`| 8.4 | ✅ | (run after `sudo newphp 84`) | same as above |
116
118
| New without parenthesis |`tests/cases/parser84/new-without-parenthesis.php`| 8.4 | ✅ | (run after `sudo newphp 84`) | same as above |
@@ -123,19 +125,15 @@ Recommended sample inputs for AST diffs (update as new fixtures are added):
123
125
124
126
As of October 2025, the tolerant parser now has full support for:
125
127
126
-
-**PHP 8.3**: Dynamic class constant fetch, typed class constants (including union types)
128
+
-**PHP 8.3**: Dynamic class constant fetch, typed class constants (including union types), #[\Override] attribute on methods, arbitrary static variable initializers
127
129
-**PHP 8.4**: Property hooks (with modifiers and edge cases), asymmetric visibility, new without parenthesis, deprecation fixes
128
130
-**PHP 8.5**: Pipe operator, clone with property modifications, final property promotion, extended attribute targets
129
131
130
-
**Test Coverage**: 31,468 tests passing across all PHP versions (8.1-8.5)
132
+
**Test Coverage**: 31,516 tests passing across all PHP versions (8.1-8.5)
131
133
**CI Configuration**: Updated to test on PHP 8.1, 8.2, 8.3, 8.4, 8.5.0RC1-cli
132
134
133
135
## Next Steps
134
136
135
-
All major PHP 8.3, 8.4, and 8.5 features are now implemented! ✅
137
+
All major PHP 8.3, 8.4, and 8.5 features are now fully implemented and tested! ✅
136
138
137
-
Additional tasks:
138
-
139
-
4. Run Phan's fallback parser tests (`./tests/run_test __FakeSelfFallbackTest`) to verify parity with php-ast
140
-
5. Add fixtures for `#[\Override]` attribute on methods
141
-
6. Test arbitrary static variable initializers
139
+
The tolerant parser is feature-complete for PHP 8.1-8.5 with comprehensive test coverage.
0 commit comments