<?xml version="1.0"?>
<psalm
    totallyTyped="false"
    errorLevel="5"
    resolveFromConfigFile="true"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="https://getpsalm.org/schema/config"
    xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd"
>
    <projectFiles>
        <directory name="lib/Doctrine/DBAL" />
        <directory name="tests/Doctrine/Tests" />
        <ignoreFiles>
            <directory name="vendor" />
        </ignoreFiles>
    </projectFiles>
    <stubs>
        <file name="vendor/jetbrains/phpstorm-stubs/PDO/PDO.php" />
        <file name="vendor/jetbrains/phpstorm-stubs/ibm_db2/ibm_db2.php" />
        <file name="vendor/jetbrains/phpstorm-stubs/mysqli/mysqli.php" />
        <file name="vendor/jetbrains/phpstorm-stubs/oci8/oci8.php" />
        <file name="vendor/jetbrains/phpstorm-stubs/pgsql/pgsql.php" />
        <file name="vendor/jetbrains/phpstorm-stubs/sqlsrv/sqlsrv.php" />
    </stubs>
    <issueHandlers>
        <ConflictingReferenceConstraint>
            <errorLevel type="suppress">
                <!--
                    This one is just too convoluted for Psalm to figure out, by
                    its author's own admission
                -->
                <file name="lib/Doctrine/DBAL/Driver/OCI8/OCI8Statement.php"/>
            </errorLevel>
        </ConflictingReferenceConstraint>
        <FalsableReturnStatement>
            <errorLevel type="suppress">
                <!--
                    Fixing these issues requires an API change
                -->
                <file name="lib/Doctrine/DBAL/Driver/PDOSqlsrv/Connection.php"/>
                <file name="lib/Doctrine/DBAL/Driver/SQLAnywhere/SQLAnywhereConnection.php"/>
                <file name="lib/Doctrine/DBAL/Driver/SQLSrv/SQLSrvConnection.php"/>
            </errorLevel>
        </FalsableReturnStatement>
        <MethodSignatureMismatch>
            <errorLevel type="suppress">
                <!--
                    This one is clearly deliberate; it's a hack to adapt \PDO to
                    Doctrine\DBAL\Driver\Connection
                -->
                <file name="lib/Doctrine/DBAL/Driver/PDOConnection.php"/>
            </errorLevel>
        </MethodSignatureMismatch>
        <NullableReturnStatement>
            <errorLevel type="suppress">
                <!--
                    Fixing this issue requires an API change
                -->
                <file name="lib/Doctrine/DBAL/Driver/AbstractSQLiteDriver.php"/>
            </errorLevel>
        </NullableReturnStatement>
        <TooFewArguments>
            <errorLevel type="suppress">
                <!--
                    Requires a release of
                    https://github.com/JetBrains/phpstorm-stubs/pull/727
                -->
                <file name="lib/Doctrine/DBAL/Driver/SQLSrv/SQLSrvStatement.php"/>
            </errorLevel>
        </TooFewArguments>
        <UndefinedConstant>
            <errorLevel type="suppress">
                <directory name="lib/Doctrine/DBAL/Driver/SQLAnywhere"/>
                <!--
                    Requires a release of
                    https://github.com/JetBrains/phpstorm-stubs/pull/732
                -->
                <file name="tests/Doctrine/Tests/DBAL/Driver/PDOPgSql/DriverTest.php" />
            </errorLevel>
        </UndefinedConstant>
        <UndefinedFunction>
            <errorLevel type="suppress">
                <directory name="lib/Doctrine/DBAL/Driver/SQLAnywhere"/>
            </errorLevel>
        </UndefinedFunction>
        <UndefinedClass>
            <errorLevel type="suppress">
                <!-- Contains references to optional dependencies -->
                <file name="lib/Doctrine/DBAL/Tools/Dumper.php"/>
            </errorLevel>
        </UndefinedClass>
    </issueHandlers>
</psalm>