Skip to content

Commit 05b199b

Browse files
committed
Update roadmap
1 parent 664898d commit 05b199b

6 files changed

Lines changed: 368 additions & 155 deletions

File tree

docs/todo.md

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ within the same impact tier.
2727
| B21 | [Builder `__call` return type drops chain type for dynamic `where{Column}` calls](todo/bugs.md#b21-builder-__call-return-type-drops-chain-type-for-dynamic-wherecolumn-calls) | Medium | Medium |
2828
| H17 | [`missingType.iterableValue` — add `@return` with inferred element type](todo/phpstan-actions.md#h17-missingtype-iterablevalue-return-type--add-return-with-iterable-type) | Medium | High |
2929
| H10 | [`return.unusedType` — remove unused type from return union](todo/phpstan-actions.md#h10-returnunusedtype--remove-unused-type-from-return-union) | Medium | Medium |
30+
| L12 | [`App::make` / `App::makeWith` class-string return type dispatch](todo/laravel.md#l12-appmake--appmakewith-class-string-return-type-dispatch) | Medium | Low |
31+
| H6 | `return.type` — update return type to match actual returns | Medium | Medium |
3032
| | **Release 0.7.0** | | |
3133

3234
## Sprint 5 — Polish for office adoption
@@ -92,6 +94,9 @@ unlikely to move the needle for most users.
9294
| C6 | `#[ExpectedValues]` parameter value suggestions | Low | Medium |
9395
| C10 | [Deprecation markers on class-name completions from all sources](todo/completion.md#c10-deprecation-markers-on-class-name-completions-from-all-sources) | Low | Low |
9496
| | **[Type Inference](todo/type-inference.md)** | | |
97+
| T19 | [Structured type representation](todo/type-inference.md#t19-structured-type-representation) (replace string-based types with `PhpType` enum) | High | Very High |
98+
| T20 | [Type narrowing reconciliation engine](todo/type-inference.md#t20-type-narrowing-reconciliation-engine) (sure/sureNot tracking, AND/OR algebra) | Medium-High | High |
99+
| T21 | [Bidirectional template inference](todo/type-inference.md#t21-bidirectional-template-inference-upperlower-bounds) (upper/lower bounds, variance) | Medium | Medium-High |
95100
| T6 | `Closure::bind()` / `Closure::fromCallable()` return type preservation | Low-Medium | Low-Medium |
96101
| T12 | [Intersection types flattened to unions by `type_strings_joined`](todo/type-inference.md#t12-intersection-types-flattened-to-unions-by-type_strings_joined) | Low-Medium | Low (after M4) |
97102
| T13 | [Closure variables lose callable signature detail](todo/type-inference.md#t13-closure-variables-lose-callable-signature-detail) | Low-Medium | Medium |
@@ -103,20 +108,26 @@ unlikely to move the needle for most users.
103108
| | **[Diagnostics](todo/diagnostics.md)** | | |
104109

105110
| D5 | Diagnostic suppression intelligence | Medium | Medium |
111+
| D12 | [Mago linter integration](todo/diagnostics.md#d12-mago-linter-integration-optional-diagnostics) (optional, ~159 AST-only lint rules) | Medium | Medium |
106112
| D6 | [Unreachable code diagnostic](todo/diagnostics.md#d6-unreachable-code-diagnostic) | Low-Medium | Low |
107113
| D10 | PHPMD diagnostic proxy | Low | Medium |
108114
| | **[Bug Fixes](todo/bugs.md)** | | |
109115
| | **[Code Actions](todo/actions.md)** | | |
110116
| A8 | [Update docblock to match signature](todo/actions.md#a8-update-docblock-to-match-signature) | Medium | Medium |
111-
| A6 | [Inline function/method](todo/actions.md#a6-inline-functionmethod) | Medium | High |
112117
| A16 | [Snippet placeholder for extracted method name](todo/actions.md#a16-snippet-placeholder-for-extracted-method-name) (lets the user type over the generated name immediately) | Medium | Low-Medium |
118+
| A25 | [`strpos``str_contains`](todo/actions.md#a25-strpos--str_contains-php-80) (PHP 8.0+) | Medium | Low |
119+
| A28 | [Explicit nullable parameter type](todo/actions.md#a28-explicit-nullable-parameter-type-php-84-deprecation) (PHP 8.4 deprecation) | Medium | Low |
113120
| A10 | [Generate interface from class](todo/actions.md#a10-generate-interface-from-class) | Low-Medium | Medium |
121+
| A29 | [Simplify boolean return](todo/actions.md#a29-simplify-boolean-return) (`if (cond) return true; return false;``return cond;`) | Low-Medium | Medium |
122+
| A31 | [Remove always-else](todo/actions.md#a31-remove-always-else-extract-guard-clause) (extract guard clause) | Low-Medium | Medium |
123+
| A34 | [Unified code action handler architecture](todo/actions.md#a34-unified-code-action-handler-architecture) (closure-based resolve, unified fix type) | Medium | Medium-High |
114124
| A3 | Switch → match conversion | Low | Medium |
115125
| | **[PHPStan Code Actions](todo/phpstan-actions.md)** | | |
116126
| H4 | `assign.byRefForeachExpr` — unset by-reference foreach variable | Medium | Medium |
117127
| H13 | `property.notFound` — declare missing property (same-class) | Medium | Medium |
118128
| H15 | Template bound from tip — add `@template T of X` | Medium | Medium |
119129
| H16 | `match.unhandled` — add missing match arms | Medium | Medium |
130+
| H17 | `missingType.iterableValue` — add `@return` with inferred element type | Medium | High |
120131
| H19 | `property.unused` / `method.unused` — remove unused member | Low | Low |
121132
| H20 | `generics.callSiteVarianceRedundant` — remove redundant variance annotation | Low | Low |
122133
| H23 | `instanceof.alwaysTrue` — remove redundant instanceof check | Low | Low |
@@ -168,6 +179,7 @@ unlikely to move the needle for most users.
168179
| P8 | `find_class_in_ast_map` linear fallback scan | Low | Low |
169180
| P12 | [`find_or_load_function` Phase 1.75 serial bottleneck](todo/performance.md#p12-find_or_load_function-phase-175-serial-bottleneck) | Low | Low |
170181
| P17 | [`mago-names` resolution on the parse hot path](todo/performance.md#p17-mago-names-resolution-on-the-parse-hot-path) | Medium | Low |
182+
| P18 | [Subtype result caching](todo/performance.md#p18-subtype-result-caching) (per-request HashMap for hierarchy walks) | Medium | Low |
171183
| | **[Indexing](todo/indexing.md)** | | |
172184
| X1 | Staleness detection and auto-refresh | Medium | Medium |
173185
| X3 | Completion item detail on demand (`completionItem/resolve`) | Medium | Medium |

0 commit comments

Comments
 (0)