-
The minimum PHP version was raised to PHP 8.1.17.
-
Dictionaries were refactored and are now automatically generated and validated with the new
bin/gen_callmap.shscript, see here » for the full documentation. -
[BC] The configuration settings
ignoreInternalFunctionFalseReturnandignoreInternalFunctionNullReturnare now defaulted tofalse -
[BC] Switched the internal representation of
list<T>andnon-empty-list<T>from the TList and TNonEmptyList classes to an unsealed list shape: the TList, TNonEmptyList and TCallableList classes were removed. Nothing will change for users: thelist<T>andnon-empty-list<T>syntax will remain supported and its semantics unchanged. Psalm 5 already deprecates theTList,TNonEmptyListandTCallableListclasses: use\Psalm\Type::getListAtomic,\Psalm\Type::getNonEmptyListAtomicand\Psalm\Type::getCallableListAtomicto instantiate list atomics, or directly instantiate TKeyedArray objects withis_list=truewhere appropriate. -
[BC] The only optional boolean parameter of
TKeyedArray::getGenericArrayTypewas removed, and was replaced with a string parameter with a different meaning. -
[BC] The
TDependentListKeytype was removed and replaced with an optional property of theTIntRangetype. -
[BC]
TCallableArrayandTCallableListremoved and replaced withTCallableKeyedArray. -
[BC] Class
Psalm\Issue\MixedInferredReturnTypewas removed -
[BC] Value of constant
Psalm\Type\TaintKindGroup::ALL_INPUTchanged to reflect newTaintKind::INPUT_EXTRACT,TaintKind::INPUT_SLEEPandTaintKind::INPUT_XPATHhave been added. Accordingly, default values for$taintparameters ofPsalm\Codebase::addTaintSource()andPsalm\Codebase::addTaintSink()have been changed as well. -
[BC] Property
Config::$shepherd_hostwas replaced withConfig::$shepherd_endpoint -
[BC] Methods
Codebase::getSymbolLocation()andCodebase::getSymbolInformation()were replaced withCodebase::getSymbolLocationByReference() -
[BC] Method
Psalm\Type\Atomic\TKeyedArray::getList()was removed -
[BC] Method
Psalm\Storage\FunctionLikeStorage::getSignature()was replaced withFunctionLikeStorage::getCompletionSignature() -
[BC] Property
Psalm\Storage\FunctionLikeStorage::$unused_docblock_paramswas replaced withFunctionLikeStorage::$unused_docblock_parameters -
[BC] Method
Plugin\Shepherd::getCurlErrorMessage()was removed -
[BC] Property
Config::$find_unused_codechanged default value from false to true -
[BC] Property
Config::$find_unused_baseline_entrychanged default value from false to true -
[BC] The return type of
Psalm\Internal\LanguageServer\ProtocolWriter#write() changed fromAmp\Promisetovoid` due to the switch to Amp v3 -
[BC] All parameters, properties and return typehints are now strictly typed.
-
[BC]
strict_typesis now applied to all files of the Psalm codebase. -
[BC] Properties
Psalm\Type\Atomic\TLiteralFloat::$valueandPsalm\Type\Atomic\TLiteralInt::$valuebecame typed (floatandintrespectively) -
[BC] Property
Psalm\Storage\EnumCaseStorage::$valuechanged fromint|string|nulltoTLiteralInt|TLiteralString|null -
[BC]
Psalm\CodeLocation\Raw,Psalm\CodeLocation\ParseErrorLocation,Psalm\CodeLocation\DocblockTypeLocation,Psalm\Report\CountReport,Psalm\Type\Atomic\TNonEmptyArrayare now all final. -
[BC]
Psalm\Configis now final. -
[BC] The return type of
Psalm\Plugin\ArgTypeInferer::inferchanged fromUnion|falsetoUnion|null -
[BC] The
extra_typesproperty andsetIntersectionTypesmethod ofPsalm\Type\Atomic\TTypeAliaswere removed. -
[BC] Methods
convertSeverityandcalculateFingerprintofPsalm\Report\CodeClimateReportwere removed.
-
[BC] Shaped arrays can now be sealed: this brings many assertion improvements and bugfixes, see the docs for more info.
-
[BC] All atomic types,
Psalm\Type\Union,Psalm\CodeLocationand storages are fully immutable, use the new setter methods or the new constructors to change properties: these setter methods will return new instances without altering the original instance.
Full immutability fixes a whole class of bugs that occurred in multithreaded mode, you can now feel free to use--threads=$(nproc);) Full immutability also makes Psalm run faster, even in single-threaded mode, by removing all superfluousclones! For this purpose,__clonewas also made private, forbidding the cloning of atomics, unions and storages (an old and brittle pattern used to avoid side-effects caused by mutability). -
[BC]
Psalm\Type\Unions are now fully immutable, pre-existing in-place mutator methods were removed and moved intoPsalm\Type\MutableUnion.
To modify a union type, usage of the new setter methods inPsalm\Type\Unionis strongly recommended.
When many consecutive property sets are required, usePsalm\Type\Union::setPropertiesmethod to avoid creating a new instance for each set.
All setter methods will return a new instance of the type without altering the original instance.
If many property sets are required throughout multiple methods on a single Union instance, usePsalm\Type\Union::getBuilderto turn aPsalm\Type\Unioninto aPsalm\Type\MutableUnion: once you're done, usePsalm\Type\MutableUnion::freezeto get a newPsalm\Type\Union.
Methods removed fromPsalm\Type\Unionand moved intoPsalm\Type\MutableUnion:replaceTypesaddTyperemoveTypesubstitutereplaceClassLike
-
[BC]
Psalm\Type\TypeNode::getChildNodes()was removed, usePsalm\Type\Union::getAtomicTypes()to get the types of a union, and usePsalm\Type\TypeVisitorwith the newPsalm\Type\MutableTypeVisitorclass to iterate over a type tree. -
[BC]
Psalm\Type\TypeVisitoris now fully immutable, implementors MUST NOT alter type nodes during iteration: usePsalm\Type\MutableTypeVisitorif type node mutation is desired. -
[BC] TPositiveInt has been removed and replaced by TIntRange
-
[BC] Property
Psalm\Config::$cache_directoryis now internal. UsePsalm\Config::getCacheDirectory()instead. -
[BC] The parameter
$php_versionofPsalm\Type\Atomic::create()renamed to$analysis_php_version_idand changed fromarray|nulltoint|null. Previously it accepted PHP version asarray{major_version, minor_version}while now it accepts version ID, similar to howPHP_VERSION_IDis calculated. -
[BC] The parameter
$php_versionofPsalm\Type::parseString()renamed to$analysis_php_version_idand changed fromarray|nulltoint|null. Previously it accepted PHP version asarray{major_version, minor_version}while now it accepts version ID. -
[BC] Parameter 0 of
canBeFullyExpressedInPhp()of the classes listed below changed name fromphp_major_versiontoanalysis_php_version_id. Previously it accepted major PHP version as int (e.g.7), while now it accepts version ID. Classes affected:Psalm\Type\AtomicPsalm\Type\Atomic\ScalarPsalm\Type\Atomic\TArrayPsalm\Type\Atomic\TArrayKeyPsalm\Type\Atomic\TCallablePsalm\Type\Atomic\TCallableObjectPsalm\Type\Atomic\TCallableStringPsalm\Type\Atomic\TClassConstantPsalm\Type\Atomic\TClassStringPsalm\Type\Atomic\TClassStringMapPsalm\Type\Atomic\TClosedResourcePsalm\Type\Atomic\TClosurePsalm\Type\Atomic\TConditionalPsalm\Type\Atomic\TDependentGetClassPsalm\Type\Atomic\TDependentGetDebugTypePsalm\Type\Atomic\TDependentGetTypePsalm\Type\Atomic\TDependentListKeyPsalm\Type\Atomic\TEnumCasePsalm\Type\Atomic\TFalsePsalm\Type\Atomic\TGenericObjectPsalm\Type\Atomic\TIntMaskPsalm\Type\Atomic\TIntMaskOfPsalm\Type\Atomic\TIntRangePsalm\Type\Atomic\TIterablePsalm\Type\Atomic\TKeyedArrayPsalm\Type\Atomic\TKeyOfPsalm\Type\Atomic\TListPsalm\Type\Atomic\TLiteralClassStringPsalm\Type\Atomic\TLowercaseStringPsalm\Type\Atomic\TMixedPsalm\Type\Atomic\TNamedObjectPsalm\Type\Atomic\TNeverPsalm\Type\Atomic\TNonEmptyLowercaseStringPsalm\Type\Atomic\TNonspecificLiteralIntPsalm\Type\Atomic\TNonspecificLiteralStringPsalm\Type\Atomic\TNullPsalm\Type\Atomic\TNumericPsalm\Type\Atomic\TNumericStringPsalm\Type\Atomic\TObjectPsalm\Type\Atomic\TObjectWithPropertiesPsalm\Type\Atomic\TResourcePsalm\Type\Atomic\TScalarPsalm\Type\Atomic\TTemplateIndexedAccessPsalm\Type\Atomic\TTemplateParamPsalm\Type\Atomic\TTraitStringPsalm\Type\Atomic\TTruePsalm\Type\Atomic\TTypeAliasPsalm\Type\Atomic\TValueOfPsalm\Type\Atomic\TVoidPsalm\Type\Union
-
[BC] Parameter 3 of
toPhpString()of methods listed below changed name fromphp_major_versiontoanalysis_php_version_id. Previously it accepted major PHP version as int (e.g.7), while now it accepts version ID. Classes affected:Psalm\Type\AtomicPsalm\Type\Atomic\CallableTraitPsalm\Type\Atomic\TAnonymousClassInstancePsalm\Type\Atomic\TArrayPsalm\Type\Atomic\TArrayKeyPsalm\Type\Atomic\TBoolPsalm\Type\Atomic\TCallablePsalm\Type\Atomic\TCallableObjectPsalm\Type\Atomic\TClassConstantPsalm\Type\Atomic\TClassStringPsalm\Type\Atomic\TClassStringMapPsalm\Type\Atomic\TClosedResourcePsalm\Type\Atomic\TConditionalPsalm\Type\Atomic\TEmptyPsalm\Type\Atomic\TEnumCasePsalm\Type\Atomic\TFloatPsalm\Type\Atomic\TGenericObjectPsalm\Type\Atomic\TIntPsalm\Type\Atomic\TIterablePsalm\Type\Atomic\TKeyedArrayPsalm\Type\Atomic\TKeyOfPsalm\Type\Atomic\TListPsalm\Type\Atomic\TLiteralClassStringPsalm\Type\Atomic\TMixedPsalm\Type\Atomic\TNamedObjectPsalm\Type\Atomic\TNeverPsalm\Type\Atomic\TNullPsalm\Type\Atomic\TNumericPsalm\Type\Atomic\TObjectPsalm\Type\Atomic\TObjectWithPropertiesPsalm\Type\Atomic\TResourcePsalm\Type\Atomic\TScalarPsalm\Type\Atomic\TStringPsalm\Type\Atomic\TTemplateIndexedAccessPsalm\Type\Atomic\TTemplateParamPsalm\Type\Atomic\TTraitStringPsalm\Type\Atomic\TTypeAliasPsalm\Type\Atomic\TValueOfPsalm\Type\Atomic\TVoidPsalm\Type\Union
-
While not a BC break per se, all classes / interfaces / traits / enums under
Psalm\Internalnamespace are now marked@internal. -
[BC] Parameter 1 of
Psalm\Type\Atomic\TNamedObject::__construct()changed name fromwas_statictois_static -
[BC] Parameter 1 of
Psalm\Type\Atomic\TAnonymousClassInstance::__construct()changed name fromwas_statictois_static -
[BC] Parameter 5 of
Psalm\Type::getStringFromFQCLN()changed name fromwas_statictois_static -
[BC] Property
Psalm\Type\Atomic\TNamedObject::$was_staticwas renamed to$is_static -
[BC] Method
Psalm\Type\Union::isFormerStaticObject()was renamed toisStaticObject() -
[BC] Method
Psalm\Type\Union::hasFormerStaticObject()was renamed tohasStaticObject() -
[BC] Function assertions (from
@psalm-assert Foo $bar) have been converted from strings to specificAssertionobjects. -
[BC] Property
Psalm\Storage\ClassLikeStorage::$invalid_dependencieschanged fromarray<string>toarray<string, true>. -
[BC] Property
Psalm\Storage\ClassLikeStorage::$template_extended_countwas renamed to$template_type_extends_count, its type was changed fromint|nulltoarray<string, int>|null. -
[BC] Event classes became final and their constructors were marked
@internal:Psalm\Plugin\EventHandler\Event\AddRemoveTaintsEventPsalm\Plugin\EventHandler\Event\AfterAnalysisEventPsalm\Plugin\EventHandler\Event\AfterClassLikeAnalysisEventPsalm\Plugin\EventHandler\Event\AfterClassLikeExistenceCheckEventPsalm\Plugin\EventHandler\Event\AfterClassLikeVisitEventPsalm\Plugin\EventHandler\Event\AfterCodebasePopulatedEventPsalm\Plugin\EventHandler\Event\AfterEveryFunctionCallAnalysisEventPsalm\Plugin\EventHandler\Event\AfterExpressionAnalysisEventPsalm\Plugin\EventHandler\Event\AfterFileAnalysisEventPsalm\Plugin\EventHandler\Event\AfterFunctionCallAnalysisEventPsalm\Plugin\EventHandler\Event\AfterFunctionLikeAnalysisEventPsalm\Plugin\EventHandler\Event\AfterMethodCallAnalysisEventPsalm\Plugin\EventHandler\Event\AfterStatementAnalysisEventPsalm\Plugin\EventHandler\Event\BeforeFileAnalysisEventPsalm\Plugin\EventHandler\Event\FunctionExistenceProviderEventPsalm\Plugin\EventHandler\Event\FunctionParamsProviderEventPsalm\Plugin\EventHandler\Event\FunctionReturnTypeProviderEventPsalm\Plugin\EventHandler\Event\MethodExistenceProviderEventPsalm\Plugin\EventHandler\Event\MethodParamsProviderEventPsalm\Plugin\EventHandler\Event\MethodReturnTypeProviderEventPsalm\Plugin\EventHandler\Event\MethodVisibilityProviderEventPsalm\Plugin\EventHandler\Event\PropertyExistenceProviderEventPsalm\Plugin\EventHandler\Event\PropertyTypeProviderEventPsalm\Plugin\EventHandler\Event\PropertyVisibilityProviderEventPsalm\Plugin\EventHandler\Event\StringInterpreterEvent
-
[BC]
Atomic::__toString()used to return a string representation of the type that was using double quotes (") to quote literals. This is now using single quotes (') to be more aligned with the rest of the codebase. -
[BC]
Atomic::__toString()is now final -
[BC]
Atomic::__toString()now returns a more detailed version of the type (it callsgetId()under the hood) -
[BC] Atomic::getId() has now a first param $exact. Calling the method with false will return a less detailed version of the type in some cases (similarly to what
__toStringused to return) -
[BC] To remove a variable from the context, use
Context::remove(). Callingunset($context->vars_in_scope[$var_id])can cause problems when using references. -
[BC]
TKeyOfClassConstanthas been renamed toTKeyOf. -
[BC]
TValueOfClassConstanthas been renamed toTValueOf. -
[BC]
TKeyOfTemplatebase class has been changed fromScalartoAtomic. -
[BC] Class
Psalm\FileManipulationbecame final -
[BC] Class
Psalm\Contextbecame final -
[BC]
Psalm\Context#__construct()was marked@internal -
[BC] Class
Psalm\PluginRegistrationSocketbecame final -
[BC] Class
Psalm\PluginFileExtensionsSocketbecame final -
[BC] Class
Psalm\Config\IssueHandlerbecame final -
[BC]
Psalm\Config\IssueHandlerwas marked@internal -
[BC] Class
Psalm\Config\ProjectFileFilterbecame final -
[BC]
Psalm\Config\ProjectFileFilterwas marked@internal -
[BC] Class
Psalm\Config\Creatorbecame final -
[BC]
Psalm\Config\Creatorwas marked@internal -
[BC] Class
Psalm\Config\TaintAnalysisFileFilterbecame final -
[BC]
Psalm\Config\TaintAnalysisFileFilterwas marked@internal -
[BC] Class
Psalm\Config\ErrorLevelFileFilterbecame final -
[BC]
Psalm\Config\ErrorLevelFileFilterwas marked@internal -
[BC] Class
Psalm\FileBasedPluginAdapterbecame final -
[BC]
Psalm\FileBasedPluginAdapterwas marked@internal -
[BC] Class
Psalm\Exception\InvalidMethodOverrideExceptionbecame final -
[BC] Class
Psalm\Exception\UnpopulatedClasslikeExceptionbecame final -
[BC] Class
Psalm\Exception\ConfigNotFoundExceptionbecame final -
[BC] Class
Psalm\Exception\TypeParseTreeExceptionbecame final -
[BC] Class
Psalm\Exception\ComplicatedExpressionExceptionbecame final -
[BC] Class
Psalm\Exception\ScopeAnalysisExceptionbecame final -
[BC] Class
Psalm\Exception\InvalidClasslikeOverrideExceptionbecame final -
[BC] Class
Psalm\Exception\CircularReferenceExceptionbecame final -
[BC] Class
Psalm\Exception\UnsupportedIssueToFixExceptionbecame final -
[BC] Class
Psalm\Exception\CodeExceptionbecame final -
[BC] Class
Psalm\Exception\RefactorExceptionbecame final -
[BC] Class
Psalm\Exception\UnpreparedAnalysisExceptionbecame final -
[BC] Class
Psalm\Exception\IncorrectDocblockExceptionbecame final -
[BC] Class
Psalm\Exception\UnanalyzedFileExceptionbecame final -
[BC] Class
Psalm\Exception\UnresolvableConstantExceptionbecame final -
[BC] Class
Psalm\Exception\FileIncludeExceptionbecame final -
[BC] Class
Psalm\Exception\ConfigCreationExceptionbecame final -
[BC] Class
Psalm\Aliasesbecame final -
[BC]
Psalm\Aliases#__construct()was marked@internal -
[BC] Class
Psalm\Codebasebecame final -
[BC]
Psalm\Codebase#__construct()was marked@internal -
[BC] Class
Psalm\Progress\VoidProgressbecame final -
[BC] Class
Psalm\Progress\DebugProgressbecame final -
[BC] Class
Psalm\Report\JsonReportbecame final -
[BC] Class
Psalm\Report\SonarqubeReportbecame final -
[BC] Class
Psalm\Report\CodeClimateReportbecame final -
[BC] Class
Psalm\Report\CheckstyleReportbecame final -
[BC] Class
Psalm\Report\JsonSummaryReportbecame final -
[BC] Class
Psalm\Report\XmlReportbecame final -
[BC] Class
Psalm\Report\EmacsReportbecame final -
[BC] Class
Psalm\Report\ConsoleReportbecame final -
[BC] Class
Psalm\Report\ReportOptionsbecame final -
[BC] Class
Psalm\Report\PylintReportbecame final -
[BC] Class
Psalm\Report\JunitReportbecame final -
[BC] Class
Psalm\Report\CompactReportbecame final -
[BC] Class
Psalm\Report\GithubActionsReportbecame final -
[BC] Class
Psalm\Report\TextReportbecame final -
[BC] Class
Psalm\Report\SarifReportbecame final -
[BC] Class
Psalm\Report\PhpStormReportbecame final -
[BC] Class
Psalm\Plugin\Shepherdbecame final -
[BC] Class
Psalm\IssueBufferbecame final -
[BC] Class
Psalm\SourceControl\Git\RemoteInfobecame final -
[BC] Class
Psalm\SourceControl\Git\CommitInfobecame final -
[BC] Class
Psalm\SourceControl\Git\GitInfobecame final -
[BC] Class
Psalm\ErrorBaselinebecame final -
[BC]
Psalm\Config#__construct()was marked@internal -
[BC] Class
Psalm\DocCommentbecame final -
All non-abstract issues are now final:
- [BC] Class
Psalm\Issue\InaccessiblePropertybecame final - [BC] Class
Psalm\Issue\TaintedShellbecame final - [BC] Class
Psalm\Issue\PossiblyInvalidIteratorbecame final - [BC] Class
Psalm\Issue\MethodSignatureMustOmitReturnTypebecame final - [BC] Class
Psalm\Issue\TaintedHtmlbecame final - [BC] Class
Psalm\Issue\DuplicateConstantbecame final - [BC] Class
Psalm\Issue\MissingConstructorbecame final - [BC] Class
Psalm\Issue\PossiblyFalseIteratorbecame final - [BC] Class
Psalm\Issue\PossiblyUndefinedArrayOffsetbecame final - [BC] Class
Psalm\Issue\FalseOperandbecame final - [BC] Class
Psalm\Issue\MixedArrayAssignmentbecame final - [BC] Class
Psalm\Issue\MixedArrayAccessbecame final - [BC] Class
Psalm\Issue\TaintedUnserializebecame final - [BC] Class
Psalm\Issue\NullFunctionCallbecame final - [BC] Class
Psalm\Issue\UnusedConstructorbecame final - [BC] Class
Psalm\Issue\InvalidEnumCaseValuebecame final - [BC] Class
Psalm\Issue\MissingClosureReturnTypebecame final - [BC] Class
Psalm\Issue\LessSpecificClassConstantTypebecame final - [BC] Class
Psalm\Issue\MixedPropertyFetchbecame final - [BC] Class
Psalm\Issue\PossiblyNullArrayAccessbecame final - [BC] Class
Psalm\Issue\MissingPropertyTypebecame final - [BC] Class
Psalm\Issue\TaintedCallablebecame final - [BC] Class
Psalm\Issue\PossiblyInvalidMethodCallbecame final - [BC] Class
Psalm\Issue\TaintedHeaderbecame final - [BC] Class
Psalm\Issue\PossiblyInvalidArrayAssignmentbecame final - [BC] Class
Psalm\Issue\PossiblyInvalidCastbecame final - [BC] Class
Psalm\Issue\ImpurePropertyAssignmentbecame final - [BC] Class
Psalm\Issue\MixedPropertyTypeCoercionbecame final - [BC] Class
Psalm\Issue\UnresolvableConstantbecame final - [BC] Class
Psalm\Issue\LoopInvalidationbecame final - [BC] Class
Psalm\Issue\TooManyTemplateParamsbecame final - [BC] Class
Psalm\Issue\InvalidCatchbecame final - [BC] Class
Psalm\Issue\MismatchingDocblockReturnTypebecame final - [BC] Class
Psalm\Issue\PossiblyUndefinedIntArrayOffsetbecame final - [BC] Class
Psalm\Issue\NullArrayAccessbecame final - [BC] Class
Psalm\Issue\NoEnumPropertiesbecame final - [BC] Class
Psalm\Issue\ImpureByReferenceAssignmentbecame final - [BC] Class
Psalm\Issue\RedundantConditionGivenDocblockTypebecame final - [BC] Class
Psalm\Issue\MixedReturnTypeCoercionbecame final - [BC] Class
Psalm\Issue\PossiblyNullOperandbecame final - [BC] Class
Psalm\Issue\InvalidGlobalbecame final - [BC] Class
Psalm\Issue\PossiblyNullArgumentbecame final - [BC] Class
Psalm\Issue\ForbiddenCodebecame final - [BC] Class
Psalm\Issue\RedundantCastbecame final - [BC] Class
Psalm\Issue\UnusedParambecame final - [BC] Class
Psalm\Issue\DuplicateArrayKeybecame final - [BC] Class
Psalm\Issue\MissingImmutableAnnotationbecame final - [BC] Class
Psalm\Issue\MutableDependencybecame final - [BC] Class
Psalm\Issue\MixedPropertyAssignmentbecame final - [BC] Class
Psalm\Issue\DeprecatedTraitbecame final - [BC] Class
Psalm\Issue\InvalidArrayAccessbecame final - [BC] Class
Psalm\Issue\LessSpecificReturnStatementbecame final - [BC] Class
Psalm\Issue\AssignmentToVoidbecame final - [BC] Class
Psalm\Issue\InvalidPropertyAssignmentbecame final - [BC] Class
Psalm\Issue\InvalidFalsableReturnTypebecame final - [BC] Class
Psalm\Issue\IfThisIsMismatchbecame final - [BC] Class
Psalm\Issue\UndefinedPropertyFetchbecame final - [BC] Class
Psalm\Issue\UndefinedMagicPropertyFetchbecame final - [BC] Class
Psalm\Issue\PossiblyUnusedReturnValuebecame final - [BC] Class
Psalm\Issue\PossiblyNullPropertyFetchbecame final - [BC] Class
Psalm\Issue\PossiblyInvalidPropertyFetchbecame final - [BC] Class
Psalm\Issue\MixedClonebecame final - [BC] Class
Psalm\Issue\DuplicateFunctionbecame final - [BC] Class
Psalm\Issue\InaccessibleClassConstantbecame final - [BC] Class
Psalm\Issue\UndefinedGlobalVariablebecame final - [BC] Class
Psalm\Issue\ImplicitToStringCastbecame final - [BC] Class
Psalm\Issue\PossiblyInvalidDocblockTagbecame final - [BC] Class
Psalm\Issue\ReservedWordbecame final - [BC] Class
Psalm\Issue\InvalidOperandbecame final - [BC] Class
Psalm\Issue\UnusedPropertybecame final - [BC] Class
Psalm\Issue\UnevaluatedCodebecame final - [BC] Class
Psalm\Issue\NullPropertyFetchbecame final - [BC] Class
Psalm\Issue\ParamNameMismatchbecame final - [BC] Class
Psalm\Issue\CircularReferencebecame final - [BC] Class
Psalm\Issue\UndefinedThisPropertyFetchbecame final - [BC] Class
Psalm\Issue\NonStaticSelfCallbecame final - [BC] Class
Psalm\Issue\NullOperandbecame final - [BC] Class
Psalm\Issue\MixedAssignmentbecame final - [BC] Class
Psalm\Issue\MixedFunctionCallbecame final - [BC] Class
Psalm\Issue\InvalidTypeImportbecame final - [BC] Class
Psalm\Issue\PossiblyNullArrayOffsetbecame final - [BC] Class
Psalm\Issue\PossiblyInvalidArrayOffsetbecame final - [BC] Class
Psalm\Issue\PossiblyInvalidArgumentbecame final - [BC] Class
Psalm\Issue\UndefinedPropertyAssignmentbecame final - [BC] Class
Psalm\Issue\UnusedReturnValuebecame final - [BC] Class
Psalm\Issue\ImpureFunctionCallbecame final - [BC] Class
Psalm\Issue\RedundantFunctionCallGivenDocblockTypebecame final - [BC] Class
Psalm\Issue\PossiblyInvalidPropertyAssignmentValuebecame final - [BC] Class
Psalm\Issue\PossiblyInvalidOperandbecame final - [BC] Class
Psalm\Issue\ArgumentTypeCoercionbecame final - [BC] Class
Psalm\Issue\OverriddenPropertyAccessbecame final - [BC] Class
Psalm\Issue\PossiblyInvalidArrayAccessbecame final - [BC] Class
Psalm\Issue\UnusedForeachValuebecame final - [BC] Class
Psalm\Issue\ImplementedParamTypeMismatchbecame final - [BC] Class
Psalm\Issue\InvalidConstantAssignmentValuebecame final - [BC] Class
Psalm\Issue\PossiblyUndefinedMethodbecame final - [BC] Class
Psalm\Issue\DuplicateEnumCaseValuebecame final - [BC] Class
Psalm\Issue\RawObjectIterationbecame final - [BC] Class
Psalm\Issue\UndefinedVariablebecame final - [BC] Class
Psalm\Issue\MissingDocblockTypebecame final - [BC] Class
Psalm\Issue\NullArrayOffsetbecame final - [BC] Class
Psalm\Issue\PropertyNotSetInConstructorbecame final - [BC] Class
Psalm\Issue\PossiblyInvalidPropertyAssignmentbecame final - [BC] Class
Psalm\Issue\PossiblyNullPropertyAssignmentValuebecame final - [BC] Class
Psalm\Issue\UnsafeInstantiationbecame final - [BC] Class
Psalm\Issue\UnimplementedAbstractMethodbecame final - [BC] Class
Psalm\Issue\UnusedClosureParambecame final - [BC] Class
Psalm\Issue\PossiblyNullFunctionCallbecame final - [BC] Class
Psalm\Issue\UndefinedAttributeClassbecame final - [BC] Class
Psalm\Issue\NullableReturnStatementbecame final - [BC] Class
Psalm\Issue\DuplicateMethodbecame final - [BC] Class
Psalm\Issue\TooFewArgumentsbecame final - [BC] Class
Psalm\Issue\UndefinedConstantbecame final - [BC] Class
Psalm\Issue\NullReferencebecame final - [BC] Class
Psalm\Issue\ImplementedReturnTypeMismatchbecame final - [BC] Class
Psalm\Issue\InvalidEnumBackingTypebecame final - [BC] Class
Psalm\Issue\InvalidNullableReturnTypebecame final - [BC] Class
Psalm\Issue\ImpureVariablebecame final - [BC] Class
Psalm\Issue\TypeDoesNotContainNullbecame final - [BC] Class
Psalm\Issue\ConstructorSignatureMismatchbecame final - [BC] Class
Psalm\Issue\ImpurePropertyFetchbecame final - [BC] Class
Psalm\Issue\RedundantCastGivenDocblockTypebecame final - [BC] Class
Psalm\Issue\PropertyTypeCoercionbecame final - [BC] Class
Psalm\Issue\InvalidDocblockParamNamebecame final - [BC] Class
Psalm\Issue\UnsafeGenericInstantiationbecame final - [BC] Class
Psalm\Issue\MissingClosureParamTypebecame final - [BC] Class
Psalm\Issue\TraitMethodSignatureMismatchbecame final - [BC] Class
Psalm\Issue\ImpureStaticPropertybecame final - [BC] Class
Psalm\Issue\InvalidThrowbecame final - [BC] Class
Psalm\Issue\ParentNotFoundbecame final - [BC] Class
Psalm\Issue\ImpureStaticVariablebecame final - [BC] Class
Psalm\Issue\PossiblyFalseReferencebecame final - [BC] Class
Psalm\Issue\ComplexMethodbecame final - [BC] Class
Psalm\Issue\PossiblyNullArrayAssignmentbecame final - [BC] Class
Psalm\Issue\AbstractInstantiationbecame final - [BC] Class
Psalm\Issue\UncaughtThrowInGlobalScopebecame final - [BC] Class
Psalm\Issue\MismatchingDocblockPropertyTypebecame final - [BC] Class
Psalm\Issue\UnresolvableIncludebecame final - [BC] Class
Psalm\Issue\DocblockTypeContradictionbecame final - [BC] Class
Psalm\Issue\TaintedEvalbecame final - [BC] Class
Psalm\Issue\UnusedVariablebecame final - [BC] Class
Psalm\Issue\DeprecatedConstantbecame final - [BC] Class
Psalm\Issue\TaintedSystemSecretbecame final - [BC] Class
Psalm\Issue\EmptyArrayAccessbecame final - [BC] Class
Psalm\Issue\UndefinedInterfacebecame final - [BC] Class
Psalm\Issue\MixedInferredReturnTypebecame final - [BC] Class
Psalm\Issue\TaintedCookiebecame final - [BC] Class
Psalm\Issue\UndefinedMagicPropertyAssignmentbecame final - [BC] Class
Psalm\Issue\NamedArgumentNotAllowedbecame final - [BC] Class
Psalm\Issue\MethodSignatureMustProvideReturnTypebecame final - [BC] Class
Psalm\Issue\MissingParamTypebecame final - [BC] Class
Psalm\Issue\InvalidArrayAssignmentbecame final - [BC] Class
Psalm\Issue\UnimplementedInterfaceMethodbecame final - [BC] Class
Psalm\Issue\InvalidPassByReferencebecame final - [BC] Class
Psalm\Issue\MissingDependencybecame final - [BC] Class
Psalm\Issue\ReferenceConstraintViolationbecame final - [BC] Class
Psalm\Issue\TaintedLdapbecame final - [BC] Class
Psalm\Issue\PossiblyNullIteratorbecame final - [BC] Class
Psalm\Issue\InvalidScalarArgumentbecame final - [BC] Class
Psalm\Issue\DeprecatedMethodbecame final - [BC] Class
Psalm\Issue\NullPropertyAssignmentbecame final - [BC] Class
Psalm\Issue\InvalidExtendClassbecame final - [BC] Class
Psalm\Issue\DeprecatedClassbecame final - [BC] Class
Psalm\Issue\ReferenceReusedFromConfusingScopebecame final - [BC] Class
Psalm\Issue\UndefinedFunctionbecame final - [BC] Class
Psalm\Issue\LessSpecificImplementedReturnTypebecame final - [BC] Class
Psalm\Issue\NullIteratorbecame final - [BC] Class
Psalm\Issue\TaintedIncludebecame final - [BC] Class
Psalm\Issue\UnusedMethodCallbecame final - [BC] Class
Psalm\Issue\InvalidIteratorbecame final - [BC] Class
Psalm\Issue\PsalmInternalErrorbecame final - [BC] Class
Psalm\Issue\InvalidParentbecame final - [BC] Class
Psalm\Issue\AmbiguousConstantInheritancebecame final - [BC] Class
Psalm\Issue\InvalidLiteralArgumentbecame final - [BC] Class
Psalm\Issue\MixedReturnStatementbecame final - [BC] Class
Psalm\Issue\AbstractMethodCallbecame final - [BC] Class
Psalm\Issue\InvalidClonebecame final - [BC] Class
Psalm\Issue\DuplicateEnumCasebecame final - [BC] Class
Psalm\Issue\InvalidDocblockbecame final - [BC] Class
Psalm\Issue\RedundantIdentityWithTruebecame final - [BC] Class
Psalm\Issue\MissingReturnTypebecame final - [BC] Class
Psalm\Issue\RedundantConditionbecame final - [BC] Class
Psalm\Issue\UnnecessaryVarAnnotationbecame final - [BC] Class
Psalm\Issue\ConfigIssuebecame final - [BC] Class
Psalm\Issue\InternalClassbecame final - [BC] Class
Psalm\Issue\UndefinedDocblockClassbecame final - [BC] Class
Psalm\Issue\DuplicateParambecame final - [BC] Class
Psalm\Issue\MismatchingDocblockParamTypebecame final - [BC] Class
Psalm\Issue\LessSpecificReturnTypebecame final - [BC] Class
Psalm\Issue\PossiblyUnusedPropertybecame final - [BC] Class
Psalm\Issue\PossiblyNullReferencebecame final - [BC] Class
Psalm\Issue\MissingFilebecame final - [BC] Class
Psalm\Issue\InvalidArgumentbecame final - [BC] Class
Psalm\Issue\PossiblyUndefinedGlobalVariablebecame final - [BC] Class
Psalm\Issue\UndefinedThisPropertyAssignmentbecame final - [BC] Class
Psalm\Issue\ConflictingReferenceConstraintbecame final - [BC] Class
Psalm\Issue\InvalidCastbecame final - [BC] Class
Psalm\Issue\MoreSpecificReturnTypebecame final - [BC] Class
Psalm\Issue\ImpureMethodCallbecame final - [BC] Class
Psalm\Issue\UnrecognizedExpressionbecame final - [BC] Class
Psalm\Issue\NoValuebecame final - [BC] Class
Psalm\Issue\DeprecatedInterfacebecame final - [BC] Class
Psalm\Issue\InvalidStringClassbecame final - [BC] Class
Psalm\Issue\MixedMethodCallbecame final - [BC] Class
Psalm\Issue\UndefinedMagicMethodbecame final - [BC] Class
Psalm\Issue\MissingThrowsDocblockbecame final - [BC] Class
Psalm\Issue\TaintedTextWithQuotesbecame final - [BC] Class
Psalm\Issue\InvalidReturnStatementbecame final - [BC] Class
Psalm\Issue\DeprecatedFunctionbecame final - [BC] Class
Psalm\Issue\InterfaceInstantiationbecame final - [BC] Class
Psalm\Issue\TooManyArgumentsbecame final - [BC] Class
Psalm\Issue\PossibleRawObjectIterationbecame final - [BC] Class
Psalm\Issue\PossiblyFalsePropertyAssignmentValuebecame final - [BC] Class
Psalm\Issue\FalsableReturnStatementbecame final - [BC] Class
Psalm\Issue\RedundantFunctionCallbecame final - [BC] Class
Psalm\Issue\ImplementationRequirementViolationbecame final - [BC] Class
Psalm\Issue\InternalMethodbecame final - [BC] Class
Psalm\Issue\PossiblyInvalidFunctionCallbecame final - [BC] Class
Psalm\Issue\OverriddenMethodAccessbecame final - [BC] Class
Psalm\Issue\MixedArgumentTypeCoercionbecame final - [BC] Class
Psalm\Issue\InvalidAttributebecame final - [BC] Class
Psalm\Issue\UndefinedInterfaceMethodbecame final - [BC] Class
Psalm\Issue\InvalidPropertyFetchbecame final - [BC] Class
Psalm\Issue\PossiblyUnusedMethodbecame final - [BC] Class
Psalm\Issue\UndefinedTracebecame final - [BC] Class
Psalm\Issue\NullArgumentbecame final - [BC] Class
Psalm\Issue\UndefinedMethodbecame final - [BC] Class
Psalm\Issue\TaintedUserSecretbecame final - [BC] Class
Psalm\Issue\UndefinedTraitbecame final - [BC] Class
Psalm\Issue\UnusedClassbecame final - [BC] Class
Psalm\Issue\StringIncrementbecame final - [BC] Class
Psalm\Issue\InaccessibleMethodbecame final - [BC] Class
Psalm\Issue\PossiblyUnusedParambecame final - [BC] Class
Psalm\Issue\Tracebecame final - [BC] Class
Psalm\Issue\UnhandledMatchConditionbecame final - [BC] Class
Psalm\Issue\DuplicateClassbecame final - [BC] Class
Psalm\Issue\InvalidClassbecame final - [BC] Class
Psalm\Issue\TypeDoesNotContainTypebecame final - [BC] Class
Psalm\Issue\InvalidScopebecame final - [BC] Class
Psalm\Issue\TaintedCustombecame final - [BC] Class
Psalm\Issue\TaintedSSRFbecame final - [BC] Class
Psalm\Issue\InvalidNamedArgumentbecame final - [BC] Class
Psalm\Issue\InvalidPropertyAssignmentValuebecame final - [BC] Class
Psalm\Issue\ContinueOutsideLoopbecame final - [BC] Class
Psalm\Issue\MixedArgumentbecame final - [BC] Class
Psalm\Issue\TaintedSqlbecame final - [BC] Class
Psalm\Issue\UnusedFunctionCallbecame final - [BC] Class
Psalm\Issue\InternalPropertybecame final - [BC] Class
Psalm\Issue\InvalidParamDefaultbecame final - [BC] Class
Psalm\Issue\RedundantPropertyInitializationCheckbecame final - [BC] Class
Psalm\Issue\InvalidTraversableImplementationbecame final - [BC] Class
Psalm\Issue\InvalidTemplateParambecame final - [BC] Class
Psalm\Issue\InvalidStaticInvocationbecame final - [BC] Class
Psalm\Issue\MixedArrayOffsetbecame final - [BC] Class
Psalm\Issue\PossiblyInvalidClonebecame final - [BC] Class
Psalm\Issue\InvalidFunctionCallbecame final - [BC] Class
Psalm\Issue\InvalidMethodCallbecame final - [BC] Class
Psalm\Issue\ComplexFunctionbecame final - [BC] Class
Psalm\Issue\UnusedPsalmSuppressbecame final - [BC] Class
Psalm\Issue\MixedStringOffsetAssignmentbecame final - [BC] Class
Psalm\Issue\UnrecognizedStatementbecame final - [BC] Class
Psalm\Issue\TaintedFilebecame final - [BC] Class
Psalm\Issue\UnusedMethodbecame final - [BC] Class
Psalm\Issue\PossiblyFalseArgumentbecame final - [BC] Class
Psalm\Issue\DeprecatedPropertybecame final - [BC] Class
Psalm\Issue\PossiblyUndefinedVariablebecame final - [BC] Class
Psalm\Issue\PossiblyNullPropertyAssignmentbecame final - [BC] Class
Psalm\Issue\MixedOperandbecame final - [BC] Class
Psalm\Issue\NoInterfacePropertiesbecame final - [BC] Class
Psalm\Issue\InvalidReturnTypebecame final - [BC] Class
Psalm\Issue\MixedArrayTypeCoercionbecame final - [BC] Class
Psalm\Issue\ParadoxicalConditionbecame final - [BC] Class
Psalm\Issue\InvalidToStringbecame final - [BC] Class
Psalm\Issue\MethodSignatureMismatchbecame final - [BC] Class
Psalm\Issue\PossiblyFalseOperandbecame final - [BC] Class
Psalm\Issue\UndefinedClassbecame final - [BC] Class
Psalm\Issue\OverriddenInterfaceConstantbecame final - [BC] Class
Psalm\Issue\MissingTemplateParambecame final - [BC] Class
Psalm\Issue\InvalidArrayOffsetbecame final - [BC] Class
Psalm\Issue\MoreSpecificImplementedParamTypebecame final - [BC] Class
Psalm\Issue\UninitializedPropertybecame final - [BC] Class
Psalm\Issue\ParseErrorbecame final - [BC] Class
Psalm\Issue\PossiblyUndefinedStringArrayOffsetbecame final - [BC] Class
Psalm\Issue\ExtensionRequirementViolationbecame final
- [BC] Class
-
Storage classes became final:
- [BC] Class
Psalm\Storage\MethodStoragebecame final - [BC] Class
Psalm\Storage\AttributeStoragebecame final - [BC] Class
Psalm\Storage\FileStoragebecame final - [BC] Class
Psalm\Storage\PropertyStoragebecame final - [BC] Class
Psalm\Storage\FunctionStoragebecame final - [BC] Class
Psalm\Storage\Assertion\HasArrayKeybecame final - [BC] Class
Psalm\Storage\Assertion\Truthybecame final - [BC] Class
Psalm\Storage\Assertion\IsAClassbecame final - [BC] Class
Psalm\Storage\Assertion\HasAtLeastCountbecame final - [BC] Class
Psalm\Storage\Assertion\HasMethodbecame final - [BC] Class
Psalm\Storage\Assertion\HasIntOrStringArrayAccessbecame final - [BC] Class
Psalm\Storage\Assertion\DoesNotHaveMethodbecame final - [BC] Class
Psalm\Storage\Assertion\IsLessThanOrEqualTobecame final - [BC] Class
Psalm\Storage\Assertion\IsNotAClassbecame final - [BC] Class
Psalm\Storage\Assertion\ArrayKeyDoesNotExistbecame final - [BC] Class
Psalm\Storage\Assertion\IsNotIdenticalbecame final - [BC] Class
Psalm\Storage\Assertion\IsClassEqualbecame final - [BC] Class
Psalm\Storage\Assertion\NotNonEmptyCountablebecame final - [BC] Class
Psalm\Storage\Assertion\Anybecame final - [BC] Class
Psalm\Storage\Assertion\IsLooselyEqualbecame final - [BC] Class
Psalm\Storage\Assertion\NonEmptybecame final - [BC] Class
Psalm\Storage\Assertion\IsGreaterThanOrEqualTobecame final - [BC] Class
Psalm\Storage\Assertion\HasStringArrayAccessbecame final - [BC] Class
Psalm\Storage\Assertion\IsClassNotEqualbecame final - [BC] Class
Psalm\Storage\Assertion\HasExactCountbecame final - [BC] Class
Psalm\Storage\Assertion\IsNotCountablebecame final - [BC] Class
Psalm\Storage\Assertion\IsIdenticalbecame final - [BC] Class
Psalm\Storage\Assertion\IsTypebecame final - [BC] Class
Psalm\Storage\Assertion\NotNestedAssertionsbecame final - [BC] Class
Psalm\Storage\Assertion\IsGreaterThanbecame final - [BC] Class
Psalm\Storage\Assertion\IsIssetbecame final - [BC] Class
Psalm\Storage\Assertion\Empty_became final - [BC] Class
Psalm\Storage\Assertion\IsNotTypebecame final - [BC] Class
Psalm\Storage\Assertion\ArrayKeyExistsbecame final - [BC] Class
Psalm\Storage\Assertion\DoesNotHaveAtLeastCountbecame final - [BC] Class
Psalm\Storage\Assertion\IsNotIssetbecame final - [BC] Class
Psalm\Storage\Assertion\NonEmptyCountablebecame final - [BC] Class
Psalm\Storage\Assertion\NestedAssertionsbecame final - [BC] Class
Psalm\Storage\Assertion\Falsybecame final - [BC] Class
Psalm\Storage\Assertion\IsNotLooselyEqualbecame final - [BC] Class
Psalm\Storage\Assertion\IsEqualIssetbecame final - [BC] Class
Psalm\Storage\Assertion\IsLessThanbecame final - [BC] Class
Psalm\Storage\Assertion\DoesNotHaveExactCountbecame final - [BC] Class
Psalm\Storage\Assertion\IsCountablebecame final - [BC] Class
Psalm\Storage\Assertion\NotInArraybecame final - [BC] Class
Psalm\Storage\Assertion\InArraybecame final - [BC] Class
Psalm\Storage\FunctionLikeParameterbecame final - [BC] Class
Psalm\Storage\Possibilitiesbecame final - [BC] Class
Psalm\Storage\ClassConstantStoragebecame final - [BC] Class
Psalm\Storage\ClassLikeStoragebecame final - [BC] Class
Psalm\Storage\AttributeArgbecame final - [BC] Class
Psalm\Storage\EnumCaseStoragebecame final
- [BC] Class
-
VirtualNode classes became final
- [BC] Class
Psalm\Node\Stmt\VirtualFunctionbecame final - [BC] Class
Psalm\Node\Stmt\VirtualClassConstbecame final - [BC] Class
Psalm\Node\Stmt\VirtualTraitUsebecame final - [BC] Class
Psalm\Node\Stmt\VirtualElseIfbecame final - [BC] Class
Psalm\Node\Stmt\VirtualDeclarebecame final - [BC] Class
Psalm\Node\Stmt\VirtualHaltCompilerbecame final - [BC] Class
Psalm\Node\Stmt\VirtualThrowbecame final - [BC] Class
Psalm\Node\Stmt\TraitUseAdaptation\VirtualAliasbecame final - [BC] Class
Psalm\Node\Stmt\TraitUseAdaptation\VirtualPrecedencebecame final - [BC] Class
Psalm\Node\Stmt\VirtualNamespacebecame final - [BC] Class
Psalm\Node\Stmt\VirtualIfbecame final - [BC] Class
Psalm\Node\Stmt\VirtualStaticbecame final - [BC] Class
Psalm\Node\Stmt\VirtualInlineHTMLbecame final - [BC] Class
Psalm\Node\Stmt\VirtualUseUsebecame final - [BC] Class
Psalm\Node\Stmt\VirtualCatchbecame final - [BC] Class
Psalm\Node\Stmt\VirtualDeclareDeclarebecame final - [BC] Class
Psalm\Node\Stmt\VirtualEchobecame final - [BC] Class
Psalm\Node\Stmt\VirtualFinallybecame final - [BC] Class
Psalm\Node\Stmt\VirtualInterfacebecame final - [BC] Class
Psalm\Node\Stmt\VirtualGlobalbecame final - [BC] Class
Psalm\Node\Stmt\VirtualGroupUsebecame final - [BC] Class
Psalm\Node\Stmt\VirtualLabelbecame final - [BC] Class
Psalm\Node\Stmt\VirtualTraitbecame final - [BC] Class
Psalm\Node\Stmt\VirtualClassbecame final - [BC] Class
Psalm\Node\Stmt\VirtualUsebecame final - [BC] Class
Psalm\Node\Stmt\VirtualPropertybecame final - [BC] Class
Psalm\Node\Stmt\VirtualUnsetbecame final - [BC] Class
Psalm\Node\Stmt\VirtualPropertyPropertybecame final - [BC] Class
Psalm\Node\Stmt\VirtualExpressionbecame final - [BC] Class
Psalm\Node\Stmt\VirtualSwitchbecame final - [BC] Class
Psalm\Node\Stmt\VirtualStaticVarbecame final - [BC] Class
Psalm\Node\Stmt\VirtualClassMethodbecame final - [BC] Class
Psalm\Node\Stmt\VirtualNopbecame final - [BC] Class
Psalm\Node\Stmt\VirtualReturnbecame final - [BC] Class
Psalm\Node\Stmt\VirtualDobecame final - [BC] Class
Psalm\Node\Stmt\VirtualBreakbecame final - [BC] Class
Psalm\Node\Stmt\VirtualElsebecame final - [BC] Class
Psalm\Node\Stmt\VirtualContinuebecame final - [BC] Class
Psalm\Node\Stmt\VirtualForeachbecame final - [BC] Class
Psalm\Node\Stmt\VirtualGotobecame final - [BC] Class
Psalm\Node\Stmt\VirtualWhilebecame final - [BC] Class
Psalm\Node\Stmt\VirtualForbecame final - [BC] Class
Psalm\Node\Stmt\VirtualCasebecame final - [BC] Class
Psalm\Node\Stmt\VirtualTryCatchbecame final - [BC] Class
Psalm\Node\Stmt\VirtualConstbecame final - [BC] Class
Psalm\Node\VirtualAttributebecame final - [BC] Class
Psalm\Node\VirtualArgbecame final - [BC] Class
Psalm\Node\Expr\VirtualUnaryPlusbecame final - [BC] Class
Psalm\Node\Expr\VirtualMatchbecame final - [BC] Class
Psalm\Node\Expr\VirtualNullsafeMethodCallbecame final - [BC] Class
Psalm\Node\Expr\VirtualTernarybecame final - [BC] Class
Psalm\Node\Expr\VirtualThrowbecame final - [BC] Class
Psalm\Node\Expr\VirtualNewbecame final - [BC] Class
Psalm\Node\Expr\VirtualEmptybecame final - [BC] Class
Psalm\Node\Expr\VirtualStaticPropertyFetchbecame final - [BC] Class
Psalm\Node\Expr\VirtualUnaryMinusbecame final - [BC] Class
Psalm\Node\Expr\VirtualStaticCallbecame final - [BC] Class
Psalm\Node\Expr\VirtualPostIncbecame final - [BC] Class
Psalm\Node\Expr\VirtualPreDecbecame final - [BC] Class
Psalm\Node\Expr\VirtualAssignbecame final - [BC] Class
Psalm\Node\Expr\VirtualErrorSuppressbecame final - [BC] Class
Psalm\Node\Expr\VirtualPreIncbecame final - [BC] Class
Psalm\Node\Expr\VirtualArraybecame final - [BC] Class
Psalm\Node\Expr\VirtualArrayItembecame final - [BC] Class
Psalm\Node\Expr\VirtualIssetbecame final - [BC] Class
Psalm\Node\Expr\VirtualClonebecame final - [BC] Class
Psalm\Node\Expr\VirtualConstFetchbecame final - [BC] Class
Psalm\Node\Expr\VirtualEvalbecame final - [BC] Class
Psalm\Node\Expr\VirtualPrintbecame final - [BC] Class
Psalm\Node\Expr\VirtualErrorbecame final - [BC] Class
Psalm\Node\Expr\VirtualClosurebecame final - [BC] Class
Psalm\Node\Expr\VirtualNullsafePropertyFetchbecame final - [BC] Class
Psalm\Node\Expr\VirtualArrowFunctionbecame final - [BC] Class
Psalm\Node\Expr\VirtualBooleanNotbecame final - [BC] Class
Psalm\Node\Expr\VirtualPropertyFetchbecame final - [BC] Class
Psalm\Node\Expr\Cast\VirtualArraybecame final - [BC] Class
Psalm\Node\Expr\Cast\VirtualIntbecame final - [BC] Class
Psalm\Node\Expr\Cast\VirtualObjectbecame final - [BC] Class
Psalm\Node\Expr\Cast\VirtualDoublebecame final - [BC] Class
Psalm\Node\Expr\Cast\VirtualUnsetbecame final - [BC] Class
Psalm\Node\Expr\Cast\VirtualBoolbecame final - [BC] Class
Psalm\Node\Expr\Cast\VirtualStringbecame final - [BC] Class
Psalm\Node\Expr\VirtualMethodCallbecame final - [BC] Class
Psalm\Node\Expr\BinaryOp\VirtualBitwiseAndbecame final - [BC] Class
Psalm\Node\Expr\BinaryOp\VirtualCoalescebecame final - [BC] Class
Psalm\Node\Expr\BinaryOp\VirtualDivbecame final - [BC] Class
Psalm\Node\Expr\BinaryOp\VirtualNotIdenticalbecame final - [BC] Class
Psalm\Node\Expr\BinaryOp\VirtualLogicalAndbecame final - [BC] Class
Psalm\Node\Expr\BinaryOp\VirtualSpaceshipbecame final - [BC] Class
Psalm\Node\Expr\BinaryOp\VirtualGreaterbecame final - [BC] Class
Psalm\Node\Expr\BinaryOp\VirtualShiftRightbecame final - [BC] Class
Psalm\Node\Expr\BinaryOp\VirtualIdenticalbecame final - [BC] Class
Psalm\Node\Expr\BinaryOp\VirtualMulbecame final - [BC] Class
Psalm\Node\Expr\BinaryOp\VirtualLogicalOrbecame final - [BC] Class
Psalm\Node\Expr\BinaryOp\VirtualBitwiseXorbecame final - [BC] Class
Psalm\Node\Expr\BinaryOp\VirtualSmallerOrEqualbecame final - [BC] Class
Psalm\Node\Expr\BinaryOp\VirtualNotEqualbecame final - [BC] Class
Psalm\Node\Expr\BinaryOp\VirtualGreaterOrEqualbecame final - [BC] Class
Psalm\Node\Expr\BinaryOp\VirtualMinusbecame final - [BC] Class
Psalm\Node\Expr\BinaryOp\VirtualEqualbecame final - [BC] Class
Psalm\Node\Expr\BinaryOp\VirtualSmallerbecame final - [BC] Class
Psalm\Node\Expr\BinaryOp\VirtualLogicalXorbecame final - [BC] Class
Psalm\Node\Expr\BinaryOp\VirtualModbecame final - [BC] Class
Psalm\Node\Expr\BinaryOp\VirtualBooleanAndbecame final - [BC] Class
Psalm\Node\Expr\BinaryOp\VirtualPlusbecame final - [BC] Class
Psalm\Node\Expr\BinaryOp\VirtualShiftLeftbecame final - [BC] Class
Psalm\Node\Expr\BinaryOp\VirtualBooleanOrbecame final - [BC] Class
Psalm\Node\Expr\BinaryOp\VirtualBitwiseOrbecame final - [BC] Class
Psalm\Node\Expr\BinaryOp\VirtualConcatbecame final - [BC] Class
Psalm\Node\Expr\BinaryOp\VirtualPowbecame final - [BC] Class
Psalm\Node\Expr\VirtualVariablebecame final - [BC] Class
Psalm\Node\Expr\VirtualBitwiseNotbecame final - [BC] Class
Psalm\Node\Expr\VirtualShellExecbecame final - [BC] Class
Psalm\Node\Expr\VirtualFuncCallbecame final - [BC] Class
Psalm\Node\Expr\VirtualIncludebecame final - [BC] Class
Psalm\Node\Expr\VirtualAssignRefbecame final - [BC] Class
Psalm\Node\Expr\VirtualClassConstFetchbecame final - [BC] Class
Psalm\Node\Expr\VirtualExitbecame final - [BC] Class
Psalm\Node\Expr\VirtualArrayDimFetchbecame final - [BC] Class
Psalm\Node\Expr\VirtualListbecame final - [BC] Class
Psalm\Node\Expr\VirtualYieldbecame final - [BC] Class
Psalm\Node\Expr\VirtualYieldFrombecame final - [BC] Class
Psalm\Node\Expr\VirtualClosureUsebecame final - [BC] Class
Psalm\Node\Expr\VirtualPostDecbecame final - [BC] Class
Psalm\Node\Expr\AssignOp\VirtualBitwiseAndbecame final - [BC] Class
Psalm\Node\Expr\AssignOp\VirtualCoalescebecame final - [BC] Class
Psalm\Node\Expr\AssignOp\VirtualDivbecame final - [BC] Class
Psalm\Node\Expr\AssignOp\VirtualShiftRightbecame final - [BC] Class
Psalm\Node\Expr\AssignOp\VirtualMulbecame final - [BC] Class
Psalm\Node\Expr\AssignOp\VirtualBitwiseXorbecame final - [BC] Class
Psalm\Node\Expr\AssignOp\VirtualMinusbecame final - [BC] Class
Psalm\Node\Expr\AssignOp\VirtualModbecame final - [BC] Class
Psalm\Node\Expr\AssignOp\VirtualPlusbecame final - [BC] Class
Psalm\Node\Expr\AssignOp\VirtualShiftLeftbecame final - [BC] Class
Psalm\Node\Expr\AssignOp\VirtualBitwiseOrbecame final - [BC] Class
Psalm\Node\Expr\AssignOp\VirtualConcatbecame final - [BC] Class
Psalm\Node\Expr\AssignOp\VirtualPowbecame final - [BC] Class
Psalm\Node\Expr\VirtualInstanceofbecame final - [BC] Class
Psalm\Node\VirtualNullableTypebecame final - [BC] Class
Psalm\Node\VirtualMatchArmbecame final - [BC] Class
Psalm\Node\VirtualIdentifierbecame final - [BC] Class
Psalm\Node\VirtualNamebecame final - [BC] Class
Psalm\Node\VirtualParambecame final - [BC] Class
Psalm\Node\VirtualAttributeGroupbecame final - [BC] Class
Psalm\Node\VirtualVarLikeIdentifierbecame final - [BC] Class
Psalm\Node\Name\VirtualRelativebecame final - [BC] Class
Psalm\Node\Name\VirtualFullyQualifiedbecame final - [BC] Class
Psalm\Node\VirtualUnionTypebecame final - [BC] Class
Psalm\Node\Scalar\VirtualLNumberbecame final - [BC] Class
Psalm\Node\Scalar\VirtualDNumberbecame final - [BC] Class
Psalm\Node\Scalar\MagicConst\VirtualFunctionbecame final - [BC] Class
Psalm\Node\Scalar\MagicConst\VirtualNamespacebecame final - [BC] Class
Psalm\Node\Scalar\MagicConst\VirtualMethodbecame final - [BC] Class
Psalm\Node\Scalar\MagicConst\VirtualLinebecame final - [BC] Class
Psalm\Node\Scalar\MagicConst\VirtualTraitbecame final - [BC] Class
Psalm\Node\Scalar\MagicConst\VirtualClassbecame final - [BC] Class
Psalm\Node\Scalar\MagicConst\VirtualDirbecame final - [BC] Class
Psalm\Node\Scalar\MagicConst\VirtualFilebecame final - [BC] Class
Psalm\Node\Scalar\VirtualEncapsedStringPartbecame final - [BC] Class
Psalm\Node\Scalar\VirtualStringbecame final - [BC] Class
Psalm\Node\Scalar\VirtualEncapsedbecame final - [BC] Class
Psalm\Node\VirtualConstbecame final
- [BC] Class
-
Type nodes became final
- [BC] Class
Psalm\Type\TaintKindGroupbecame final - [BC] Class
Psalm\Type\Atomic\TNumericStringbecame final - [BC] Class
Psalm\Type\Atomic\TClassStringMapbecame final - [BC] Class
Psalm\Type\Atomic\TEmptyNumericbecame final - [BC] Class
Psalm\Type\Atomic\TCallableObjectbecame final - [BC] Class
Psalm\Type\Atomic\TSingleLetterbecame final - [BC] Class
Psalm\Type\Atomic\TClosedResourcebecame final - [BC] Class
Psalm\Type\Atomic\TIntMaskOfbecame final - [BC] Class
Psalm\Type\Atomic\TNonEmptyScalarbecame final - [BC] Class
Psalm\Type\Atomic\TLowercaseStringbecame final - [BC] Class
Psalm\Type\Atomic\TCallablebecame final - [BC] Class
Psalm\Type\Atomic\TFalsebecame final - [BC] Class
Psalm\Type\Atomic\TIterablebecame final - [BC] Class
Psalm\Type\Atomic\TTraitStringbecame final - [BC] Class
Psalm\Type\Atomic\TNonEmptyNonspecificLiteralStringbecame final - [BC] Class
Psalm\Type\Atomic\TLiteralIntbecame final - [BC] Class
Psalm\Type\Atomic\TTruebecame final - [BC] Class
Psalm\Type\Atomic\TDependentGetClassbecame final - [BC] Class
Psalm\Type\Atomic\TValueOfbecame final - [BC] Class
Psalm\Type\Atomic\TGenericObjectbecame final - [BC] Class
Psalm\Type\Atomic\TNonEmptyLowercaseStringbecame final - [BC] Class
Psalm\Type\Atomic\TEnumCasebecame final - [BC] Class
Psalm\Type\Atomic\TCallableKeyedArraybecame final - [BC] Class
Psalm\Type\Atomic\TDependentGetDebugTypebecame final - [BC] Class
Psalm\Type\Atomic\TKeyOfbecame final - [BC] Class
Psalm\Type\Atomic\TNonspecificLiteralIntbecame final - [BC] Class
Psalm\Type\Atomic\TObjectWithPropertiesbecame final - [BC] Class
Psalm\Type\Atomic\TTemplateValueOfbecame final - [BC] Class
Psalm\Type\Atomic\TDependentListKeybecame final - [BC] Class
Psalm\Type\Atomic\TConditionalbecame final - [BC] Class
Psalm\Type\Atomic\TIntRangebecame final - [BC] Class
Psalm\Type\Atomic\TCallableStringbecame final - [BC] Class
Psalm\Type\Atomic\TClosurebecame final - [BC] Class
Psalm\Type\Atomic\TTypeAliasbecame final - [BC] Class
Psalm\Type\Atomic\TAnonymousClassInstancebecame final - [BC] Class
Psalm\Type\Atomic\TIntMaskbecame final - [BC] Class
Psalm\Type\Atomic\TTemplateKeyOfbecame final - [BC] Class
Psalm\Type\Atomic\TDependentGetTypebecame final - [BC] Class
Psalm\Type\Atomic\TLiteralFloatbecame final - [BC] Class
Psalm\Type\Atomic\TCallableArraybecame final - [BC] Class
Psalm\Type\Atomic\TNonEmptyMixedbecame final - [BC] Class
Psalm\Type\Atomic\TTemplateParamClassbecame final - [BC] Class
Psalm\Type\Atomic\TTemplateIndexedAccessbecame final - [BC] Class
Psalm\Type\Atomic\TEmptyScalarbecame final - [BC] Class
Psalm\Type\Atomic\TNeverbecame final - [BC] Class
Psalm\Type\Atomic\TNullbecame final - [BC] Class
Psalm\Type\Atomic\TTemplateParambecame final - [BC] Class
Psalm\Type\Atomic\TLiteralClassStringbecame final - [BC] Class
Psalm\Type\Atomic\TResourcebecame final - [BC] Class
Psalm\Type\Atomic\TVoidbecame final - [BC] Class
Psalm\Type\Atomic\TCallableListbecame final - [BC] Class
Psalm\Type\Atomic\TEmptyMixedbecame final - [BC] Class
Psalm\Type\Atomic\TClassConstantbecame final - [BC] Class
Psalm\Type\TaintKindbecame final - [BC] Class
Psalm\Type\Unionbecame final
- [BC] Class
-
[BC] Property
Psalm\Config::$universal_object_crateschanged default value fromarray{'stdClass','SimpleXMLElement','SimpleXMLIterator'}tonull
- [BC] Property
Psalm\Codebase::$php_major_versionwas removed, usePsalm\Codebase::$analysis_php_version_id. - [BC] Property
Psalm\Codebase::$php_minor_versionwas removed, usePsalm\Codebase::$analysis_php_version_id. - [BC] Class
Psalm\Type\Atomic\TEmptywas removed - [BC] Method
Psalm\Type\Union::isEmpty()was removed - [BC] Property
Psalm\Config::$allow_phpstorm_genericswas removed - [BC] Property
Psalm\Config::$exit_functionswas removed - [BC] Property
Psalm\Config::$forbid_echowas removed - [BC] Property
Psalm\Config::$load_xdebug_stubwas removed - [BC] Method
Psalm\Type::getEmpty()was removed - [BC] Legacy hook interfaces have been removed:
Psalm\Plugin\Hook\MethodReturnTypeProviderInterfacePsalm\Plugin\Hook\BeforeFileAnalysisInterfacePsalm\Plugin\Hook\AfterFileAnalysisInterfacePsalm\Plugin\Hook\AfterMethodCallAnalysisInterfacePsalm\Plugin\Hook\AfterClassLikeVisitInterfacePsalm\Plugin\Hook\StringInterpreterInterfacePsalm\Plugin\Hook\AfterExpressionAnalysisInterfacePsalm\Plugin\Hook\AfterEveryFunctionCallAnalysisInterfacePsalm\Plugin\Hook\PropertyExistenceProviderInterfacePsalm\Plugin\Hook\AfterFunctionLikeAnalysisInterfacePsalm\Plugin\Hook\FunctionParamsProviderInterfacePsalm\Plugin\Hook\FunctionReturnTypeProviderInterfacePsalm\Plugin\Hook\FunctionExistenceProviderInterfacePsalm\Plugin\Hook\AfterAnalysisInterfacePsalm\Plugin\Hook\MethodVisibilityProviderInterfacePsalm\Plugin\Hook\MethodParamsProviderInterfacePsalm\Plugin\Hook\AfterClassLikeExistenceCheckInterfacePsalm\Plugin\Hook\PropertyTypeProviderInterfacePsalm\Plugin\Hook\AfterFunctionCallAnalysisInterfacePsalm\Plugin\Hook\MethodExistenceProviderInterfacePsalm\Plugin\Hook\AfterCodebasePopulatedInterfacePsalm\Plugin\Hook\AfterClassLikeAnalysisInterfacePsalm\Plugin\Hook\PropertyVisibilityProviderInterfacePsalm\Plugin\Hook\AfterStatementAnalysisInterface
- [BC] Method
Psalm\Issue\CodeIssue::getLocation()was removed - [BC] Method
Psalm\Issue\CodeIssue::getFileName()was removed - [BC] Method
Psalm\Issue\CodeIssue::getMessage()was removed - [BC] Method
Psalm\DocComment::parse()was removed - [BC] Class
Psalm\Type\Atomic\THtmlEscapedStringhas been removed - [BC] Property
Psalm\Context::$vars_from_globalhas been renamed to$referenced_globals - [BC] Self-registration of file type scanners and file type analyzers has been changed
Psalm\Plugin\RegistrationInterface::addFileTypeScannerwas removedPsalm\Plugin\RegistrationInterface::addFileTypeAnalyzerwas removed- ℹ️ migration possible using
Psalm\Plugin\FileExtensionsInterface Psalm\PluginRegistrationSocket::addFileTypeScannerwas removedPsalm\PluginRegistrationSocket::getAdditionalFileTypeScannerswas removedPsalm\PluginRegistrationSocket::addFileTypeAnalyzerwas removedPsalm\PluginRegistrationSocket::getAdditionalFileTypeAnalyzerswas removedPsalm\PluginRegistrationSocket::getAdditionalFileExtensionswas removedPsalm\PluginRegistrationSocket::addFileExtensionwas removed- ℹ️ migration possible using
Psalm\PluginFileExtensionsSocket
- [BC] Method
\Psalm\Plugin\EventHandler\Event\AfterFunctionLikeAnalysisEvent::getClasslikeStorage()was removed, use correct\Psalm\Plugin\EventHandler\Event\AfterFunctionLikeAnalysisEvent::getFunctionlikeStorage()instead