includes:
    #- '../../vendor/phpstan/phpstan-strict-rules/rules.neon'
    - '../../vendor/phpstan/phpstan-deprecation-rules/rules.neon'
parameters:
    fileExtensions:
        - php
    excludes_analyse:
        - %currentWorkingDirectory%/user/plugins/*/vendor/*
        - %currentWorkingDirectory%/user/plugins/*/tests/*
        - %currentWorkingDirectory%/user/plugins/gantry5/src/platforms
        - %currentWorkingDirectory%/user/plugins/gantry5/src/classes/Gantry/Framework/Services/ErrorServiceProvider.php
    bootstrapFiles:
        - plugins-bootstrap.php
    inferPrivatePropertyTypeFromConstructor: true
    reportUnmatchedIgnoredErrors: false

    # These checks are new in phpstan 0.12, ignore them for now.
    checkMissingIterableValueType: false
    checkGenericClassInNonGenericObjectType: false

    universalObjectCratesClasses:
        - Grav\Common\Config\Config
        - Grav\Common\Config\Languages
        - Grav\Common\Config\Setup
        - Grav\Common\Data\Data
        - Grav\Common\GPM\Common\Package
        - Grav\Common\GPM\Local\Package
        - Grav\Common\GPM\Remote\Package
        - Grav\Common\Session
        - Gantry\Component\Config\Config
    dynamicConstantNames:
        - GRAV_CLI
        - GANTRY_DEBUGGER
        - GANTRY5_DEBUG
        - GANTRY5_VERSION
        - GANTRY5_VERSION_DATE
        - GANTRY5_PLATFORM
        - GANTRY5_ROOT
    ignoreErrors:
        # New in phpstan 0.12, ignore them for now.
        - '#Unsafe usage of new static\(\)#'
        - '#Cannot instantiate interface Grav\\Framework\\#'

        # PSR-16 Exception interfaces do not extend \Throwable
        - '#PHPDoc tag \@throws with type (.*|)?Psr\\SimpleCache\\(CacheException|InvalidArgumentException)(|.*)? is not subtype of Throwable#'

        - '#Access to an undefined property RocketTheme\\Toolbox\\Event\\Event::#'
        - '#Instantiation of deprecated class RocketTheme\\Toolbox\\Event\\Event#'
        - '#extends deprecated class RocketTheme\\Toolbox\\Event\\Event#'
        - '#implements deprecated interface RocketTheme\\Toolbox\\Event\\EventSubscriberInterface#'
        - '#Call to method __construct\(\) of deprecated class RocketTheme\\Toolbox\\Event\\Event#'
        - '#Call to deprecated method (stopPropagation|isPropagationStopped)\(\) of class Symfony\\Component\\EventDispatcher\\Event#'
        - '#Call to an undefined method Grav\\Plugin\\ApartmentData\\Application\\Application::#'
        - '#Parameter \#1 \$lineNumberStyle of method ScssPhp\\ScssPhp\\Compiler::setLineNumberStyle\(\) expects string, int given#'

        # Deprecated event class
        - '#has typehint with deprecated class RocketTheme\\Toolbox\\Event\\Event#'
