diff --git a/.github/workflows/static-analysis.yml b/.github/workflows/static-analysis.yml
index 6ed391c70ba..dda82aa6a5b 100644
--- a/.github/workflows/static-analysis.yml
+++ b/.github/workflows/static-analysis.yml
@@ -74,30 +74,3 @@ jobs:
run: "vendor/bin/phpstan analyse -c phpstan-persistence2.neon"
if: "${{ matrix.dbal-version == 'default' && matrix.persistence-version != 'default'}}"
- static-analysis-psalm:
- name: "Static Analysis with Psalm"
- runs-on: "ubuntu-22.04"
-
- strategy:
- fail-fast: false
-
- steps:
- - name: "Checkout code"
- uses: "actions/checkout@v4"
-
- - name: "Install PHP"
- uses: "shivammathur/setup-php@v2"
- with:
- coverage: "none"
- php-version: "8.3"
-
- - name: "Require specific persistence version"
- run: "composer require doctrine/persistence ^3.1 --no-update"
-
- - name: "Install dependencies with Composer"
- uses: "ramsey/composer-install@v3"
- with:
- dependency-versions: "highest"
-
- - name: "Run a static analysis with vimeo/psalm"
- run: "vendor/bin/psalm --show-info=false --stats --output-format=github --threads=$(nproc)"
diff --git a/composer.json b/composer.json
index 6001689c408..7988d5f17d5 100644
--- a/composer.json
+++ b/composer.json
@@ -51,8 +51,7 @@
"squizlabs/php_codesniffer": "3.7.2",
"symfony/cache": "^4.4 || ^5.4 || ^6.4 || ^7.0",
"symfony/var-exporter": "^4.4 || ^5.4 || ^6.2 || ^7.0",
- "symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0 || ^7.0",
- "vimeo/psalm": "4.30.0 || 5.26.1"
+ "symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0 || ^7.0"
},
"conflict": {
"doctrine/annotations": "<1.13 || >= 3.0"
diff --git a/psalm-baseline.xml b/psalm-baseline.xml
deleted file mode 100644
index b8655116282..00000000000
--- a/psalm-baseline.xml
+++ /dev/null
@@ -1,2833 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
- isEmpty() ? $filteredParameters->first() : null]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
- _em->getConfiguration()->getResultCacheImpl()]]>
- _queryCacheProfile->getResultCacheDriver()]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- getConfiguration()
- ->getSecondLevelCacheConfiguration()
- ->getCacheFactory()]]>
-
-
-
-
-
-
-
-
-
-
- fileLockRegionDirectory]]>
-
-
-
-
-
-
-
- getMetadataFactory()]]>
-
-
- associationMappings]]>
-
-
-
-
-
-
-
-
-
-
-
-
- identifiers[$assocIndex]]]>
- identifiers[$assocIndex]]]>
- identifiers[$index]]]>
- identifiers[$index]]]>
-
-
-
-
-
- class]]>
- class]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- identifiers]]>
-
-
- getOwner()]]>
- getOwner()]]>
-
-
-
-
-
-
-
-
- getOwner()]]>
- getOwner()]]>
-
-
-
-
- getOwner()]]>
-
-
-
-
- getOwner()]]>
- getOwner()]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- class]]>
-
-
- getOwner()]]>
- getOwner()]]>
-
-
- getCache()]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- cache]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- time]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- name ? $entity : null]]>
- name ? $entity : null]]>
- load($sortedId, null, null, [], $lockMode)]]>
- loadById($sortedId)]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- getProxyDir()]]>
- getProxyNamespace()]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- load($criteria, null, null, [], null, 1, $orderBy)]]>
-
-
-
-
- &Selectable]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- nextValue]]>
- nextValue]]>
-
-
-
-
-
-
-
-
-
-
-
-
- associationMappings[$fieldName]['joinColumns'][0]]]>
- associationMappings[$fieldName]['joinColumns'][0]['name']]]>
-
-
-
-
-
- associationMappings[$fieldName]['joinColumns']]]>
- associationMappings[$fieldName]['joinColumns']]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- resultPointers[$parent]]]>
-
-
- resultPointers[$parent][key($first)]]]>
- resultPointers[$dqlAlias] =& $coll[key($coll)]]]>
-
-
-
-
-
-
-
-
-
-
- hydrator->hydrateRow()]]>
- next()]]>
-
-
- current !== false]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- associationMappings[$class->identifier[0]]['joinColumns'][0]]]>
- associationMappings[$class->identifier[0]]['joinColumns'][0]['name']]]>
- associationMappings[$fieldName]['joinColumns'][0]]]>
- associationMappings[$fieldName]['joinColumns'][0]['name']]]>
-
-
-
-
- reflFields]]>
-
-
-
-
-
-
-
-
-
- associationMappings[$class->identifier[0]]['joinColumns']]]>
- associationMappings[$fieldName]['joinColumns']]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- table[$indexType][$indexName]]]>
-
-
-
-
-
-
- table[$indexType]]]>
-
-
- em]]>
- em]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- columnNames]]>
- columnNames]]>
- columnNames]]>
- columnNames]]>
-
-
- table]]>
- table]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- sqlResultSetMappings]]>
-
-
-
- reflClass]]>
-
-
-
-
-
-
-
-
-
-
-
-
- ]]>
- ]]>
-
-
- associationMappings[$fieldName]['joinColumns'][0]['name']]]>
- associationMappings[$fieldName]['joinColumns'][0]['referencedColumnName']]]>
- associationMappings[$fieldName]['mappedBy']]]>
- reflClass]]>
- reflFields[$name]]]>
- reflFields[$this->identifier[0]]]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- associationMappings[$fieldName]['joinColumns'][0]]]>
- associationMappings[$fieldName]['joinColumns'][0]]]>
- associationMappings[$fieldName]['joinColumns'][0]['name']]]>
- associationMappings[$fieldName]['joinColumns'][0]['referencedColumnName']]]>
-
-
- reflClass->name]]>
- reflClass->name]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- associationMappings[$assocName]['joinColumns']]]>
- associationMappings[$fieldName]['joinColumns']]]>
- associationMappings[$fieldName]['joinColumns']]]>
- associationMappings[$idProperty]['joinColumns']]]>
- associationMappings[$idProperty]['joinColumns']]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- instances]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- associationMappings[$fieldName]['joinColumns']]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $seqGeneratorAnnot->sequenceName,
- 'allocationSize' => $seqGeneratorAnnot->allocationSize,
- 'initialValue' => $seqGeneratorAnnot->initialValue,
- ]]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- getReflectionClass()]]>
-
-
- name)]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $seqGeneratorAttribute->sequenceName,
- 'allocationSize' => $seqGeneratorAttribute->allocationSize,
- 'initialValue' => $seqGeneratorAttribute->initialValue,
- ]]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- getReflectionClass()]]>
-
-
-
-
-
-
-
-
- name)]]>
-
-
-
-
-
-
-
- namespace . $this->classNamesForTables[$tableName]]]>
- namespace . $this->inflector->classify(strtolower($tableName))]]>
-
-
-
-
-
-
-
-
-
-
-
- tables[$tableName]]]>
- tables[$tableName]]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- table]]>
-
-
-
- $usage,
- 'region' => $region,
- ]]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- isset($discrColumn['name']) ? (string) $discrColumn['name'] : null,
- 'type' => isset($discrColumn['type']) ? (string) $discrColumn['type'] : 'string',
- 'length' => isset($discrColumn['length']) ? (int) $discrColumn['length'] : 255,
- 'columnDefinition' => isset($discrColumn['columnDefinition']) ? (string) $discrColumn['columnDefinition'] : null,
- 'enumType' => isset($discrColumn['enumType']) ? (string) $discrColumn['enumType'] : null,
- ]]]>
-
-
-
-
-
-
- $usage,
- 'region' => $region,
- ]]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- embeddedClass]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ]]>
-
-
-
-
- loadCriteria($criteria))]]>
- em->find($this->typeClass->name, $key)]]>
-
-
- ]]>
-
-
- unwrap()->matching($criteria)]]>
-
-
-
-
-
-
-
-
-
- backRefFieldName]]>
- getMapping()['indexBy']]]>
-
-
-
-
-
-
-
- getMapping()['indexBy']]]>
- getMapping()['orphanRemoval']]]>
- getMapping()['orphanRemoval']]]>
-
-
- unwrap(), 'add']]]>
-
-
-
-
- $collection->getOwner(), $mapping['indexBy'] => $index]]]>
-
-
- getOwner()]]>
- getOwner()]]>
- getOwner()]]>
- getOwner()]]>
- getOwner()]]>
- getOwner()]]>
- getOwner()]]>
- getOwner()]]>
- getOwner()]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- associationMappings]]>
- associationMappings]]>
- associationMappings]]>
- associationMappings]]>
- associationMappings]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $collection->getOwner(),
- $mapping['indexBy'] => $index,
- ]]]>
-
-
- getOwner()]]>
- getOwner()]]>
- getOwner()]]>
-
-
-
-
-
- associationMappings]]>
-
-
- associationMappings[$mapping['mappedBy']]['joinColumns']]]>
-
-
-
- associationMappings[$mapping['mappedBy']]['joinColumns']]]>
-
-
-
-
-
-
-
-
-
-
-
-
- getMetadataFactory()]]>
-
-
- true]]]>
- true]]]>
- true]]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- associationMappings]]>
- associationMappings]]>
- associationMappings]]>
- class->associationMappings]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- class->associationMappings[$fieldName]['joinColumns']]]>
- class->associationMappings[$idField]['joinColumns']]]>
-
-
- currentPersisterContext->sqlTableAliases]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- getReflectionProperties()]]>
- getMetadataFactory()]]>
- getMetadataFactory()]]>
-
-
-
-
-
- proxyFactories]]>
-
-
- isEmbeddedClass]]>
- isMappedSuperclass]]>
-
-
- proxyFactories[$className] = $proxyFactory]]>
-
-
-
-
-
-
-
-
- name]]>
- name]]>
-
-
-
-
-
-
-
-
-
- 4]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- getDQL()]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- SimpleArithmeticExpression()]]>
-
-
-
-
- ArithmeticPrimary()]]>
- ArithmeticPrimary()]]>
-
-
-
-
- ArithmeticPrimary()]]>
- ArithmeticPrimary()]]>
-
-
-
-
- ArithmeticPrimary()]]>
- ArithmeticPrimary()]]>
-
-
-
-
-
-
-
- unit->value]]>
-
-
-
-
- ArithmeticPrimary()]]>
- ArithmeticPrimary()]]>
-
-
-
-
- unit->value]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- simpleArithmeticExpression]]>
-
-
- SimpleArithmeticExpression()]]>
-
-
-
-
- SimpleArithmeticExpression()]]>
- SimpleArithmeticExpression()]]>
-
-
-
-
-
-
-
-
-
-
-
-
- associationMappings]]>
- associationMappings]]>
-
-
-
-
-
-
-
-
-
-
-
-
- SimpleArithmeticExpression()]]>
-
-
-
-
- SimpleArithmeticExpression()]]>
- SimpleArithmeticExpression()]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- simpleStateFieldPathExpression]]>
-
-
-
-
-
- walkIndexBy($this)]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- _sqlStatements]]>
- _sqlStatements]]>
-
-
- _sqlStatements !== null && $this->sqlStatements === null]]>
- sqlStatements === null]]>
-
-
-
-
-
-
-
-
-
-
- _sqlStatements !== null]]>
-
-
- sqlStatements]]>
-
-
- _sqlStatements = &$this->sqlStatements]]>
- _sqlStatements = &$this->sqlStatements]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- sqlStatements]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- sqlStatements]]>
-
-
-
-
-
-
-
-
-
- sqlStatements]]>
-
-
-
-
-
-
-
-
- executeStatement($this->sqlStatements, $params, $types)]]>
-
-
-
-
-
- sqlStatements]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- arguments]]>
-
-
- ]]>
-
-
-
-
-
-
-
-
-
- conditionType]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- parameters]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- queryComponents]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- lexer->getLiteral($token)]]>
- lexer->getLiteral($token)]]>
- lexer->getLiteral($token)]]>
-
-
- SimpleArithmeticExpression()]]>
-
-
-
- query->getDQL()]]>
- value]]>
-
-
- lexer->glimpse()->type]]>
- value]]>
- value]]>
-
-
-
-
-
-
-
-
-
-
-
- parameters)]]>
-
-
- ]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- queryComponents[$expression]]]>
-
-
-
-
-
-
-
-
-
-
-
- whereClause]]>
- whereClause]]>
- whereClause]]>
- simpleArithmeticExpression]]>
- subselect]]>
-
-
-
-
-
- rangeVariableDeclaration]]>
-
-
- whereClause]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- associationMappings]]>
- associationMappings]]>
- associationMappings]]>
- scalarResultAliasMap]]>
- scalarResultAliasMap]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- |false]]>
-
-
- walkers]]>
-
-
- walkers]]>
- walkers]]>
-
-
-
-
- $join]]]>
- $join]]]>
-
-
-
-
-
-
- isEmpty() ? $filteredParameters->first() : null]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- repositoryList[$repositoryHash]]]>
- repositoryList[$repositoryHash] = $this->createRepository($entityManager, $entityName)]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- name]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- name]]>
-
-
-
-
- name]]>
-
-
- getConfiguration()->getProxyDir()]]>
-
-
-
-
-
-
-
- customRepositoryClassName]]>
-
-
-
-
-
-
-
-
-
- entityListeners]]>
-
-
-
-
-
-
-
-
-
-
- executeSchemaCommand($input, $output, new SchemaTool($em), $metadatas, $ui)]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- getName()]]>
- getName()]]>
-
-
-
-
-
-
-
- getName()]]>
- getName()]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- getClassToExtend()]]>
- getClassToExtend() ?: $metadata->name]]>
- getClassToExtend() ?: $metadata->name]]>
-
-
-
-
-
-
-
- name, '\\')]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- lifecycleCallbacks)]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- _outputDir]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- changeTrackingPolicy]]>
-
-
-
-
-
-
-
-
-
-
-
-
- table]]>
-
-
-
-
- changeTrackingPolicy]]>
- asXML()]]>
-
-
-
-
-
-
-
-
-
-
-
-
- lifecycleCallbacks)]]>
-
-
-
-
- changeTrackingPolicy]]>
-
-
-
-
-
- null]]]>
-
-
-
-
-
-
-
-
- &array{entityListeners: array>}]]>
-
-
-
-
-
-
-
-
-
-
- table]]>
- lifecycleCallbacks)]]>
-
-
-
-
-
-
-
- associationMappings[$property]['joinColumns']]]>
-
-
-
-
-
-
-
-
-
-
- orderByItems]]>
-
-
- orderByClause]]>
- getMaxResults()]]>
-
-
- orderByItems]]>
-
-
- associationMappings[$property]['joinColumns']]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- getAssociationMapping($fieldName)['joinColumns']]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- getMetadataFactory()]]>
-
-
- entityChangeSets]]>
- entityChangeSets]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- identityMap[$rootClassName]]]>
-
-
-
-
- getTypeOfField($class->getSingleIdentifierFieldName())]]>
- getOwner()]]>
- getOwner()]]>
-
-
-
- reflFields]]>
- reflFields]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- name]]>
- subClasses]]>
-
-
-
-
- associationMappings[$field]['joinColumns']]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/psalm.xml b/psalm.xml
deleted file mode 100644
index 19b4e9368ca..00000000000
--- a/psalm.xml
+++ /dev/null
@@ -1,311 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/AbstractQuery.php b/src/AbstractQuery.php
index 731e6b621b9..b931e69ee57 100644
--- a/src/AbstractQuery.php
+++ b/src/AbstractQuery.php
@@ -90,7 +90,7 @@ abstract class AbstractQuery
* The parameter map of this query.
*
* @var ArrayCollection|Parameter[]
- * @psalm-var ArrayCollection
+ * @phpstan-var ArrayCollection
*/
protected $parameters;
@@ -111,7 +111,7 @@ abstract class AbstractQuery
/**
* The map of query hints.
*
- * @psalm-var array
+ * @phpstan-var array
*/
protected $_hints = [];
@@ -119,7 +119,7 @@ abstract class AbstractQuery
* The hydration mode.
*
* @var string|int
- * @psalm-var string|AbstractQuery::HYDRATE_*
+ * @phpstan-var string|AbstractQuery::HYDRATE_*
*/
protected $_hydrationMode = self::HYDRATE_OBJECT;
@@ -157,7 +157,7 @@ abstract class AbstractQuery
* Second level query cache mode.
*
* @var int|null
- * @psalm-var Cache::MODE_*|null
+ * @phpstan-var Cache::MODE_*|null
*/
protected $cacheMode;
@@ -254,7 +254,7 @@ public function setLifetime($lifetime)
/**
* @return int|null
- * @psalm-return Cache::MODE_*|null
+ * @phpstan-return Cache::MODE_*|null
*/
public function getCacheMode()
{
@@ -263,7 +263,7 @@ public function getCacheMode()
/**
* @param int $cacheMode
- * @psalm-param Cache::MODE_* $cacheMode
+ * @phpstan-param Cache::MODE_* $cacheMode
*
* @return $this
*/
@@ -311,7 +311,7 @@ public function free()
* Get all defined parameters.
*
* @return ArrayCollection The defined query parameters.
- * @psalm-return ArrayCollection
+ * @phpstan-return ArrayCollection
*/
public function getParameters()
{
@@ -344,14 +344,14 @@ static function (Query\Parameter $parameter) use ($key): bool {
* Sets a collection of query parameters.
*
* @param ArrayCollection|mixed[] $parameters
- * @psalm-param ArrayCollection|mixed[] $parameters
+ * @phpstan-param ArrayCollection|mixed[] $parameters
*
* @return $this
*/
public function setParameters($parameters)
{
if (is_array($parameters)) {
- /** @psalm-var ArrayCollection $parameterCollection */
+ /** @phpstan-var ArrayCollection $parameterCollection */
$parameterCollection = new ArrayCollection();
foreach ($parameters as $key => $value) {
@@ -844,7 +844,7 @@ public function getQueryCacheProfile()
* @param class-string $class
* @param string $assocName
* @param int $fetchMode
- * @psalm-param Mapping\ClassMetadata::FETCH_EAGER|Mapping\ClassMetadata::FETCH_LAZY $fetchMode
+ * @phpstan-param Mapping\ClassMetadata::FETCH_EAGER|Mapping\ClassMetadata::FETCH_LAZY $fetchMode
*
* @return $this
*/
@@ -870,7 +870,7 @@ public function setFetchMode($class, $assocName, $fetchMode)
*
* @param string|int $hydrationMode Doctrine processing mode to be used during hydration process.
* One of the Query::HYDRATE_* constants.
- * @psalm-param string|AbstractQuery::HYDRATE_* $hydrationMode
+ * @phpstan-param string|AbstractQuery::HYDRATE_* $hydrationMode
*
* @return $this
*/
@@ -885,7 +885,7 @@ public function setHydrationMode($hydrationMode)
* Gets the hydration mode currently used by the query.
*
* @return string|int
- * @psalm-return string|AbstractQuery::HYDRATE_*
+ * @phpstan-return string|AbstractQuery::HYDRATE_*
*/
public function getHydrationMode()
{
@@ -898,7 +898,7 @@ public function getHydrationMode()
* Alias for execute(null, $hydrationMode = HYDRATE_OBJECT).
*
* @param string|int $hydrationMode
- * @psalm-param string|AbstractQuery::HYDRATE_* $hydrationMode
+ * @phpstan-param string|AbstractQuery::HYDRATE_* $hydrationMode
*
* @return mixed
*/
@@ -947,7 +947,7 @@ public function getScalarResult()
* Get exactly one result or null.
*
* @param string|int|null $hydrationMode
- * @psalm-param string|AbstractQuery::HYDRATE_*|null $hydrationMode
+ * @phpstan-param string|AbstractQuery::HYDRATE_*|null $hydrationMode
*
* @return mixed
*
@@ -985,7 +985,7 @@ public function getOneOrNullResult($hydrationMode = null)
* If there is no result, a NoResultException is thrown.
*
* @param string|int|null $hydrationMode
- * @psalm-param string|AbstractQuery::HYDRATE_*|null $hydrationMode
+ * @phpstan-param string|AbstractQuery::HYDRATE_*|null $hydrationMode
*
* @return mixed
*
@@ -1083,8 +1083,8 @@ public function getHints()
*
* @param ArrayCollection|mixed[]|null $parameters The query parameters.
* @param string|int|null $hydrationMode The hydration mode to use.
- * @psalm-param ArrayCollection|array|null $parameters
- * @psalm-param string|AbstractQuery::HYDRATE_*|null $hydrationMode The hydration mode to use.
+ * @phpstan-param ArrayCollection|array|null $parameters
+ * @phpstan-param string|AbstractQuery::HYDRATE_*|null $hydrationMode The hydration mode to use.
*
* @return IterableResult
*/
@@ -1121,8 +1121,8 @@ public function iterate($parameters = null, $hydrationMode = null)
*
* @param ArrayCollection|array|mixed[] $parameters The query parameters.
* @param string|int|null $hydrationMode The hydration mode to use.
- * @psalm-param ArrayCollection|mixed[] $parameters
- * @psalm-param string|AbstractQuery::HYDRATE_*|null $hydrationMode
+ * @phpstan-param ArrayCollection|mixed[] $parameters
+ * @phpstan-param string|AbstractQuery::HYDRATE_*|null $hydrationMode
*
* @return iterable
*/
@@ -1158,8 +1158,8 @@ public function toIterable(iterable $parameters = [], $hydrationMode = null): it
*
* @param ArrayCollection|mixed[]|null $parameters Query parameters.
* @param string|int|null $hydrationMode Processing mode to be used during the hydration process.
- * @psalm-param ArrayCollection|mixed[]|null $parameters
- * @psalm-param string|AbstractQuery::HYDRATE_*|null $hydrationMode
+ * @phpstan-param ArrayCollection|mixed[]|null $parameters
+ * @phpstan-param string|AbstractQuery::HYDRATE_*|null $hydrationMode
*
* @return mixed
*/
@@ -1177,8 +1177,8 @@ public function execute($parameters = null, $hydrationMode = null)
*
* @param ArrayCollection|mixed[]|null $parameters
* @param string|int|null $hydrationMode
- * @psalm-param ArrayCollection|mixed[]|null $parameters
- * @psalm-param string|AbstractQuery::HYDRATE_*|null $hydrationMode
+ * @phpstan-param ArrayCollection|mixed[]|null $parameters
+ * @phpstan-param string|AbstractQuery::HYDRATE_*|null $hydrationMode
*
* @return mixed
*/
@@ -1259,8 +1259,8 @@ private function getHydrationCache(): CacheItemPoolInterface
*
* @param ArrayCollection|mixed[]|null $parameters
* @param string|int|null $hydrationMode
- * @psalm-param ArrayCollection|mixed[]|null $parameters
- * @psalm-param string|AbstractQuery::HYDRATE_*|null $hydrationMode
+ * @phpstan-param ArrayCollection|mixed[]|null $parameters
+ * @phpstan-param string|AbstractQuery::HYDRATE_*|null $hydrationMode
*
* @return mixed
*/
@@ -1323,7 +1323,7 @@ private function getTimestampKey(): ?TimestampCacheKey
* automatically generated for you.
*
* @return string[] ($key, $hash)
- * @psalm-return array{string, string} ($key, $hash)
+ * @phpstan-return array{string, string} ($key, $hash)
*/
protected function getHydrationCacheId()
{
diff --git a/src/Cache/CacheFactory.php b/src/Cache/CacheFactory.php
index 3d3e5928cef..6d4171e18e9 100644
--- a/src/Cache/CacheFactory.php
+++ b/src/Cache/CacheFactory.php
@@ -15,7 +15,7 @@
/**
* Contract for building second level cache regions components.
*
- * @psalm-import-type AssociationMapping from ClassMetadata
+ * @phpstan-import-type AssociationMapping from ClassMetadata
*/
interface CacheFactory
{
diff --git a/src/Cache/DefaultCache.php b/src/Cache/DefaultCache.php
index ff9b60ba402..d318dd007d8 100644
--- a/src/Cache/DefaultCache.php
+++ b/src/Cache/DefaultCache.php
@@ -31,7 +31,7 @@ class DefaultCache implements Cache
/**
* @var QueryCache[]
- * @psalm-var array
+ * @phpstan-var array
*/
private $queryCaches = [];
diff --git a/src/Cache/DefaultQueryCache.php b/src/Cache/DefaultQueryCache.php
index 1c11ebbb8dd..dccb7bfa77e 100644
--- a/src/Cache/DefaultQueryCache.php
+++ b/src/Cache/DefaultQueryCache.php
@@ -29,7 +29,7 @@
/**
* Default query cache implementation.
*
- * @psalm-import-type AssociationMapping from ClassMetadata
+ * @phpstan-import-type AssociationMapping from ClassMetadata
*/
class DefaultQueryCache implements QueryCache
{
@@ -331,7 +331,7 @@ public function put(QueryCacheKey $key, ResultSetMapping $rsm, $result, array $h
* @param mixed $assocValue
*
* @return mixed[]|null
- * @psalm-return array{targetEntity: class-string, type: mixed, list?: array[], identifier?: array}|null
+ * @phpstan-return array{targetEntity: class-string, type: mixed, list?: array[], identifier?: array}|null
*/
private function storeAssociationCache(QueryCacheKey $key, array $assoc, $assocValue): ?array
{
@@ -386,7 +386,7 @@ private function storeAssociationCache(QueryCacheKey $key, array $assoc, $assocV
* @param object $entity
*
* @return mixed[]|object|null
- * @psalm-return list|object|null
+ * @phpstan-return list|object|null
*/
private function getAssociationValue(
ResultSetMapping $rsm,
@@ -414,10 +414,10 @@ private function getAssociationValue(
/**
* @param mixed $value
- * @psalm-param array $path
+ * @phpstan-param array $path
*
* @return mixed[]|object|null
- * @psalm-return list|object|null
+ * @phpstan-return list|object|null
*/
private function getAssociationPathValue($value, array $path)
{
diff --git a/src/Cache/Persister/Collection/AbstractCollectionPersister.php b/src/Cache/Persister/Collection/AbstractCollectionPersister.php
index 4eb1895bbca..42d6ec8519c 100644
--- a/src/Cache/Persister/Collection/AbstractCollectionPersister.php
+++ b/src/Cache/Persister/Collection/AbstractCollectionPersister.php
@@ -25,7 +25,7 @@
use function assert;
use function count;
-/** @psalm-import-type AssociationMapping from ClassMetadata */
+/** @phpstan-import-type AssociationMapping from ClassMetadata */
abstract class AbstractCollectionPersister implements CachedCollectionPersister
{
/** @var UnitOfWork */
diff --git a/src/Cache/Persister/Collection/ReadWriteCachedCollectionPersister.php b/src/Cache/Persister/Collection/ReadWriteCachedCollectionPersister.php
index d8d3a95dcb8..0ec977695e2 100644
--- a/src/Cache/Persister/Collection/ReadWriteCachedCollectionPersister.php
+++ b/src/Cache/Persister/Collection/ReadWriteCachedCollectionPersister.php
@@ -13,7 +13,7 @@
use function spl_object_id;
-/** @psalm-import-type AssociationMapping from ClassMetadata */
+/** @phpstan-import-type AssociationMapping from ClassMetadata */
class ReadWriteCachedCollectionPersister extends AbstractCollectionPersister
{
/** @param AssociationMapping $association The association mapping. */
diff --git a/src/Cache/QueryCacheKey.php b/src/Cache/QueryCacheKey.php
index e7004f1fc13..2051e572161 100644
--- a/src/Cache/QueryCacheKey.php
+++ b/src/Cache/QueryCacheKey.php
@@ -24,7 +24,7 @@ class QueryCacheKey extends CacheKey
*
* @readonly Public only for performance reasons, it should be considered immutable.
* @var int
- * @psalm-var Cache::MODE_*
+ * @phpstan-var Cache::MODE_*
*/
public $cacheMode;
@@ -34,7 +34,7 @@ class QueryCacheKey extends CacheKey
*/
public $timestampKey;
- /** @psalm-param Cache::MODE_* $cacheMode */
+ /** @phpstan-param Cache::MODE_* $cacheMode */
public function __construct(
string $cacheId,
int $lifetime = 0,
diff --git a/src/Cache/Region/FileLockRegion.php b/src/Cache/Region/FileLockRegion.php
index fe50f88998b..8da30325c2b 100644
--- a/src/Cache/Region/FileLockRegion.php
+++ b/src/Cache/Region/FileLockRegion.php
@@ -43,7 +43,7 @@ class FileLockRegion implements ConcurrentRegion
/** @var string */
private $directory;
- /** @psalm-var numeric-string */
+ /** @phpstan-var numeric-string */
private $lockLifetime;
/**
diff --git a/src/Configuration.php b/src/Configuration.php
index 7e05c461d8f..86b2f08387c 100644
--- a/src/Configuration.php
+++ b/src/Configuration.php
@@ -70,16 +70,16 @@ class Configuration extends \Doctrine\DBAL\Configuration
/** @var mixed[] */
protected $_attributes = [];
- /** @psalm-var array, ClassMetadata::GENERATOR_TYPE_*> */
+ /** @phpstan-var array, ClassMetadata::GENERATOR_TYPE_*> */
private $identityGenerationPreferences = [];
- /** @psalm-param array, ClassMetadata::GENERATOR_TYPE_*> $value */
+ /** @phpstan-param array, ClassMetadata::GENERATOR_TYPE_*> $value */
public function setIdentityGenerationPreferences(array $value): void
{
$this->identityGenerationPreferences = $value;
}
- /** @psalm-return array, ClassMetadata::GENERATOR_TYPE_*> $value */
+ /** @phpstan-return array, ClassMetadata::GENERATOR_TYPE_*> $value */
public function getIdentityGenerationPreferences(): array
{
return $this->identityGenerationPreferences;
@@ -172,7 +172,7 @@ public function setMetadataDriverImpl(MappingDriver $driverImpl)
*
* @param string|string[] $paths
* @param bool $useSimpleAnnotationReader
- * @psalm-param string|list $paths
+ * @phpstan-param string|list $paths
*
* @return AnnotationDriver
*/
@@ -279,7 +279,7 @@ public function getEntityNamespace($entityNamespaceAlias)
/**
* Sets the entity alias map.
*
- * @psalm-param array $entityNamespaces
+ * @phpstan-param array $entityNamespaces
*
* @return void
*/
@@ -291,7 +291,7 @@ public function setEntityNamespaces(array $entityNamespaces)
/**
* Retrieves the list of registered entity namespace aliases.
*
- * @psalm-return array
+ * @phpstan-return array
*/
public function getEntityNamespaces()
{
@@ -551,7 +551,7 @@ public function addNamedNativeQuery($name, $sql, Query\ResultSetMapping $rsm)
* @param string $name The name of the query.
*
* @return mixed[]
- * @psalm-return array{string, ResultSetMapping} A tuple with the first element being the SQL string and the second
+ * @phpstan-return array{string, ResultSetMapping} A tuple with the first element being the SQL string and the second
* element being the ResultSetMapping.
*
* @throws NamedNativeQueryNotFound
@@ -620,7 +620,7 @@ public function ensureProductionSettings()
*
* @param string $name Function name.
* @param class-string|callable $className Class name or a callable that returns the function.
- * @psalm-param class-string|callable(string):FunctionNode $className
+ * @phpstan-param class-string|callable(string):FunctionNode $className
*
* @return void
*/
@@ -635,7 +635,7 @@ public function addCustomStringFunction($name, $className)
* @param string $name
*
* @return string|callable|null
- * @psalm-return class-string|callable(string):FunctionNode|null
+ * @phpstan-return class-string|callable(string):FunctionNode|null
*/
public function getCustomStringFunction($name)
{
@@ -652,7 +652,7 @@ public function getCustomStringFunction($name)
*
* Any previously added string functions are discarded.
*
- * @psalm-param array|callable(string):FunctionNode> $functions The map of custom
+ * @phpstan-param array|callable(string):FunctionNode> $functions The map of custom
* DQL string functions.
*
* @return void
@@ -673,7 +673,7 @@ public function setCustomStringFunctions(array $functions)
*
* @param string $name Function name.
* @param class-string|callable $className Class name or a callable that returns the function.
- * @psalm-param class-string|callable(string):FunctionNode $className
+ * @phpstan-param class-string|callable(string):FunctionNode $className
*
* @return void
*/
@@ -725,7 +725,7 @@ public function setCustomNumericFunctions(array $functions)
*
* @param string $name Function name.
* @param string|callable $className Class name or a callable that returns the function.
- * @psalm-param class-string|callable(string):FunctionNode $className
+ * @phpstan-param class-string|callable(string):FunctionNode $className
*
* @return void
*/
@@ -757,7 +757,7 @@ public function getCustomDatetimeFunction($name)
* Any previously added date/time functions are discarded.
*
* @param array $functions The map of custom DQL date/time functions.
- * @psalm-param array|callable(string):FunctionNode> $functions
+ * @phpstan-param array|callable(string):FunctionNode> $functions
*
* @return void
*/
@@ -1038,7 +1038,7 @@ public function getSecondLevelCacheConfiguration()
/**
* Returns query hints, which will be applied to every query in application
*
- * @psalm-return array
+ * @phpstan-return array
*/
public function getDefaultQueryHints()
{
@@ -1048,7 +1048,7 @@ public function getDefaultQueryHints()
/**
* Sets array of query hints, which will be applied to every query in application
*
- * @psalm-param array $defaultQueryHints
+ * @phpstan-param array $defaultQueryHints
*
* @return void
*/
diff --git a/src/Decorator/EntityManagerDecorator.php b/src/Decorator/EntityManagerDecorator.php
index 179d5386dd9..6c37a19c392 100644
--- a/src/Decorator/EntityManagerDecorator.php
+++ b/src/Decorator/EntityManagerDecorator.php
@@ -52,7 +52,7 @@ public function getExpressionBuilder()
*
* @param class-string $className
*
- * @psalm-return EntityRepository
+ * @phpstan-return EntityRepository
*
* @template T of object
*/
diff --git a/src/EntityManager.php b/src/EntityManager.php
index 4ca0569956f..d31efee7a70 100644
--- a/src/EntityManager.php
+++ b/src/EntityManager.php
@@ -424,7 +424,7 @@ public function flush($entity = null)
* during the search.
* @param int|null $lockVersion The version of the entity to find when using
* optimistic locking.
- * @psalm-param LockMode::*|null $lockMode
+ * @phpstan-param LockMode::*|null $lockMode
*
* @return T|null The entity instance or NULL if the entity can not be found.
*
@@ -710,7 +710,7 @@ public function remove($entity)
* overriding any local changes that have not yet been persisted.
*
* @param object $entity The entity to refresh
- * @psalm-param LockMode::*|null $lockMode
+ * @phpstan-param LockMode::*|null $lockMode
*
* @return void
*
@@ -786,7 +786,7 @@ public function merge($entity)
/**
* {@inheritDoc}
*
- * @psalm-return never
+ * @phpstan-return never
*/
public function copy($entity, $deep = false)
{
@@ -983,7 +983,7 @@ public function isUninitializedObject($obj): bool
* @param mixed[]|Connection $connection An array with the connection parameters or an existing Connection instance.
* @param Configuration $config The Configuration instance to use.
* @param EventManager|null $eventManager The EventManager instance to use.
- * @psalm-param array|Connection $connection
+ * @phpstan-param array|Connection $connection
*
* @return EntityManager The created EntityManager.
*
@@ -1014,7 +1014,7 @@ public static function create($connection, Configuration $config, ?EventManager
* @param mixed[]|Connection $connection An array with the connection parameters or an existing Connection instance.
* @param Configuration $config The Configuration instance to use.
* @param EventManager|null $eventManager The EventManager instance to use.
- * @psalm-param array|Connection $connection
+ * @phpstan-param array|Connection $connection
*
* @return Connection
*
@@ -1081,7 +1081,7 @@ public function hasFilters()
}
/**
- * @psalm-param LockMode::* $lockMode
+ * @phpstan-param LockMode::* $lockMode
*
* @throws OptimisticLockException
* @throws TransactionRequiredException
diff --git a/src/EntityManagerInterface.php b/src/EntityManagerInterface.php
index 5155d1a2a06..588075960ae 100644
--- a/src/EntityManagerInterface.php
+++ b/src/EntityManagerInterface.php
@@ -238,7 +238,7 @@ public function copy($entity, $deep = false);
* @param object $entity
* @param int $lockMode
* @param int|DateTimeInterface|null $lockVersion
- * @psalm-param LockMode::* $lockMode
+ * @phpstan-param LockMode::* $lockMode
*
* @return void
*
@@ -284,7 +284,7 @@ public function getUnitOfWork();
* @deprecated
*
* @param string|int $hydrationMode
- * @psalm-param string|AbstractQuery::HYDRATE_* $hydrationMode
+ * @phpstan-param string|AbstractQuery::HYDRATE_* $hydrationMode
*
* @return AbstractHydrator
*/
@@ -294,7 +294,7 @@ public function getHydrator($hydrationMode);
* Create a new instance for the given hydration mode.
*
* @param string|int $hydrationMode
- * @psalm-param string|AbstractQuery::HYDRATE_* $hydrationMode
+ * @phpstan-param string|AbstractQuery::HYDRATE_* $hydrationMode
*
* @return AbstractHydrator
*
@@ -336,9 +336,9 @@ public function hasFilters();
* @param string|class-string $className
*
* @return Mapping\ClassMetadata
- * @psalm-return ($className is class-string ? Mapping\ClassMetadata : Mapping\ClassMetadata