Support using directory_suppressions in Phan baseline files in --load-baseline. (#3698)
Improve error message for warnings about Phan being unable to read files in the analyzed directory.
New Features(Analysis):
Instead of failing to parse intersection types in phpdoc entirely, parse them as if they were union types. (#1629)
The annotations @phan-param, @phan-return, @phan-var, etc. can be used to override the regular phpdoc in the various cases where this behavior causes problems.
Future Phan releases will likely about unsupported phpdoc (e.g. int&string) and have actual support for intersection types.
Emit PhanUndeclaredConstantOfClass (severity critical) for undeclared class constants instead of PhanUndeclaredConstant (severity normal)
This should not be confused with PhanUndeclaredClassConstant, which already exists and refers to accessing class constants of classes that don't exist.
Emit the expression that's an invalid object with issue types such as PhanTypeExpectedObject*, PhanTypeInvalidInstanceof (#3717)
Emit PhanCompatibleScalarTypePHP56 and PhanCompatibleAnyReturnTypePHP56 for function signatures when target_php_version is '5.6' (#915)
(This also requires that backward_compatibility_checks be enabled.)
Use more accurate line numbers for warnings about function parameters.
When assume_real_types_for_internal_functions is on and a function has a non-empty return type in Reflection,
make Phan's known real type signatures override the real reflection return type information (useful when Phan infers list<string> and Reflection says array).
Phan previously used the type from Reflection.
Normalize phpdoc parameter and return types when there is a corresponding real type in the signature. (#3725)
(e.g. convert bool|false|null to ?bool)
Plugins:
Add SubscribeEmitIssueCapability to detect or suppress issues immediately before they are emitted. (#3719)
Bug fixes:
Don't include issues that weren't emitted in the file generated by --save-baseline (#3719)
Fix incorrect file location for other definition in PhanRedefinedClassReference under some circumstances.
Fix incorrect issue name: PhanCompatibleNullableTypePHP71 should be named PhanCompatibleObjectTypePHP71
Fix false positive PhanPartialTypeMismatchProperty when a php 7.4 typed property has a default expression value (#3725)
Feb 13 2020, Phan 2.4.9
New Features(Analysis):
Infer that class_exists implies the first argument is a class-string,
and that method_exists implies the first argument is a class-string or an object. (#2804, #3058)
Note that Phan still does not infer that the class or method actually exists.
Emit PhanRedefineClass on all occurrences of a duplicate class, not just the ones after the first occurrence of the class. (#511)
Emit PhanRedefineFunction on all occurrences of a duplicate function/method, not just the ones after the first.
Emit PhanRedefinedClassReference for many types of uses of user-defined classes that Phan has parsed multiple definitions of.
Phan will not warn about internal classes, because the duplicate definition is probably a polyfill.
(e.g. new DuplicateClass(), DuplicateClass::someMethod())
Bug fixes:
Fix false positive PhanParamSuspiciousOrder for preg_replace_callback (#3680)
Fix false positive PhanUnanalyzableInheritance for renamed methods from traits. (#3695)
... (truncated)
Commits
d458d81 Merge pull request #3728 from TysonAndre/release-2.5.0
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
- `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme
Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):
- Update frequency (including time of day and day of week)
- Pull request limits (per update run and/or open at any time)
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)
Bumps phan/phan from 2.3.1 to 2.5.0.
Changelog
Sourced from phan/phan's changelog.
Commits
d458d81
Merge pull request #3728 from TysonAndre/release-2.5.0233eb35
Release Phan 2.5.093fdf51
Merge pull request #3726 from TysonAndre/handle_real_type_set46942f9
Update NEWSc885c8b
Fix false positive PhanPartialTypeMismatchProperty for typed propertyffc2e47
The pdep_config.php file isn't being shipped with the composer package,ec5170d
Fix unreadable file message48f69b5
[skip ci] Add a .editorconfiga9132ce
Update issue message for PhanRedefinedClassReference6d6b3bf
Merge pull request #3720 from TysonAndre/php8-supportDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) - `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language - `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language - `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language - `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language - `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com): - Update frequency (including time of day and day of week) - Pull request limits (per update run and/or open at any time) - Out-of-range updates (receive only lockfile updates, if desired) - Security updates (receive only security updates, if desired)