CoreLibs composer v8.0.5 update test

This commit is contained in:
Clemens Schwaighofer
2023-03-10 15:29:15 +09:00
parent 1cbe4e5c06
commit 2aab94a842
142 changed files with 2979 additions and 1170 deletions

View File

@@ -0,0 +1,163 @@
<?php
// These stubs were generated by the phan stub generator.
// @phan-stub-for-extension zip@1.15.6
namespace {
class ZipArchive implements \Countable {
// constants
const CREATE = 1;
const EXCL = 2;
const CHECKCONS = 4;
const OVERWRITE = 8;
const RDONLY = 16;
const FL_NOCASE = 1;
const FL_NODIR = 2;
const FL_COMPRESSED = 4;
const FL_UNCHANGED = 8;
const FL_ENC_GUESS = 0;
const FL_ENC_RAW = 64;
const FL_ENC_STRICT = 128;
const FL_ENC_UTF_8 = 2048;
const FL_ENC_CP437 = 4096;
const CM_DEFAULT = -1;
const CM_STORE = 0;
const CM_SHRINK = 1;
const CM_REDUCE_1 = 2;
const CM_REDUCE_2 = 3;
const CM_REDUCE_3 = 4;
const CM_REDUCE_4 = 5;
const CM_IMPLODE = 6;
const CM_DEFLATE = 8;
const CM_DEFLATE64 = 9;
const CM_PKWARE_IMPLODE = 10;
const CM_BZIP2 = 12;
const CM_LZMA = 14;
const CM_LZMA2 = 33;
const CM_XZ = 95;
const CM_TERSE = 18;
const CM_LZ77 = 19;
const CM_WAVPACK = 97;
const CM_PPMD = 98;
const ER_OK = 0;
const ER_MULTIDISK = 1;
const ER_RENAME = 2;
const ER_CLOSE = 3;
const ER_SEEK = 4;
const ER_READ = 5;
const ER_WRITE = 6;
const ER_CRC = 7;
const ER_ZIPCLOSED = 8;
const ER_NOENT = 9;
const ER_EXISTS = 10;
const ER_OPEN = 11;
const ER_TMPOPEN = 12;
const ER_ZLIB = 13;
const ER_MEMORY = 14;
const ER_CHANGED = 15;
const ER_COMPNOTSUPP = 16;
const ER_EOF = 17;
const ER_INVAL = 18;
const ER_NOZIP = 19;
const ER_INTERNAL = 20;
const ER_INCONS = 21;
const ER_REMOVE = 22;
const ER_DELETED = 23;
const ER_ENCRNOTSUPP = 24;
const ER_RDONLY = 25;
const ER_NOPASSWD = 26;
const ER_WRONGPASSWD = 27;
const ER_OPNOTSUPP = 28;
const ER_INUSE = 29;
const ER_TELL = 30;
const ER_COMPRESSED_DATA = 31;
const ER_CANCELLED = 32;
const OPSYS_DOS = 0;
const OPSYS_AMIGA = 1;
const OPSYS_OPENVMS = 2;
const OPSYS_UNIX = 3;
const OPSYS_VM_CMS = 4;
const OPSYS_ATARI_ST = 5;
const OPSYS_OS_2 = 6;
const OPSYS_MACINTOSH = 7;
const OPSYS_Z_SYSTEM = 8;
const OPSYS_Z_CPM = 9;
const OPSYS_CPM = 9;
const OPSYS_WINDOWS_NTFS = 10;
const OPSYS_MVS = 11;
const OPSYS_VSE = 12;
const OPSYS_ACORN_RISC = 13;
const OPSYS_VFAT = 14;
const OPSYS_ALTERNATE_MVS = 15;
const OPSYS_BEOS = 16;
const OPSYS_TANDEM = 17;
const OPSYS_OS_400 = 18;
const OPSYS_OS_X = 19;
const OPSYS_DEFAULT = 3;
const EM_NONE = 0;
const EM_AES_128 = 257;
const EM_AES_192 = 258;
const EM_AES_256 = 259;
const LIBZIP_VERSION = '1.9.2';
// properties
public $comment;
public $filename;
public $numFiles;
public $status;
public $statusSys;
// methods
public function open($filename, $flags = null) {}
public function setPassword($password) {}
public function close() {}
public function count() {}
public function getStatusString() {}
public function addEmptyDir($dirname) {}
public function addFromString($name, $content) {}
public function addFile($filepath, $entryname = null, $start = null, $length = null) {}
public function addGlob($pattern, $flags = null, $options = null) {}
public function addPattern($pattern, $path = null, $options = null) {}
public function renameIndex($index, $new_name) {}
public function renameName($name, $new_name) {}
public function setArchiveComment($comment) {}
public function getArchiveComment($flags = null) {}
public function setCommentIndex($index, $comment) {}
public function setCommentName($name, $comment) {}
public function getCommentIndex($index, $flags = null) {}
public function getCommentName($name, $flags = null) {}
public function deleteIndex($index) {}
public function deleteName($name) {}
public function statName($filename, $flags = null) {}
public function statIndex($index, $flags = null) {}
public function locateName($filename, $flags = null) {}
public function getNameIndex($index, $flags = null) {}
public function unchangeArchive() {}
public function unchangeAll() {}
public function unchangeIndex($index) {}
public function unchangeName($name) {}
public function extractTo($pathto, $files = null) {}
public function getFromName($entryname, $len = null, $flags = null) {}
public function getFromIndex($index, $len = null, $flags = null) {}
public function getStream($entryname) {}
public function setExternalAttributesName($name, $opsys, $attr, $flags = null) {}
public function setExternalAttributesIndex($index, $opsys, $attr, $flags = null) {}
public function getExternalAttributesName($name, &$opsys, &$attr, $flags = null) {}
public function getExternalAttributesIndex($index, &$opsys, &$attr, $flags = null) {}
public function setCompressionName($name, $method, $compflags = null) {}
public function setCompressionIndex($index, $method, $compflags = null) {}
public function setEncryptionName($name, $method, $password = null) {}
public function setEncryptionIndex($index, $method, $password = null) {}
}
function zip_close($zip) {}
function zip_entry_close($zip_ent) {}
function zip_entry_compressedsize($zip_entry) {}
function zip_entry_compressionmethod($zip_entry) {}
function zip_entry_filesize($zip_entry) {}
function zip_entry_name($zip_entry) {}
function zip_entry_open($zip_dp, $zip_entry, $mode = null) {}
function zip_entry_read($zip_entry, $len = null) {}
function zip_open($filename) {}
function zip_read($zip) {}
}

View File

@@ -114,7 +114,7 @@ final class EmptyStatementListVisitor extends PluginAwarePostAnalysisVisitor
$this->code_base,
(clone $this->context)->withLineNumberStart($last_if_elem->children['stmts']->lineno ?? $last_if_elem->lineno),
'PhanPluginEmptyStatementIf',
'Empty statement list statement detected for the last if/elseif statement',
'Empty statement list detected for the last if/elseif statement',
[]
);
}
@@ -191,7 +191,7 @@ final class EmptyStatementListVisitor extends PluginAwarePostAnalysisVisitor
$this->code_base,
(clone $this->context)->withLineNumberStart($stmts_node->lineno ?? $node->lineno),
'PhanPluginEmptyStatementForLoop',
'Empty statement list statement detected for the for loop',
'Empty statement list detected for the for loop',
[]
);
}
@@ -219,7 +219,7 @@ final class EmptyStatementListVisitor extends PluginAwarePostAnalysisVisitor
$this->code_base,
(clone $this->context)->withLineNumberStart($stmts_node->lineno ?? $node->lineno),
'PhanPluginEmptyStatementWhileLoop',
'Empty statement list statement detected for the while loop',
'Empty statement list detected for the while loop',
[]
);
}
@@ -247,7 +247,7 @@ final class EmptyStatementListVisitor extends PluginAwarePostAnalysisVisitor
$this->code_base,
(clone $this->context)->withLineNumberStart($stmts_node->lineno),
'PhanPluginEmptyStatementDoWhileLoop',
'Empty statement list statement detected for the do-while loop',
'Empty statement list detected for the do-while loop',
[]
);
}
@@ -276,7 +276,7 @@ final class EmptyStatementListVisitor extends PluginAwarePostAnalysisVisitor
$this->code_base,
(clone $this->context)->withLineNumberStart($stmts_node->lineno),
'PhanPluginEmptyStatementForeachLoop',
'Empty statement list statement detected for the foreach loop',
'Empty statement list detected for the foreach loop',
[]
);
}
@@ -295,7 +295,7 @@ final class EmptyStatementListVisitor extends PluginAwarePostAnalysisVisitor
$this->code_base,
(clone $this->context)->withLineNumberStart($try_node->lineno),
'PhanPluginEmptyStatementTryBody',
'Empty statement list statement detected for the try statement\'s body',
'Empty statement list detected for the try statement\'s body',
[]
);
}
@@ -315,7 +315,7 @@ final class EmptyStatementListVisitor extends PluginAwarePostAnalysisVisitor
$this->code_base,
(clone $this->context)->withLineNumberStart($finally_node->lineno),
'PhanPluginEmptyStatementTryFinally',
'Empty statement list statement detected for the try\'s finally body',
'Empty statement list detected for the try\'s finally body',
[]
);
}

View File

@@ -216,15 +216,15 @@ By default, this plugin won't warn if it can find a TODO/FIXME/"Deliberately emp
(This may miss some TODOs due to `php-ast` not providing the end line numbers)
The setting `'plugin_config' => ['empty_statement_list_ignore_todos' => true]` can be used to make it unconditionally warn about empty statement lists.
- **PhanPluginEmptyStatementDoWhileLoop** `Empty statement list statement detected for the do-while loop`
- **PhanPluginEmptyStatementForLoop** `Empty statement list statement detected for the for loop`
- **PhanPluginEmptyStatementForeachLoop** `Empty statement list statement detected for the foreach loop`
- **PhanPluginEmptyStatementIf**: `Empty statement list statement detected for the last if/elseif statement`
- **PhanPluginEmptyStatementDoWhileLoop** `Empty statement list detected for the do-while loop`
- **PhanPluginEmptyStatementForLoop** `Empty statement list detected for the for loop`
- **PhanPluginEmptyStatementForeachLoop** `Empty statement list detected for the foreach loop`
- **PhanPluginEmptyStatementIf**: `Empty statement list detected for the last if/elseif statement`
- **PhanPluginEmptyStatementSwitch** `No side effects seen for any cases of this switch statement`
- **PhanPluginEmptyStatementTryBody** `Empty statement list statement detected for the try statement's body`
- **PhanPluginEmptyStatementTryBody** `Empty statement list detected for the try statement's body`
- **PhanPluginEmptyStatementPossiblyNonThrowingTryBody**: `Found a try block that looks like it might not throw. Note that this check is a heuristic prone to false positives, especially because error handlers, signal handlers, destructors, and other things may all lead to throwing.`
- **PhanPluginEmptyStatementTryFinally** `Empty statement list statement detected for the try's finally body`
- **PhanPluginEmptyStatementWhileLoop** `Empty statement list statement detected for the while loop`
- **PhanPluginEmptyStatementTryFinally** `Empty statement list detected for the try's finally body`
- **PhanPluginEmptyStatementWhileLoop** `Empty statement list detected for the while loop`
### LoopVariableReusePlugin.php

View File

@@ -1,5 +1,20 @@
Phan NEWS
Mar 03 2023, Phan 5.4.2
-----------------------
Miscellaneous:
- Fix wording in EmptyStatementListPlugin issue messages.
- Add a few more functions where the return value should be used.
- Fix signature of exif_read_data() #4759
- Make allow_missing_properties setting aware of AllowDynamicProperties attribute for PHP 8.2
Maintenance:
- Require php-ast 1.1.0 or newer in PHP 8.2+ if php-ast is installed.
This release of php-ast makes the parsing of `AST_ARROW_FUNC` in php 8.2 match older php versions.
- Support parsing of PHP 8.2 syntax such as disjunctive normal form types and `readonly` classes in the polyfill/fallback parser.
- Fix bugs parsing `__halt_compiler()` in the polyfill/fallback parser.
Aug 25 2022, Phan 5.4.1
-----------------------
@@ -14,6 +29,11 @@ New Features(Analysis):
Miscellaneous:
- Allow `array_filter` `$callback` to be null (#4715)
Bug fixes:
- Fix false positive warning in PHP < 8.0 for inferring the method signature of `new SoapFault`. (#4724)
(The constructor was internally declared in reflection as `SoapFault::SoapFault` until php 8.0)
Adjust the method signature of `SoapFault::__construct` to match the documentation/implementation.
Aug 08 2022, Phan 5.4.0
-----------------------

View File

@@ -29,7 +29,7 @@
"composer/semver": "^1.4|^2.0|^3.0",
"composer/xdebug-handler": "^2.0|^3.0",
"felixfbecker/advanced-json-rpc": "^3.0.4",
"microsoft/tolerant-php-parser": "0.1.1",
"microsoft/tolerant-php-parser": "0.1.2",
"netresearch/jsonmapper": "^1.6.0|^2.0|^3.0|^4.0",
"sabre/event": "^5.1.3",
"symfony/console": "^3.2|^4.0|^5.0|^6.0",

232
vendor/phan/phan/composer.lock generated vendored
View File

@@ -4,20 +4,20 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "62f4c0f1a6e50535b7c03182832d5c4e",
"content-hash": "301a32dbdfef414765074fc7e60effbb",
"packages": [
{
"name": "composer/pcre",
"version": "2.0.0",
"version": "2.1.0",
"source": {
"type": "git",
"url": "https://github.com/composer/pcre.git",
"reference": "c8e9d27cfc5ed22643c19c160455b473ffd8aabe"
"reference": "3fdb2807b31a78a40ad89570e30ec77466c98717"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/composer/pcre/zipball/c8e9d27cfc5ed22643c19c160455b473ffd8aabe",
"reference": "c8e9d27cfc5ed22643c19c160455b473ffd8aabe",
"url": "https://api.github.com/repos/composer/pcre/zipball/3fdb2807b31a78a40ad89570e30ec77466c98717",
"reference": "3fdb2807b31a78a40ad89570e30ec77466c98717",
"shasum": ""
},
"require": {
@@ -59,7 +59,7 @@
],
"support": {
"issues": "https://github.com/composer/pcre/issues",
"source": "https://github.com/composer/pcre/tree/2.0.0"
"source": "https://github.com/composer/pcre/tree/2.1.0"
},
"funding": [
{
@@ -75,7 +75,7 @@
"type": "tidelift"
}
],
"time": "2022-02-25T20:05:29+00:00"
"time": "2022-11-16T18:32:04+00:00"
},
{
"name": "composer/semver",
@@ -271,16 +271,16 @@
},
{
"name": "microsoft/tolerant-php-parser",
"version": "v0.1.1",
"version": "v0.1.2",
"source": {
"type": "git",
"url": "https://github.com/microsoft/tolerant-php-parser.git",
"reference": "6a965617cf484355048ac6d2d3de7b6ec93abb16"
"reference": "3eccfd273323aaf69513e2f1c888393f5947804b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/microsoft/tolerant-php-parser/zipball/6a965617cf484355048ac6d2d3de7b6ec93abb16",
"reference": "6a965617cf484355048ac6d2d3de7b6ec93abb16",
"url": "https://api.github.com/repos/microsoft/tolerant-php-parser/zipball/3eccfd273323aaf69513e2f1c888393f5947804b",
"reference": "3eccfd273323aaf69513e2f1c888393f5947804b",
"shasum": ""
},
"require": {
@@ -310,22 +310,22 @@
"description": "Tolerant PHP-to-AST parser designed for IDE usage scenarios",
"support": {
"issues": "https://github.com/microsoft/tolerant-php-parser/issues",
"source": "https://github.com/microsoft/tolerant-php-parser/tree/v0.1.1"
"source": "https://github.com/microsoft/tolerant-php-parser/tree/v0.1.2"
},
"time": "2021-07-16T21:28:12+00:00"
"time": "2022-10-05T17:30:19+00:00"
},
{
"name": "netresearch/jsonmapper",
"version": "v4.0.0",
"version": "v4.1.0",
"source": {
"type": "git",
"url": "https://github.com/cweiske/jsonmapper.git",
"reference": "8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d"
"reference": "cfa81ea1d35294d64adb9c68aa4cb9e92400e53f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d",
"reference": "8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d",
"url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/cfa81ea1d35294d64adb9c68aa4cb9e92400e53f",
"reference": "cfa81ea1d35294d64adb9c68aa4cb9e92400e53f",
"shasum": ""
},
"require": {
@@ -361,9 +361,9 @@
"support": {
"email": "cweiske@cweiske.de",
"issues": "https://github.com/cweiske/jsonmapper/issues",
"source": "https://github.com/cweiske/jsonmapper/tree/v4.0.0"
"source": "https://github.com/cweiske/jsonmapper/tree/v4.1.0"
},
"time": "2020-12-01T19:48:11+00:00"
"time": "2022-12-08T20:46:14+00:00"
},
{
"name": "phpdocumentor/reflection-common",
@@ -691,16 +691,16 @@
},
{
"name": "symfony/console",
"version": "v5.4.11",
"version": "v5.4.21",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
"reference": "535846c7ee6bc4dd027ca0d93220601456734b10"
"reference": "c77433ddc6cdc689caf48065d9ea22ca0853fbd9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/console/zipball/535846c7ee6bc4dd027ca0d93220601456734b10",
"reference": "535846c7ee6bc4dd027ca0d93220601456734b10",
"url": "https://api.github.com/repos/symfony/console/zipball/c77433ddc6cdc689caf48065d9ea22ca0853fbd9",
"reference": "c77433ddc6cdc689caf48065d9ea22ca0853fbd9",
"shasum": ""
},
"require": {
@@ -770,7 +770,7 @@
"terminal"
],
"support": {
"source": "https://github.com/symfony/console/tree/v5.4.11"
"source": "https://github.com/symfony/console/tree/v5.4.21"
},
"funding": [
{
@@ -786,7 +786,7 @@
"type": "tidelift"
}
],
"time": "2022-07-22T10:42:43+00:00"
"time": "2023-02-25T16:59:41+00:00"
},
{
"name": "symfony/deprecation-contracts",
@@ -857,16 +857,16 @@
},
{
"name": "symfony/polyfill-ctype",
"version": "v1.26.0",
"version": "v1.27.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
"reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4"
"reference": "5bbc823adecdae860bb64756d639ecfec17b050a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4",
"reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a",
"reference": "5bbc823adecdae860bb64756d639ecfec17b050a",
"shasum": ""
},
"require": {
@@ -881,7 +881,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.26-dev"
"dev-main": "1.27-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -919,7 +919,7 @@
"portable"
],
"support": {
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.26.0"
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0"
},
"funding": [
{
@@ -935,20 +935,20 @@
"type": "tidelift"
}
],
"time": "2022-05-24T11:49:31+00:00"
"time": "2022-11-03T14:55:06+00:00"
},
{
"name": "symfony/polyfill-intl-grapheme",
"version": "v1.26.0",
"version": "v1.27.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-grapheme.git",
"reference": "433d05519ce6990bf3530fba6957499d327395c2"
"reference": "511a08c03c1960e08a883f4cffcacd219b758354"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/433d05519ce6990bf3530fba6957499d327395c2",
"reference": "433d05519ce6990bf3530fba6957499d327395c2",
"url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354",
"reference": "511a08c03c1960e08a883f4cffcacd219b758354",
"shasum": ""
},
"require": {
@@ -960,7 +960,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.26-dev"
"dev-main": "1.27-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -1000,7 +1000,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.26.0"
"source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0"
},
"funding": [
{
@@ -1016,20 +1016,20 @@
"type": "tidelift"
}
],
"time": "2022-05-24T11:49:31+00:00"
"time": "2022-11-03T14:55:06+00:00"
},
{
"name": "symfony/polyfill-intl-normalizer",
"version": "v1.26.0",
"version": "v1.27.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
"reference": "219aa369ceff116e673852dce47c3a41794c14bd"
"reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/219aa369ceff116e673852dce47c3a41794c14bd",
"reference": "219aa369ceff116e673852dce47c3a41794c14bd",
"url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6",
"reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6",
"shasum": ""
},
"require": {
@@ -1041,7 +1041,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.26-dev"
"dev-main": "1.27-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -1084,7 +1084,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.26.0"
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0"
},
"funding": [
{
@@ -1100,20 +1100,20 @@
"type": "tidelift"
}
],
"time": "2022-05-24T11:49:31+00:00"
"time": "2022-11-03T14:55:06+00:00"
},
{
"name": "symfony/polyfill-mbstring",
"version": "v1.26.0",
"version": "v1.27.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
"reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e"
"reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e",
"reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534",
"reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534",
"shasum": ""
},
"require": {
@@ -1128,7 +1128,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.26-dev"
"dev-main": "1.27-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -1167,7 +1167,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.26.0"
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0"
},
"funding": [
{
@@ -1183,20 +1183,20 @@
"type": "tidelift"
}
],
"time": "2022-05-24T11:49:31+00:00"
"time": "2022-11-03T14:55:06+00:00"
},
{
"name": "symfony/polyfill-php73",
"version": "v1.26.0",
"version": "v1.27.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php73.git",
"reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85"
"reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/e440d35fa0286f77fb45b79a03fedbeda9307e85",
"reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85",
"url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/9e8ecb5f92152187c4799efd3c96b78ccab18ff9",
"reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9",
"shasum": ""
},
"require": {
@@ -1205,7 +1205,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.26-dev"
"dev-main": "1.27-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -1246,7 +1246,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-php73/tree/v1.26.0"
"source": "https://github.com/symfony/polyfill-php73/tree/v1.27.0"
},
"funding": [
{
@@ -1262,20 +1262,20 @@
"type": "tidelift"
}
],
"time": "2022-05-24T11:49:31+00:00"
"time": "2022-11-03T14:55:06+00:00"
},
{
"name": "symfony/polyfill-php80",
"version": "v1.26.0",
"version": "v1.27.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php80.git",
"reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace"
"reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/cfa0ae98841b9e461207c13ab093d76b0fa7bace",
"reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace",
"url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936",
"reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936",
"shasum": ""
},
"require": {
@@ -1284,7 +1284,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.26-dev"
"dev-main": "1.27-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -1329,7 +1329,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-php80/tree/v1.26.0"
"source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0"
},
"funding": [
{
@@ -1345,7 +1345,7 @@
"type": "tidelift"
}
],
"time": "2022-05-10T07:21:04+00:00"
"time": "2022-11-03T14:55:06+00:00"
},
{
"name": "symfony/service-contracts",
@@ -1432,16 +1432,16 @@
},
{
"name": "symfony/string",
"version": "v5.4.11",
"version": "v5.4.21",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
"reference": "5eb661e49ad389e4ae2b6e4df8d783a8a6548322"
"reference": "edac10d167b78b1d90f46a80320d632de0bd9f2f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/string/zipball/5eb661e49ad389e4ae2b6e4df8d783a8a6548322",
"reference": "5eb661e49ad389e4ae2b6e4df8d783a8a6548322",
"url": "https://api.github.com/repos/symfony/string/zipball/edac10d167b78b1d90f46a80320d632de0bd9f2f",
"reference": "edac10d167b78b1d90f46a80320d632de0bd9f2f",
"shasum": ""
},
"require": {
@@ -1498,7 +1498,7 @@
"utf8"
],
"support": {
"source": "https://github.com/symfony/string/tree/v5.4.11"
"source": "https://github.com/symfony/string/tree/v5.4.21"
},
"funding": [
{
@@ -1514,34 +1514,42 @@
"type": "tidelift"
}
],
"time": "2022-07-24T16:15:25+00:00"
"time": "2023-02-22T08:00:55+00:00"
},
{
"name": "tysonandre/var_representation_polyfill",
"version": "0.1.2",
"version": "0.1.3",
"source": {
"type": "git",
"url": "https://github.com/TysonAndre/var_representation_polyfill.git",
"reference": "e925b7b0806b39f26aa899202ee065decbabafdb"
"reference": "e9116c2c352bb0835ca428b442dde7767c11ad32"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/TysonAndre/var_representation_polyfill/zipball/e925b7b0806b39f26aa899202ee065decbabafdb",
"reference": "e925b7b0806b39f26aa899202ee065decbabafdb",
"url": "https://api.github.com/repos/TysonAndre/var_representation_polyfill/zipball/e9116c2c352bb0835ca428b442dde7767c11ad32",
"reference": "e9116c2c352bb0835ca428b442dde7767c11ad32",
"shasum": ""
},
"require": {
"ext-tokenizer": "*",
"php": "^7.2.0|^8.0.0"
},
"provide": {
"ext-var_representation": "*"
},
"require-dev": {
"phan/phan": "^5.1",
"phan/phan": "^5.4.1",
"phpunit/phpunit": "^8.5.0"
},
"suggest": {
"ext-var_representation": "*"
"ext-var_representation": "For best performance"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "0.1.3-dev"
}
},
"autoload": {
"files": [
"src/var_representation.php"
@@ -1566,9 +1574,9 @@
],
"support": {
"issues": "https://github.com/TysonAndre/var_representation_polyfill/issues",
"source": "https://github.com/TysonAndre/var_representation_polyfill/tree/0.1.2"
"source": "https://github.com/TysonAndre/var_representation_polyfill/tree/0.1.3"
},
"time": "2022-08-11T12:33:19+00:00"
"time": "2022-08-31T12:59:22+00:00"
},
{
"name": "webmozart/assert",
@@ -1632,30 +1640,30 @@
"packages-dev": [
{
"name": "doctrine/instantiator",
"version": "1.4.1",
"version": "1.5.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/instantiator.git",
"reference": "10dcfce151b967d20fde1b34ae6640712c3891bc"
"reference": "0a0fa9780f5d4e507415a065172d26a98d02047b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc",
"reference": "10dcfce151b967d20fde1b34ae6640712c3891bc",
"url": "https://api.github.com/repos/doctrine/instantiator/zipball/0a0fa9780f5d4e507415a065172d26a98d02047b",
"reference": "0a0fa9780f5d4e507415a065172d26a98d02047b",
"shasum": ""
},
"require": {
"php": "^7.1 || ^8.0"
},
"require-dev": {
"doctrine/coding-standard": "^9",
"doctrine/coding-standard": "^9 || ^11",
"ext-pdo": "*",
"ext-phar": "*",
"phpbench/phpbench": "^0.16 || ^1",
"phpstan/phpstan": "^1.4",
"phpstan/phpstan-phpunit": "^1",
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
"vimeo/psalm": "^4.22"
"vimeo/psalm": "^4.30 || ^5.4"
},
"type": "library",
"autoload": {
@@ -1682,7 +1690,7 @@
],
"support": {
"issues": "https://github.com/doctrine/instantiator/issues",
"source": "https://github.com/doctrine/instantiator/tree/1.4.1"
"source": "https://github.com/doctrine/instantiator/tree/1.5.0"
},
"funding": [
{
@@ -1698,7 +1706,7 @@
"type": "tidelift"
}
],
"time": "2022-03-03T08:28:38+00:00"
"time": "2022-12-30T00:15:36+00:00"
},
{
"name": "myclabs/deep-copy",
@@ -2169,16 +2177,16 @@
},
{
"name": "phpunit/phpunit",
"version": "8.5.29",
"version": "8.5.33",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
"reference": "e8c563c47a9a303662955518ca532b022b337f4d"
"reference": "7d1ff0e8c6b35db78ff13e3e05517d7cbf7aa32e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/e8c563c47a9a303662955518ca532b022b337f4d",
"reference": "e8c563c47a9a303662955518ca532b022b337f4d",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/7d1ff0e8c6b35db78ff13e3e05517d7cbf7aa32e",
"reference": "7d1ff0e8c6b35db78ff13e3e05517d7cbf7aa32e",
"shasum": ""
},
"require": {
@@ -2197,10 +2205,10 @@
"phpunit/php-file-iterator": "^2.0.4",
"phpunit/php-text-template": "^1.2.1",
"phpunit/php-timer": "^2.1.2",
"sebastian/comparator": "^3.0.2",
"sebastian/comparator": "^3.0.5",
"sebastian/diff": "^3.0.2",
"sebastian/environment": "^4.2.3",
"sebastian/exporter": "^3.1.2",
"sebastian/exporter": "^3.1.5",
"sebastian/global-state": "^3.0.0",
"sebastian/object-enumerator": "^3.0.3",
"sebastian/resource-operations": "^2.0.1",
@@ -2246,7 +2254,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
"source": "https://github.com/sebastianbergmann/phpunit/tree/8.5.29"
"source": "https://github.com/sebastianbergmann/phpunit/tree/8.5.33"
},
"funding": [
{
@@ -2256,9 +2264,13 @@
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit",
"type": "tidelift"
}
],
"time": "2022-08-22T13:59:39+00:00"
"time": "2023-02-27T13:04:50+00:00"
},
{
"name": "sebastian/code-unit-reverse-lookup",
@@ -2317,16 +2329,16 @@
},
{
"name": "sebastian/comparator",
"version": "3.0.3",
"version": "3.0.5",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/comparator.git",
"reference": "1071dfcef776a57013124ff35e1fc41ccd294758"
"reference": "1dc7ceb4a24aede938c7af2a9ed1de09609ca770"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1071dfcef776a57013124ff35e1fc41ccd294758",
"reference": "1071dfcef776a57013124ff35e1fc41ccd294758",
"url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1dc7ceb4a24aede938c7af2a9ed1de09609ca770",
"reference": "1dc7ceb4a24aede938c7af2a9ed1de09609ca770",
"shasum": ""
},
"require": {
@@ -2379,7 +2391,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/comparator/issues",
"source": "https://github.com/sebastianbergmann/comparator/tree/3.0.3"
"source": "https://github.com/sebastianbergmann/comparator/tree/3.0.5"
},
"funding": [
{
@@ -2387,7 +2399,7 @@
"type": "github"
}
],
"time": "2020-11-30T08:04:30+00:00"
"time": "2022-09-14T12:31:48+00:00"
},
{
"name": "sebastian/diff",
@@ -2520,16 +2532,16 @@
},
{
"name": "sebastian/exporter",
"version": "3.1.4",
"version": "3.1.5",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/exporter.git",
"reference": "0c32ea2e40dbf59de29f3b49bf375176ce7dd8db"
"reference": "73a9676f2833b9a7c36968f9d882589cd75511e6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/0c32ea2e40dbf59de29f3b49bf375176ce7dd8db",
"reference": "0c32ea2e40dbf59de29f3b49bf375176ce7dd8db",
"url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/73a9676f2833b9a7c36968f9d882589cd75511e6",
"reference": "73a9676f2833b9a7c36968f9d882589cd75511e6",
"shasum": ""
},
"require": {
@@ -2585,7 +2597,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/exporter/issues",
"source": "https://github.com/sebastianbergmann/exporter/tree/3.1.4"
"source": "https://github.com/sebastianbergmann/exporter/tree/3.1.5"
},
"funding": [
{
@@ -2593,7 +2605,7 @@
"type": "github"
}
],
"time": "2021-11-11T13:51:24+00:00"
"time": "2022-09-14T06:00:17+00:00"
},
{
"name": "sebastian/global-state",
@@ -3055,5 +3067,5 @@
"platform-overrides": {
"php": "7.2.24"
},
"plugin-api-version": "2.3.0"
"plugin-api-version": "2.0.0"
}

View File

@@ -1269,6 +1269,9 @@ class TolerantASTConverter
$variableName !== null ? self::getStartLine($variableName) : $start_line
);
},
'Microsoft\PhpParser\Node\Statement\HaltCompilerStatement' => static function (PhpParser\Node\Statement\HaltCompilerStatement $n, int $start_line): ast\Node {
return new ast\Node(ast\AST_HALT_COMPILER, 0, ['offset' => $n->getHaltCompilerOffset()], $start_line);
},
'Microsoft\PhpParser\Node\Statement\InterfaceDeclaration' => static function (PhpParser\Node\Statement\InterfaceDeclaration $n, int $start_line): ast\Node {
if ($n->interfaceKeyword) {
$start_line = self::getStartLine($n->interfaceKeyword);
@@ -1294,7 +1297,7 @@ class TolerantASTConverter
$end_line = static::getEndLine($n);
$base_class = $n->classBaseClause->baseClass ?? null;
return static::astStmtClass(
static::phpParserClassModifierToAstClassFlags($n->abstractOrFinalModifier),
static::phpParserClassModifiersToAstClassFlags($n->abstractOrFinalModifier, $n->modifiers),
static::tokenToString($n->name),
static::phpParserAttributeGroupsToAstAttributeList($n->attributes),
$base_class !== null ? static::phpParserNonValueNodeToAstNode($base_class) : null,
@@ -1940,6 +1943,23 @@ class TolerantASTConverter
return new ast\Node($is_intersection ? ast\AST_TYPE_INTERSECTION : ast\AST_TYPE_UNION, 0, $types, $types[0]->lineno);
}
protected static function phpParserParenthesizedIntersectionTypeToAstNode(PhpParser\Node\ParenthesizedIntersectionType $n, int $start_line): ?ast\Node {
$children = [];
foreach ($n->children->children ?? [] as $c) {
if ($c instanceof Token && $c->kind === TokenKind::AmpersandToken) {
continue;
}
$result = self::phpParserTypeToAstNode($c, $start_line);
if ($result) {
$children[] = $result;
}
}
if (count($children) <= 1) {
return $children[0] ?? null;
}
return new ast\Node(ast\AST_TYPE_INTERSECTION, 0, $children, $start_line);
}
/**
* @param PhpParser\Node\QualifiedName|Token|null $type
*/
@@ -1951,7 +1971,12 @@ class TolerantASTConverter
$original_type = $type;
if ($type instanceof PhpParser\Node\QualifiedName) {
$type = static::phpParserNameToString($type);
} elseif ($type instanceof PhpParser\Node\ParenthesizedIntersectionType) {
return static::phpParserParenthesizedIntersectionTypeToAstNode($type, $line);
} elseif ($type instanceof Token) {
if (get_class($type) !== Token::class) {
return null;
}
$type = static::tokenToString($type);
}
if (\is_string($type)) {
@@ -2283,24 +2308,35 @@ class TolerantASTConverter
);
}
/**
* @param ?Token $flags
* @throws InvalidArgumentException if the class flags were unexpected
*/
private static function phpParserClassModifierToAstClassFlags(?Token $flags): int
private static function phpParserClassModifierToAstClassFlags(?Token $modifier): int
{
if ($flags === null) {
if ($modifier === null) {
return 0;
}
switch ($flags->kind) {
switch ($modifier->kind) {
case TokenKind::AbstractKeyword:
return flags\CLASS_ABSTRACT;
case TokenKind::FinalKeyword:
return flags\CLASS_FINAL;
case TokenKind::ReadonlyKeyword:
return flags\CLASS_READONLY;
default:
throw new InvalidArgumentException("Unexpected kind '" . Token::getTokenKindNameFromValue($flags->kind) . "'");
throw new InvalidArgumentException("Unexpected kind '" . Token::getTokenKindNameFromValue($modifier->kind) . "'");
}
}
/**
* @param ?Token $modifier
* @param list<Token> $modifiers
* @throws InvalidArgumentException if the class flags were unexpected
*/
private static function phpParserClassModifiersToAstClassFlags(?Token $modifier, array $modifiers): int
{
$flags = self::phpParserClassModifierToAstClassFlags($modifier);
foreach ($modifiers as $extra_modifier) {
$flags |= self::phpParserClassModifierToAstClassFlags($extra_modifier);
}
return $flags;
}
private static function interfaceBaseClauseToNode(?\Microsoft\PhpParser\Node\InterfaceBaseClause $node): ?\ast\Node
{

View File

@@ -146,8 +146,8 @@ if (extension_loaded('ast')) {
exit(1);
};
if (PHP_VERSION_ID >= 80200 && version_compare($ast_version, '1.0.15') < 0) {
$phan_output_ast_too_old_and_exit('1.0.15', '8.2');
if (PHP_VERSION_ID >= 80200 && version_compare($ast_version, '1.1.0') < 0) {
$phan_output_ast_too_old_and_exit('1.1.0', '8.2');
} elseif (PHP_VERSION_ID >= 80100 && version_compare($ast_version, '1.0.14') < 0) {
$phan_output_ast_too_old_and_exit('1.0.14', '8.1');
} elseif (PHP_VERSION_ID >= 80000 && version_compare($ast_version, '1.0.11') < 0) {
@@ -360,6 +360,7 @@ function phan_error_handler(int $errno, string $errstr, string $errfile, int $er
}
if ($errno === E_DEPRECATED) {
// Because php 7.2 is used in CI we're stuck on an unmaintained paratest version.
// NOTE: Known issues with dynamic properties in tolerant-php-parser are fixed in `main` (but not 0.1.1) but there may be remaining unknown ones.
if (preg_match('/^Creation of dynamic property (ParaTest\\\\Runners|Microsoft\\\\PhpParser|Phan\\\\LanguageServer\\\\LanguageServer::)/', $errstr)) {
return true;
}

View File

@@ -84,7 +84,7 @@ class CLI
/**
* This should be updated to x.y.z-dev after every release, and x.y.z before a release.
*/
public const PHAN_VERSION = '5.4.1';
public const PHAN_VERSION = '5.4.2';
/**
* List of short flags passed to getopt

View File

@@ -488,6 +488,10 @@ class Clazz extends AddressableElement
foreach ($method_list as $method) {
$clazz->addMethod($code_base, $method, None::instance());
}
if (\PHP_VERSION_ID < 80000 && $reflection_method->isConstructor() && \strcasecmp($reflection_method->name, '__construct') !== 0) {
// E.g. SoapFault::SoapFault and other soap classes before PHP 8.0
$clazz->addMethod($code_base, Method::defaultConstructorForClass($clazz, $code_base), None::instance());
}
}
return $clazz;
@@ -2298,6 +2302,11 @@ class Clazz extends AddressableElement
*/
public function hasDynamicProperties(CodeBase $code_base): bool
{
foreach($this->attribute_list as $attr) {
if ((string)$attr === '\AllowDynamicProperties') {
return true;
}
}
return $this->hasFlagsRecursive($code_base, Flags::CLASS_HAS_DYNAMIC_PROPERTIES);
}
@@ -2979,6 +2988,16 @@ class Clazz extends AddressableElement
$this->warnAboutAmbiguousInheritance($code_base, $class, $next_class_fqsen);
}
if ($attribute_list = $class->getAttributeList()) {
foreach($attribute_list as $attr) {
if ((string)$attr === "\AllowDynamicProperties") {
$new_attribute_list = $this->getAttributeList();
$new_attribute_list[] = $attr;
$this->setAttributeList($new_attribute_list);
break;
}
}
}
// Constants should have been imported earlier, but call it again just in case
$this->importConstantsFromAncestorClass($code_base, $class);

View File

@@ -3074,7 +3074,7 @@ return [
'Exception::getTraceAsString' => ['string'],
'exec' => ['string', 'command'=>'string', '&w_output='=>'array', '&w_result_code='=>'int'],
'exif_imagetype' => ['int|false', 'filename'=>'string'],
'exif_read_data' => ['array<string,mixed>|false', 'file'=>'string', 'required_sections='=>'string', 'as_arrays='=>'bool', 'read_thumbnail='=>'bool'],
'exif_read_data' => ['array<string,mixed>|false', 'file'=>'resource|string', 'required_sections='=>'string', 'as_arrays='=>'bool', 'read_thumbnail='=>'bool'],
'exif_tagname' => ['string|false', 'index'=>'int'],
'exif_thumbnail' => ['string|false', 'file'=>'string', '&w_width='=>'int', '&w_height='=>'int', '&w_image_type='=>'int'],
'exit' => ['', 'status'=>'string|int'],
@@ -13136,7 +13136,7 @@ return [
'SoapClient::__soapCall' => ['', 'name'=>'string', 'args'=>'array', 'options='=>'array', 'inputHeaders='=>'SoapHeader|array', '&w_outputHeaders='=>'array'],
'SoapClient::SoapClient' => ['object', 'wsdl'=>'mixed', 'options='=>'array'],
'SoapFault::__clone' => ['void'],
'SoapFault::__construct' => ['void', 'code'=>'string', 'string'=>'string', 'actor='=>'string', 'details='=>'string', 'name='=>'string', 'headerFault='=>'string'],
'SoapFault::__construct' => ['void', 'code'=>'?string|?array{0:string,1:string}', 'string'=>'string', 'actor='=>'string', 'details='=>'mixed', 'name='=>'string', 'headerFault='=>'string'],
'SoapFault::__toString' => ['string'],
'SoapFault::__wakeup' => ['void'],
'SoapFault::getCode' => ['int'],
@@ -13146,7 +13146,7 @@ return [
'SoapFault::getPrevious' => ['?Exception|?Throwable'],
'SoapFault::getTrace' => ['array'],
'SoapFault::getTraceAsString' => ['string'],
'SoapFault::SoapFault' => ['object', 'faultcode'=>'string', 'faultstring'=>'string', 'faultactor='=>'string', 'detail='=>'string', 'faultname='=>'string', 'headerfault='=>'string'],
'SoapFault::SoapFault' => ['void', 'code'=>'?string|?array{0:string,1:string}', 'string'=>'string', 'actor='=>'string', 'details='=>'mixed', 'name='=>'string', 'headerFault='=>'string'],
'SoapHeader::__construct' => ['void', 'namespace'=>'string', 'name'=>'string', 'data='=>'mixed', 'mustUnderstand='=>'bool', 'actor='=>'string'],
'SoapHeader::SoapHeader' => ['object', 'namespace'=>'string', 'name'=>'string', 'data='=>'mixed', 'mustunderstand='=>'bool', 'actor='=>'string'],
'SoapParam::__construct' => ['void', 'data'=>'mixed', 'name'=>'string'],

View File

@@ -131,6 +131,10 @@ return [
'ZipArchive::setEncryptionName' => ['bool', 'name'=>'string', 'method'=>'int', 'password='=>'string'],
],
'changed' => [
'exif_read_data' => [
'old' => ['array<string,mixed>|false', 'file'=>'string', 'required_sections='=>'string', 'as_arrays='=>'bool', 'read_thumbnail='=>'bool'],
'new' => ['array<string,mixed>|false', 'file'=>'resource|string', 'required_sections='=>'string', 'as_arrays='=>'bool', 'read_thumbnail='=>'bool'],
],
'hash_copy' => [
'old' => ['resource', 'context'=>'resource'],
'new' => ['HashContext', 'context'=>'HashContext'],

View File

@@ -417,6 +417,7 @@ class UseReturnValuePlugin extends PluginV3 implements PostAnalyzeNodeCapability
'gethostname' => true,
'getimagesize' => true,
'get_include_path' => true,
'get_mangled_object_vars' => true,
'get_magic_quotes_gpc' => true,
'get_magic_quotes_gpc_runtime' => true,
'getmypid' => true,
@@ -457,7 +458,9 @@ class UseReturnValuePlugin extends PluginV3 implements PostAnalyzeNodeCapability
'hypot' => true,
'iconv_strlen' => true,
'iconv' => true,
'imagecreate' => self::MUST_USE_WITH_SIDE_EFFECTS,
'imagecreatetruecolor' => self::MUST_USE_WITH_SIDE_EFFECTS,
'imagecreatefromtga' => self::MUST_USE_WITH_SIDE_EFFECTS,
'imagetypes' => true,
'implode' => true,
'in_array' => true,
@@ -624,10 +627,12 @@ class UseReturnValuePlugin extends PluginV3 implements PostAnalyzeNodeCapability
'openssl_encrypt' => true,
'openssl_error_string' => true,
'openssl_random_pseudo_bytes' => true,
'openssl_x509_verify' => true,
'ord' => true,
'pack' => true,
'parse_ini_file' => true,
'parse_url' => true,
'password_algos' => true,
'pathinfo' => true,
'pdo::getattribute' => true,
'pdo::prepare' => true,
@@ -742,6 +747,8 @@ class UseReturnValuePlugin extends PluginV3 implements PostAnalyzeNodeCapability
'reflectionproperty::getvalue' => true,
'reflectionproperty::ispublic' => true,
'reflectionproperty::isstatic' => true,
'reflectionreference::fromarrayelement' => true,
'reflectionreference::getid' => true,
'reflectiontype::__tostring' => true,
'resourcebundle::geterrorcode' => true,
'round' => true,

View File

@@ -15,6 +15,7 @@
# The resulting tags file may be combined with tags for JS, CSS, etc.
function usage() {
echo "Usage: $0 [options for phpctags]" 1>&2
echo "You may wish to run ./phan --dump-ctags=basic instead" 1>&2
}
if ! type phpctags ; then