Releases: bmewburn/vscode-intelephense
Releases Β· bmewburn/vscode-intelephense
1.17.7
1.17.6
[1.17.6 - 2026-04-19]
Changed
- Indexing now uses LSP work done
$/progressnotifications instead of custom notifications. - Indexer file queue processing debounce increased to 500ms.
- On-type diagnostics debounce reduced to 1000ms.
Fixed
- Empty array shapes showing parse error.
- Should not narrow variable type when using
is_aandis_subclass_ofwith$allow_stringvalue oftrueand variable type ofstring. - Editing a file causing promoted properties to become undefined.
- Editing a file causing definition location inaccuracies.
- Duplicate/unecessary indexing when responding to file change events.
- Editing a file causing anonymous class type hierarchy bug.
1.17.5
[1.17.5 - 2026-04-08]
Added
throwDepthsetting to control maximum call depth when analysingthrowexpressions. Defaults to0(current call declaration body only). Max10. Higher values may impact performance.
Changed
- Methods declared with
@methodwith no return type are given return type ofvoidinstead ofmixed. @paramtype is now optional.- Tweaked suggestion order.
Fixed
- False no type information available diagnostic when property/parameter inherits documented type.
- False method compatibility error when a trait method and interface method return
self. boolsubject type not expanded totrue|falsewhen comparing totruein conditional type.- No import quickfix for undefined PHPDoc types.
- Incorrect method description shown in hover when multiple methods of same name are declared using
@method. - Array access type inferred as
mixedwhen subject is a template type with array shape constraint. - False undefined phpdoc type in constant unions.
1.17.4
[1.17.4 - 2026-03-23]
Added
- More diagnostics.
- Setting
intelephense.diagnostics.suspectCodeto control whether suspected problems in the code should be reported. Diagnostics grouped under this setting include duplicate array keys, duplicate switch/match cases, loop variable overwriting,voidassignment, assignments in control expressions. - Find all references and rename now works for variable references listed in
compactarguments. - Setting to control if method override/implementation suggestions should include a placeholder method body --
intelephense.completion.withMethodBody. Defaults totrue. - Partial support for custom assertions.
@assert,@psalm-assert,@phpstan-assertand*-if-falseand*-if-truevariants supported. Only type assertion of simple variable arguments is currently supported. For example@assert string $paramand passing$varas the argument. Multiple assertions targeting the same parameter are not supported, ie, adding both an*-if-trueAND*-if-falseannotation.
Changed
- Method override/implementation suggestions now include
#[Override]attribute when PHP target version is 8.3+. To disable adding this attribute setintelephense.completion.withOverrideAttributetofalse. - Improved how unused variable reporting works when
compactis encountered. - Improved type inference of array elements when key is a simple variable.
- Improved template type resolution for templates that appear in constraints of other templates.
- Find all implementations now works for all methods, previously it was restricted to abstract or interface declared methods.
- Find all declarations will now get the root declaration(s) in a type hierarchy regardless of whether it is an interface or abstract declaration.
- Crash telemetry now defaults to disabled.
Fixed
- False method compatibility error with abstract trait method and base class with final method implementation.
- Highlight not working when origin is variadic parameter in PHPDoc.
- Added back auto prefix
$to variable renames if applicable. - Reference/rename not working for variables in anonymous class declaration argument list.
1.17.3
[1.17.3 - 2026-03-04] - Pre-release
Added
- Setting
intelephense.diagnostics.suppressUndefinedMembersWhenMagicMethodDeclaredto configure if undefined method and property diagnostics should be suppressed if magic methods are declared. Defaults totrue. - Setting
intelephense.diagnostics.severityto configure the severity of each diagnostic. - Setting
intelephense.diagnostics.strictTypesto configure type checks to be performed as ifdeclare(strict_types=1)has been declared in every file. Defaults tofalse. - Setting
intelephense.diagnostics.excludeto disable some or all diagnostics on a per file basis.
Fixed
- Various control flow analysis and type inference issues.
- PHPDoc completion missing
@throwsor showing@throws mixed.
1.17.2
[1.17.2 - 2026-02-23] Pre-release
Added
- More diagnostics.
- PHP 8.5
(void)cast.
Changed
- Updated stubs.
Fixed
- False namespace declaration must be first statement when doc block preceedes declaration.
- False ctor cannot declare return type error for anon function.
class_aliasaliases not recognised ifclassconstant used to declare alias name.- Templates in
@param-closure-thisnot resolved. - False possible undefined variable after try-catch-finally block.
1.17.1
[1.17.1 - 2026-02-18] Pre-release
Added
- More diagnostics.
Fixed
- Various diagnostic fixes.
- Implement all abstract methods not working for anonymous classes.
- Incorrect array creation type inference when one or more elements is a union type.
- Constant values not being computed when declared using an expression rather than a literal value.
1.17.0
[1.17.0 - 2026-02-09] Pre-release
Added
- Inline values provider for better synergy with xdebug extension.
- Support for
@mixinwith an intersection type. - Support for
value-of<T>type. - Support for default template type arguments eg
@template T of bool = false. - More diagnostics.
Changed
- Signature help now uses short type names instead of fully qualified type names to increase legibility.
- Variables can be now renamed to expressions, for example
$value=>$this->value. - When not provided by the client, default storage will be the following:
- *nix
- storagePath -
$XDG_CONFIG_HOME/intelephense/workspace/or$HOME/.config/intelephense/workspace/ - globalStoragePath -
$XDG_CONFIG_HOME/intelephense/global/or$HOME/.config/intelephense/global/ - licenceKey -
$globalStoragePath/licence.txtor$globalStoragePath/license.txt
- storagePath -
- Windows
- storagePath -
%AppData%/intelephense/workspace/or%UserProfile%/intelephense/workspace/ - globalStoragePath -
%AppData%/intelephense/global/or%UserProfile%/intelephense/global/ - licenceKey -
$globalStoragePath/licence.txtor$globalStoragePath/license.txt
- storagePath -
- *nix
Fixed
- Conditional type where a parameter template type is the subject yielding unexpected type when argument is a union.
- Closure
staticreturn type resolved too early. - False type error when comparing an array shape to a typed array.
- Various diagnostics issues.
1.16.5
[1.16.5 - 2026-02-02]
Fixed
CodeActionContext.onlybeing ignored for some code actions.- Global function and constant suggestions prefixed with
\when not configured to. - Implementations code lens not working for hooked properties.
- Document highlight not working when origin is within phpdoc.
- Abstract hooked properties not reported as not implemented.
- PHPDoc immediately following another PHPDoc being ignored in class member lists.
1.16.4
[1.16.4 - 2026-01-16]
Fixed
- Bad parsing of
@paramunion type when followed by by-reference parameter. - Template types not resolving to boolean literals.
xorbreaking language intelligence in subsequent code.- Anonymous class methods being added as object shape properties.
- Variable hover contains
@varinformation for other variables when using array destructure syntax. - Index access types not resolved in some contexts.
- Property type being lost when there is both an annotated and declared property of the same name.
- Type alias that references another type alias not resolved fully.
- Variable types reported as
neverincatchblocks if there are no assignment expressions intryblock. - Type hinting
$thisas a union type ignored. - Function FQSEN in
@seenot recognised. - Dot files not being excluded even though they match an exclude glob.
- PHPDoc optional closure parameters not parsed correctly.