mirror of
https://github.com/danog/psalm.git
synced 2024-12-11 16:59:45 +01:00
Merge branch '4.x' into feature/upgrade-lsp
This commit is contained in:
commit
2c1100d45e
@ -346,7 +346,7 @@ return [
|
||||
'ArgumentCountError::getLine' => ['int'],
|
||||
'ArgumentCountError::getMessage' => ['string'],
|
||||
'ArgumentCountError::getPrevious' => ['?Throwable'],
|
||||
'ArgumentCountError::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'ArgumentCountError::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'ArgumentCountError::getTraceAsString' => ['string'],
|
||||
'ArithmeticError::__clone' => ['void'],
|
||||
'ArithmeticError::__construct' => ['void', 'message='=>'string', 'code='=>'int', 'previous='=>'?Throwable|?Error'],
|
||||
@ -357,7 +357,7 @@ return [
|
||||
'ArithmeticError::getLine' => ['int'],
|
||||
'ArithmeticError::getMessage' => ['string'],
|
||||
'ArithmeticError::getPrevious' => ['?Throwable'],
|
||||
'ArithmeticError::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'ArithmeticError::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'ArithmeticError::getTraceAsString' => ['string'],
|
||||
'array_change_key_case' => ['associative-array', 'array'=>'array', 'case='=>'int'],
|
||||
'array_chunk' => ['list<array[]>', 'array'=>'array', 'length'=>'int', 'preserve_keys='=>'bool'],
|
||||
@ -499,7 +499,7 @@ return [
|
||||
'BadFunctionCallException::getLine' => ['int'],
|
||||
'BadFunctionCallException::getMessage' => ['string'],
|
||||
'BadFunctionCallException::getPrevious' => ['?Throwable|?BadFunctionCallException'],
|
||||
'BadFunctionCallException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'BadFunctionCallException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'BadFunctionCallException::getTraceAsString' => ['string'],
|
||||
'BadMethodCallException::__clone' => ['void'],
|
||||
'BadMethodCallException::__construct' => ['void', 'message='=>'string', 'code='=>'int', 'previous='=>'?Throwable|?BadMethodCallException'],
|
||||
@ -509,7 +509,7 @@ return [
|
||||
'BadMethodCallException::getLine' => ['int'],
|
||||
'BadMethodCallException::getMessage' => ['string'],
|
||||
'BadMethodCallException::getPrevious' => ['?Throwable|?BadMethodCallException'],
|
||||
'BadMethodCallException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'BadMethodCallException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'BadMethodCallException::getTraceAsString' => ['string'],
|
||||
'base64_decode' => ['string|false', 'string'=>'string', 'strict='=>'bool'],
|
||||
'base64_encode' => ['string', 'string'=>'string'],
|
||||
@ -1073,7 +1073,7 @@ return [
|
||||
'ClosedGeneratorException::getLine' => ['int'],
|
||||
'ClosedGeneratorException::getMessage' => ['string'],
|
||||
'ClosedGeneratorException::getPrevious' => ['Throwable|ClosedGeneratorException|null'],
|
||||
'ClosedGeneratorException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'ClosedGeneratorException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'ClosedGeneratorException::getTraceAsString' => ['string'],
|
||||
'closedir' => ['void', 'dir_handle='=>'resource'],
|
||||
'closelog' => ['bool'],
|
||||
@ -2065,7 +2065,7 @@ return [
|
||||
'DomainException::getLine' => ['int'],
|
||||
'DomainException::getMessage' => ['string'],
|
||||
'DomainException::getPrevious' => ['Throwable|DomainException|null'],
|
||||
'DomainException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'DomainException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'DomainException::getTraceAsString' => ['string'],
|
||||
'DOMAttr::__construct' => ['void', 'name'=>'string', 'value='=>'string'],
|
||||
'DOMAttr::getLineNo' => ['int'],
|
||||
@ -2528,7 +2528,7 @@ return [
|
||||
'Error::getLine' => ['int'],
|
||||
'Error::getMessage' => ['string'],
|
||||
'Error::getPrevious' => ['Throwable|Error|null'],
|
||||
'Error::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'Error::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'Error::getTraceAsString' => ['string'],
|
||||
'error_clear_last' => ['void'],
|
||||
'error_get_last' => ['?array{type:int,message:string,file:string,line:int}'],
|
||||
@ -2543,7 +2543,7 @@ return [
|
||||
'ErrorException::getMessage' => ['string'],
|
||||
'ErrorException::getPrevious' => ['Throwable|ErrorException|null'],
|
||||
'ErrorException::getSeverity' => ['int'],
|
||||
'ErrorException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'ErrorException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'ErrorException::getTraceAsString' => ['string'],
|
||||
'escapeshellarg' => ['string', 'arg'=>'string'],
|
||||
'escapeshellcmd' => ['string', 'command'=>'string'],
|
||||
@ -2911,7 +2911,7 @@ return [
|
||||
'Exception::getLine' => ['int'],
|
||||
'Exception::getMessage' => ['string'],
|
||||
'Exception::getPrevious' => ['?Throwable|?Exception'],
|
||||
'Exception::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'Exception::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'Exception::getTraceAsString' => ['string'],
|
||||
'exec' => ['string|false', 'command'=>'string', '&w_output='=>'array', '&w_result_code='=>'int'],
|
||||
'exif_imagetype' => ['int|false', 'filename'=>'string'],
|
||||
@ -6388,7 +6388,7 @@ return [
|
||||
'IntlException::getLine' => ['int'],
|
||||
'IntlException::getMessage' => ['string'],
|
||||
'IntlException::getPrevious' => ['?Throwable'],
|
||||
'IntlException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'IntlException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'IntlException::getTraceAsString' => ['string'],
|
||||
'intlgregcal_create_instance' => ['IntlGregorianCalendar', 'timezoneOrYear='=>'mixed', 'localeOrMonth='=>'string'],
|
||||
'intlgregcal_get_gregorian_change' => ['float', 'calendar'=>'IntlGregorianCalendar'],
|
||||
@ -6528,7 +6528,7 @@ return [
|
||||
'InvalidArgumentException::getLine' => ['int'],
|
||||
'InvalidArgumentException::getMessage' => ['string'],
|
||||
'InvalidArgumentException::getPrevious' => ['Throwable|InvalidArgumentException|null'],
|
||||
'InvalidArgumentException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'InvalidArgumentException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'InvalidArgumentException::getTraceAsString' => ['string'],
|
||||
'ip2long' => ['int|false', 'ip'=>'string'],
|
||||
'iptcembed' => ['string|bool', 'iptc_data'=>'string', 'filename'=>'string', 'spool='=>'int'],
|
||||
@ -6614,7 +6614,7 @@ return [
|
||||
'JsonException::getLine' => ['int'],
|
||||
'JsonException::getMessage' => ['string'],
|
||||
'JsonException::getPrevious' => ['?Throwable'],
|
||||
'JsonException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'JsonException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'JsonException::getTraceAsString' => ['string'],
|
||||
'JsonIncrementalParser::__construct' => ['void', 'depth'=>'', 'options'=>''],
|
||||
'JsonIncrementalParser::get' => ['', 'options'=>''],
|
||||
@ -6822,7 +6822,7 @@ return [
|
||||
'ldap_rename' => ['bool', 'ldap'=>'LDAP\Connection', 'dn'=>'string', 'new_rdn'=>'string', 'new_parent'=>'string', 'delete_old_rdn'=>'bool'],
|
||||
'ldap_rename_ext' => ['LDAP\Connection|false', 'ldap'=>'LDAP\Connection', 'dn'=>'string', 'new_rdn'=>'string', 'new_parent'=>'string', 'delete_old_rdn'=>'bool', 'controls='=>'array'],
|
||||
'ldap_sasl_bind' => ['bool', 'ldap'=>'LDAP\Connection', 'dn='=>'string', 'password='=>'string', 'mech='=>'string', 'realm='=>'string', 'authc_id='=>'string', 'authz_id='=>'string', 'props='=>'string'],
|
||||
'ldap_search' => ['LDAP\Connection|false', 'ldap'=>'LDAP\Connection|LDAP\Connection[]', 'base'=>'string', 'filter'=>'string', 'attributes='=>'array', 'attributes_only='=>'int', 'sizelimit='=>'int', 'timelimit='=>'int', 'deref='=>'int'],
|
||||
'ldap_search' => ['LDAP\Result|false', 'ldap'=>'LDAP\Connection|LDAP\Connection[]', 'base'=>'string', 'filter'=>'string', 'attributes='=>'array', 'attributes_only='=>'int', 'sizelimit='=>'int', 'timelimit='=>'int', 'deref='=>'int'],
|
||||
'ldap_set_option' => ['bool', 'ldap'=>'LDAP\Connection|null', 'option'=>'int', 'value'=>'mixed'],
|
||||
'ldap_set_rebind_proc' => ['bool', 'ldap'=>'LDAP\Connection', 'callback'=>'?callable'],
|
||||
'ldap_start_tls' => ['bool', 'ldap'=>'resource'],
|
||||
@ -6842,7 +6842,7 @@ return [
|
||||
'LengthException::getLine' => ['int'],
|
||||
'LengthException::getMessage' => ['string'],
|
||||
'LengthException::getPrevious' => ['Throwable|LengthException|null'],
|
||||
'LengthException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'LengthException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'LengthException::getTraceAsString' => ['string'],
|
||||
'LevelDB::__construct' => ['void', 'name'=>'string', 'options='=>'array', 'read_options='=>'array', 'write_options='=>'array'],
|
||||
'LevelDB::close' => [''],
|
||||
@ -6954,7 +6954,7 @@ return [
|
||||
'LogicException::getLine' => ['int'],
|
||||
'LogicException::getMessage' => ['string'],
|
||||
'LogicException::getPrevious' => ['Throwable|LogicException|null'],
|
||||
'LogicException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'LogicException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'LogicException::getTraceAsString' => ['string'],
|
||||
'long2ip' => ['string', 'ip'=>'string|int'],
|
||||
'lstat' => ['array|false', 'filename'=>'string'],
|
||||
@ -7665,7 +7665,7 @@ return [
|
||||
'MongoCursorException::getLine' => ['int'],
|
||||
'MongoCursorException::getMessage' => ['string'],
|
||||
'MongoCursorException::getPrevious' => ['Exception|Throwable'],
|
||||
'MongoCursorException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'MongoCursorException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'MongoCursorException::getTraceAsString' => ['string'],
|
||||
'MongoCursorInterface::__construct' => ['void'],
|
||||
'MongoCursorInterface::batchSize' => ['MongoCursorInterface', 'batchSize'=>'int'],
|
||||
@ -7833,7 +7833,7 @@ return [
|
||||
'MongoDB\Driver\Exception\RuntimeException::getLine' => ['int'],
|
||||
'MongoDB\Driver\Exception\RuntimeException::getMessage' => ['string'],
|
||||
'MongoDB\Driver\Exception\RuntimeException::getPrevious' => ['RuntimeException|Throwable'],
|
||||
'MongoDB\Driver\Exception\RuntimeException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'MongoDB\Driver\Exception\RuntimeException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'MongoDB\Driver\Exception\RuntimeException::getTraceAsString' => ['string'],
|
||||
'mongodb\driver\exception\runtimeexception::hasErrorLabel' => ['bool', 'errorLabel'=>'string'],
|
||||
'MongoDB\Driver\Exception\WriteException::__clone' => ['void'],
|
||||
@ -7845,7 +7845,7 @@ return [
|
||||
'MongoDB\Driver\Exception\WriteException::getLine' => ['int'],
|
||||
'MongoDB\Driver\Exception\WriteException::getMessage' => ['string'],
|
||||
'MongoDB\Driver\Exception\WriteException::getPrevious' => ['RuntimeException|Throwable'],
|
||||
'MongoDB\Driver\Exception\WriteException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'MongoDB\Driver\Exception\WriteException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'MongoDB\Driver\Exception\WriteException::getTraceAsString' => ['string'],
|
||||
'MongoDB\Driver\Exception\WriteException::getWriteResult' => ['MongoDB\Driver\WriteResult'],
|
||||
'MongoDB\Driver\Manager::__construct' => ['void', 'uri'=>'string', 'options='=>'array', 'driverOptions='=>'array'],
|
||||
@ -7975,7 +7975,7 @@ return [
|
||||
'MongoException::getLine' => ['int'],
|
||||
'MongoException::getMessage' => ['string'],
|
||||
'MongoException::getPrevious' => ['Exception|Throwable'],
|
||||
'MongoException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'MongoException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'MongoException::getTraceAsString' => ['string'],
|
||||
'MongoGridFS::__construct' => ['void', 'db'=>'MongoDB', 'prefix='=>'string', 'chunks='=>'mixed'],
|
||||
'MongoGridFS::__get' => ['MongoCollection', 'name'=>'string'],
|
||||
@ -8086,7 +8086,7 @@ return [
|
||||
'MongoResultException::getLine' => ['int'],
|
||||
'MongoResultException::getMessage' => ['string'],
|
||||
'MongoResultException::getPrevious' => ['Exception|Throwable'],
|
||||
'MongoResultException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'MongoResultException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'MongoResultException::getTraceAsString' => ['string'],
|
||||
'MongoTimestamp::__construct' => ['void', 'second='=>'int', 'inc='=>'int'],
|
||||
'MongoTimestamp::__toString' => ['string'],
|
||||
@ -8106,7 +8106,7 @@ return [
|
||||
'MongoWriteConcernException::getLine' => ['int'],
|
||||
'MongoWriteConcernException::getMessage' => ['string'],
|
||||
'MongoWriteConcernException::getPrevious' => ['Exception|Throwable'],
|
||||
'MongoWriteConcernException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'MongoWriteConcernException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'MongoWriteConcernException::getTraceAsString' => ['string'],
|
||||
'monitor_custom_event' => ['void', 'class'=>'string', 'text'=>'string', 'severe='=>'int', 'user_data='=>'mixed'],
|
||||
'monitor_httperror_event' => ['void', 'error_code'=>'int', 'url'=>'string', 'severe='=>'int'],
|
||||
@ -9313,7 +9313,7 @@ return [
|
||||
'opendir' => ['resource|false', 'directory'=>'string', 'context='=>'resource'],
|
||||
'openlog' => ['bool', 'prefix'=>'string', 'flags'=>'int', 'facility'=>'int'],
|
||||
'openssl_cipher_iv_length' => ['int|false', 'cipher_algo'=>'string'],
|
||||
'openssl_csr_export' => ['bool', 'csr'=>'OpenSSLCertificateSigningRequest|string', '&w_output'=>'OpenSSLAsymmetricKey', 'no_text='=>'bool'],
|
||||
'openssl_csr_export' => ['bool', 'csr'=>'OpenSSLCertificateSigningRequest|string', '&w_output'=>'string', 'no_text='=>'bool'],
|
||||
'openssl_csr_export_to_file' => ['bool', 'csr'=>'OpenSSLCertificateSigningRequest|string', 'output_filename'=>'string', 'no_text='=>'bool'],
|
||||
'openssl_csr_get_public_key' => ['OpenSSLAsymmetricKey|false', 'csr'=>'OpenSSLCertificateSigningRequest|string', 'short_names='=>'bool'],
|
||||
'openssl_csr_get_subject' => ['array|false', 'csr'=>'OpenSSLCertificateSigningRequest|string', 'short_names='=>'bool'],
|
||||
@ -9384,7 +9384,7 @@ return [
|
||||
'OutOfBoundsException::getLine' => ['int'],
|
||||
'OutOfBoundsException::getMessage' => ['string'],
|
||||
'OutOfBoundsException::getPrevious' => ['Throwable|OutOfBoundsException|null'],
|
||||
'OutOfBoundsException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'OutOfBoundsException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'OutOfBoundsException::getTraceAsString' => ['string'],
|
||||
'OutOfRangeException::__clone' => ['void'],
|
||||
'OutOfRangeException::__construct' => ['void', 'message='=>'string', 'code='=>'int', 'previous='=>'?Throwable|?OutOfRangeException'],
|
||||
@ -9394,7 +9394,7 @@ return [
|
||||
'OutOfRangeException::getLine' => ['int'],
|
||||
'OutOfRangeException::getMessage' => ['string'],
|
||||
'OutOfRangeException::getPrevious' => ['Throwable|OutOfRangeException|null'],
|
||||
'OutOfRangeException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'OutOfRangeException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'OutOfRangeException::getTraceAsString' => ['string'],
|
||||
'output_add_rewrite_var' => ['bool', 'name'=>'string', 'value'=>'string'],
|
||||
'output_cache_disable' => ['void'],
|
||||
@ -9421,7 +9421,7 @@ return [
|
||||
'OverflowException::getLine' => ['int'],
|
||||
'OverflowException::getMessage' => ['string'],
|
||||
'OverflowException::getPrevious' => ['Throwable|OverflowException|null'],
|
||||
'OverflowException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'OverflowException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'OverflowException::getTraceAsString' => ['string'],
|
||||
'overload' => ['', 'class_name'=>'string'],
|
||||
'override_function' => ['bool', 'function_name'=>'string', 'function_args'=>'string', 'function_code'=>'string'],
|
||||
@ -9513,7 +9513,7 @@ return [
|
||||
'ParseError::getLine' => ['int'],
|
||||
'ParseError::getMessage' => ['string'],
|
||||
'ParseError::getPrevious' => ['Throwable|ParseError|null'],
|
||||
'ParseError::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'ParseError::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'ParseError::getTraceAsString' => ['string'],
|
||||
'parsekit_compile_file' => ['array', 'filename'=>'string', 'errors='=>'array', 'options='=>'int'],
|
||||
'parsekit_compile_string' => ['array', 'phpcode'=>'string', 'errors='=>'array', 'options='=>'int'],
|
||||
@ -9897,7 +9897,7 @@ return [
|
||||
'PDOException::getLine' => ['int'],
|
||||
'PDOException::getMessage' => ['string'],
|
||||
'PDOException::getPrevious' => ['?Throwable'],
|
||||
'PDOException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'PDOException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'PDOException::getTraceAsString' => ['string'],
|
||||
'PDOStatement::__sleep' => ['list<string>'],
|
||||
'PDOStatement::__wakeup' => ['void'],
|
||||
@ -10516,7 +10516,7 @@ return [
|
||||
'RangeException::getLine' => ['int'],
|
||||
'RangeException::getMessage' => ['string'],
|
||||
'RangeException::getPrevious' => ['Throwable|RangeException|null'],
|
||||
'RangeException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'RangeException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'RangeException::getTraceAsString' => ['string'],
|
||||
'rar_allow_broken_set' => ['bool', 'rarfile'=>'RarArchive', 'allow_broken'=>'bool'],
|
||||
'rar_broken_is' => ['bool', 'rarfile'=>'rararchive'],
|
||||
@ -10555,7 +10555,7 @@ return [
|
||||
'RarException::getLine' => ['int'],
|
||||
'RarException::getMessage' => ['string'],
|
||||
'RarException::getPrevious' => ['Exception|Throwable'],
|
||||
'RarException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'RarException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'RarException::getTraceAsString' => ['string'],
|
||||
'RarException::isUsingExceptions' => ['bool'],
|
||||
'RarException::setUsingExceptions' => ['RarEntry', 'using_exceptions'=>'bool'],
|
||||
@ -11761,7 +11761,7 @@ return [
|
||||
'RuntimeException::getLine' => ['int'],
|
||||
'RuntimeException::getMessage' => ['string'],
|
||||
'RuntimeException::getPrevious' => ['Throwable|RuntimeException|null'],
|
||||
'RuntimeException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'RuntimeException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'RuntimeException::getTraceAsString' => ['string'],
|
||||
'SAMConnection::commit' => ['bool'],
|
||||
'SAMConnection::connect' => ['bool', 'protocol'=>'string', 'properties='=>'array'],
|
||||
@ -12263,7 +12263,7 @@ return [
|
||||
'SoapFault::getLine' => ['int'],
|
||||
'SoapFault::getMessage' => ['string'],
|
||||
'SoapFault::getPrevious' => ['?Exception|?Throwable'],
|
||||
'SoapFault::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'SoapFault::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'SoapFault::getTraceAsString' => ['string'],
|
||||
'SoapFault::SoapFault' => ['object', 'faultcode'=>'string', 'faultstring'=>'string', 'faultactor='=>'?string', 'detail='=>'?mixed', 'faultname='=>'?string', 'headerfault='=>'?mixed'],
|
||||
'SoapHeader::__construct' => ['void', 'namespace'=>'string', 'name'=>'string', 'data='=>'mixed', 'mustunderstand='=>'bool', 'actor='=>'string'],
|
||||
@ -12443,7 +12443,7 @@ return [
|
||||
'SolrClientException::getLine' => ['int'],
|
||||
'SolrClientException::getMessage' => ['string'],
|
||||
'SolrClientException::getPrevious' => ['?Exception|?Throwable'],
|
||||
'SolrClientException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'SolrClientException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'SolrClientException::getTraceAsString' => ['string'],
|
||||
'SolrCollapseFunction::__construct' => ['void', 'field'=>'string'],
|
||||
'SolrCollapseFunction::__toString' => ['string'],
|
||||
@ -12735,7 +12735,7 @@ return [
|
||||
'SolrException::getLine' => ['int'],
|
||||
'SolrException::getMessage' => ['string'],
|
||||
'SolrException::getPrevious' => ['Exception|Throwable'],
|
||||
'SolrException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'SolrException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'SolrException::getTraceAsString' => ['string'],
|
||||
'SolrGenericResponse::__construct' => ['void'],
|
||||
'SolrGenericResponse::__destruct' => ['void'],
|
||||
@ -12760,7 +12760,7 @@ return [
|
||||
'SolrIllegalArgumentException::getLine' => ['int'],
|
||||
'SolrIllegalArgumentException::getMessage' => ['string'],
|
||||
'SolrIllegalArgumentException::getPrevious' => ['Exception|Throwable'],
|
||||
'SolrIllegalArgumentException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'SolrIllegalArgumentException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'SolrIllegalArgumentException::getTraceAsString' => ['string'],
|
||||
'SolrIllegalOperationException::__clone' => ['void'],
|
||||
'SolrIllegalOperationException::__construct' => ['void', 'message='=>'string', 'code='=>'int', 'previous='=>'?Exception|?Throwable'],
|
||||
@ -12772,7 +12772,7 @@ return [
|
||||
'SolrIllegalOperationException::getLine' => ['int'],
|
||||
'SolrIllegalOperationException::getMessage' => ['string'],
|
||||
'SolrIllegalOperationException::getPrevious' => ['Exception|Throwable'],
|
||||
'SolrIllegalOperationException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'SolrIllegalOperationException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'SolrIllegalOperationException::getTraceAsString' => ['string'],
|
||||
'SolrInputDocument::__clone' => ['void'],
|
||||
'SolrInputDocument::__construct' => ['void'],
|
||||
@ -13080,7 +13080,7 @@ return [
|
||||
'SolrServerException::getLine' => ['int'],
|
||||
'SolrServerException::getMessage' => ['string'],
|
||||
'SolrServerException::getPrevious' => ['Exception|Throwable'],
|
||||
'SolrServerException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'SolrServerException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'SolrServerException::getTraceAsString' => ['string'],
|
||||
'SolrUpdateResponse::__construct' => ['void'],
|
||||
'SolrUpdateResponse::__destruct' => ['void'],
|
||||
@ -13561,7 +13561,7 @@ return [
|
||||
'SQLiteException::getLine' => ['int'],
|
||||
'SQLiteException::getMessage' => ['string'],
|
||||
'SQLiteException::getPrevious' => ['RuntimeException|Throwable|null'],
|
||||
'SQLiteException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'SQLiteException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'SQLiteException::getTraceAsString' => ['string'],
|
||||
'SQLiteResult::__construct' => ['void'],
|
||||
'SQLiteResult::column' => ['mixed', 'index_or_name'=>'', 'decode_binary='=>'bool'],
|
||||
@ -14560,7 +14560,7 @@ return [
|
||||
'Throwable::getLine' => ['int'],
|
||||
'Throwable::getMessage' => ['string'],
|
||||
'Throwable::getPrevious' => ['?Throwable'],
|
||||
'Throwable::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'Throwable::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'Throwable::getTraceAsString' => ['string'],
|
||||
'tidy::__construct' => ['void', 'filename='=>'string', 'config='=>'', 'encoding='=>'string', 'useIncludePath='=>'bool'],
|
||||
'tidy::body' => ['tidyNode'],
|
||||
@ -14880,7 +14880,7 @@ return [
|
||||
'TypeError::getLine' => ['int'],
|
||||
'TypeError::getMessage' => ['string'],
|
||||
'TypeError::getPrevious' => ['Throwable|TypeError|null'],
|
||||
'TypeError::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'TypeError::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'TypeError::getTraceAsString' => ['string'],
|
||||
'uasort' => ['bool', '&rw_array'=>'array', 'callback'=>'callable(mixed,mixed):int'],
|
||||
'ucfirst' => ['string', 'string'=>'string'],
|
||||
@ -15103,7 +15103,7 @@ return [
|
||||
'UnderflowException::getLine' => ['int'],
|
||||
'UnderflowException::getMessage' => ['string'],
|
||||
'UnderflowException::getPrevious' => ['Throwable|UnderflowException|null'],
|
||||
'UnderflowException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'UnderflowException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'UnderflowException::getTraceAsString' => ['string'],
|
||||
'UnexpectedValueException::__clone' => ['void'],
|
||||
'UnexpectedValueException::__construct' => ['void', 'message='=>'string', 'code='=>'int', 'previous='=>'?Throwable|?UnexpectedValueException'],
|
||||
@ -15113,7 +15113,7 @@ return [
|
||||
'UnexpectedValueException::getLine' => ['int'],
|
||||
'UnexpectedValueException::getMessage' => ['string'],
|
||||
'UnexpectedValueException::getPrevious' => ['Throwable|UnexpectedValueException|null'],
|
||||
'UnexpectedValueException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'UnexpectedValueException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'UnexpectedValueException::getTraceAsString' => ['string'],
|
||||
'uniqid' => ['non-empty-string', 'prefix='=>'string', 'more_entropy='=>'bool'],
|
||||
'unixtojd' => ['int', 'timestamp='=>'int'],
|
||||
@ -15206,7 +15206,7 @@ return [
|
||||
'V8JsScriptException::getLine' => ['int'],
|
||||
'V8JsScriptException::getMessage' => ['string'],
|
||||
'V8JsScriptException::getPrevious' => ['Exception|Throwable'],
|
||||
'V8JsScriptException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'V8JsScriptException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'V8JsScriptException::getTraceAsString' => ['string'],
|
||||
'var_dump' => ['void', 'value'=>'mixed', '...values='=>'mixed'],
|
||||
'var_export' => ['?string', 'value'=>'mixed', 'return='=>'bool'],
|
||||
@ -16556,7 +16556,7 @@ return [
|
||||
'Yar_Client_Exception::getLine' => ['int'],
|
||||
'Yar_Client_Exception::getMessage' => ['string'],
|
||||
'Yar_Client_Exception::getPrevious' => ['?Exception|?Throwable'],
|
||||
'Yar_Client_Exception::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'Yar_Client_Exception::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'Yar_Client_Exception::getTraceAsString' => ['string'],
|
||||
'Yar_Client_Exception::getType' => ['string'],
|
||||
'Yar_Concurrent_Client::call' => ['int', 'uri'=>'string', 'method'=>'string', 'parameters'=>'array', 'callback='=>'callable'],
|
||||
@ -16573,7 +16573,7 @@ return [
|
||||
'Yar_Server_Exception::getLine' => ['int'],
|
||||
'Yar_Server_Exception::getMessage' => ['string'],
|
||||
'Yar_Server_Exception::getPrevious' => ['?Exception|?Throwable'],
|
||||
'Yar_Server_Exception::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'Yar_Server_Exception::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'Yar_Server_Exception::getTraceAsString' => ['string'],
|
||||
'Yar_Server_Exception::getType' => ['string'],
|
||||
'yaz_addinfo' => ['string', 'id'=>'resource'],
|
||||
|
@ -26,7 +26,7 @@ return [
|
||||
'JsonException::getLine' => ['int'],
|
||||
'JsonException::getMessage' => ['string'],
|
||||
'JsonException::getPrevious' => ['?Throwable'],
|
||||
'JsonException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'JsonException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'JsonException::getTraceAsString' => ['string'],
|
||||
'SplPriorityQueue::isCorrupted' => ['bool'],
|
||||
'array_key_first' => ['int|string|null', 'array'=>'array'],
|
||||
|
@ -971,7 +971,7 @@ return [
|
||||
],
|
||||
'openssl_csr_export' => [
|
||||
'old' => ['bool', 'csr'=>'string|resource', '&w_output'=>'string', 'no_text='=>'bool'],
|
||||
'new' => ['bool', 'csr'=>'OpenSSLCertificateSigningRequest|string', '&w_output'=>'OpenSSLAsymmetricKey', 'no_text='=>'bool'],
|
||||
'new' => ['bool', 'csr'=>'OpenSSLCertificateSigningRequest|string', '&w_output'=>'string', 'no_text='=>'bool'],
|
||||
],
|
||||
'openssl_csr_export_to_file' => [
|
||||
'old' => ['bool', 'csr'=>'string|resource', 'output_filename'=>'string', 'no_text='=>'bool'],
|
||||
|
@ -627,7 +627,7 @@ return [
|
||||
],
|
||||
'ldap_search' => [
|
||||
'old' => ['resource|false', 'ldap'=>'resource|resource[]', 'base'=>'string', 'filter'=>'string', 'attributes='=>'array', 'attributes_only='=>'int', 'sizelimit='=>'int', 'timelimit='=>'int', 'deref='=>'int'],
|
||||
'new' => ['LDAP\Connection|false', 'ldap'=>'LDAP\Connection|LDAP\Connection[]', 'base'=>'string', 'filter'=>'string', 'attributes='=>'array', 'attributes_only='=>'int', 'sizelimit='=>'int', 'timelimit='=>'int', 'deref='=>'int'],
|
||||
'new' => ['LDAP\Result|false', 'ldap'=>'LDAP\Connection|LDAP\Connection[]', 'base'=>'string', 'filter'=>'string', 'attributes='=>'array', 'attributes_only='=>'int', 'sizelimit='=>'int', 'timelimit='=>'int', 'deref='=>'int'],
|
||||
],
|
||||
'ldap_set_option' => [
|
||||
'old' => ['bool', 'ldap'=>'resource|null', 'option'=>'int', 'value'=>'mixed'],
|
||||
|
@ -196,7 +196,7 @@ return [
|
||||
'ArgumentCountError::getLine' => ['int'],
|
||||
'ArgumentCountError::getMessage' => ['string'],
|
||||
'ArgumentCountError::getPrevious' => ['?Throwable'],
|
||||
'ArgumentCountError::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'ArgumentCountError::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'ArgumentCountError::getTraceAsString' => ['string'],
|
||||
'ArithmeticError::__clone' => ['void'],
|
||||
'ArithmeticError::__construct' => ['void', 'message='=>'string', 'code='=>'int', 'previous='=>'?Throwable|?Error'],
|
||||
@ -207,7 +207,7 @@ return [
|
||||
'ArithmeticError::getLine' => ['int'],
|
||||
'ArithmeticError::getMessage' => ['string'],
|
||||
'ArithmeticError::getPrevious' => ['?Throwable'],
|
||||
'ArithmeticError::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'ArithmeticError::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'ArithmeticError::getTraceAsString' => ['string'],
|
||||
'ArrayAccess::offsetExists' => ['bool', 'offset'=>'mixed'],
|
||||
'ArrayAccess::offsetGet' => ['mixed', 'offset'=>'mixed'],
|
||||
@ -267,7 +267,7 @@ return [
|
||||
'BadFunctionCallException::getLine' => ['int'],
|
||||
'BadFunctionCallException::getMessage' => ['string'],
|
||||
'BadFunctionCallException::getPrevious' => ['?Throwable|?BadFunctionCallException'],
|
||||
'BadFunctionCallException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'BadFunctionCallException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'BadFunctionCallException::getTraceAsString' => ['string'],
|
||||
'BadMethodCallException::__clone' => ['void'],
|
||||
'BadMethodCallException::__construct' => ['void', 'message='=>'string', 'code='=>'int', 'previous='=>'?Throwable|?BadMethodCallException'],
|
||||
@ -277,7 +277,7 @@ return [
|
||||
'BadMethodCallException::getLine' => ['int'],
|
||||
'BadMethodCallException::getMessage' => ['string'],
|
||||
'BadMethodCallException::getPrevious' => ['?Throwable|?BadMethodCallException'],
|
||||
'BadMethodCallException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'BadMethodCallException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'BadMethodCallException::getTraceAsString' => ['string'],
|
||||
'COM::__call' => ['', 'name'=>'', 'args'=>''],
|
||||
'COM::__construct' => ['void', 'module_name'=>'string', 'server_name='=>'mixed', 'codepage='=>'int', 'typelib='=>'string'],
|
||||
@ -536,7 +536,7 @@ return [
|
||||
'ClosedGeneratorException::getLine' => ['int'],
|
||||
'ClosedGeneratorException::getMessage' => ['string'],
|
||||
'ClosedGeneratorException::getPrevious' => ['Throwable|ClosedGeneratorException|null'],
|
||||
'ClosedGeneratorException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'ClosedGeneratorException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'ClosedGeneratorException::getTraceAsString' => ['string'],
|
||||
'Closure::__construct' => ['void'],
|
||||
'Closure::__invoke' => ['', '...args='=>''],
|
||||
@ -1154,7 +1154,7 @@ return [
|
||||
'DomainException::getLine' => ['int'],
|
||||
'DomainException::getMessage' => ['string'],
|
||||
'DomainException::getPrevious' => ['Throwable|DomainException|null'],
|
||||
'DomainException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'DomainException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'DomainException::getTraceAsString' => ['string'],
|
||||
'Ds\Collection::clear' => ['void'],
|
||||
'Ds\Collection::copy' => ['Ds\Collection'],
|
||||
@ -1379,7 +1379,7 @@ return [
|
||||
'Error::getLine' => ['int'],
|
||||
'Error::getMessage' => ['string'],
|
||||
'Error::getPrevious' => ['Throwable|Error|null'],
|
||||
'Error::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'Error::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'Error::getTraceAsString' => ['string'],
|
||||
'ErrorException::__clone' => ['void'],
|
||||
'ErrorException::__construct' => ['void', 'message='=>'string', 'code='=>'int', 'severity='=>'int', 'filename='=>'string', 'line='=>'int', 'previous='=>'?Throwable|?ErrorException'],
|
||||
@ -1390,7 +1390,7 @@ return [
|
||||
'ErrorException::getMessage' => ['string'],
|
||||
'ErrorException::getPrevious' => ['Throwable|ErrorException|null'],
|
||||
'ErrorException::getSeverity' => ['int'],
|
||||
'ErrorException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'ErrorException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'ErrorException::getTraceAsString' => ['string'],
|
||||
'Ev::backend' => ['int'],
|
||||
'Ev::depth' => ['int'],
|
||||
@ -1724,7 +1724,7 @@ return [
|
||||
'Exception::getLine' => ['int'],
|
||||
'Exception::getMessage' => ['string'],
|
||||
'Exception::getPrevious' => ['?Throwable|?Exception'],
|
||||
'Exception::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'Exception::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'Exception::getTraceAsString' => ['string'],
|
||||
'FANNConnection::__construct' => ['void', 'from_neuron'=>'int', 'to_neuron'=>'int', 'weight'=>'float'],
|
||||
'FANNConnection::getFromNeuron' => ['int'],
|
||||
@ -3388,7 +3388,7 @@ return [
|
||||
'IntlException::getLine' => ['int'],
|
||||
'IntlException::getMessage' => ['string'],
|
||||
'IntlException::getPrevious' => ['?Throwable'],
|
||||
'IntlException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'IntlException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'IntlException::getTraceAsString' => ['string'],
|
||||
'IntlGregorianCalendar::__construct' => ['void'],
|
||||
'IntlGregorianCalendar::add' => ['bool', 'field'=>'int', 'amount'=>'int'],
|
||||
@ -3504,7 +3504,7 @@ return [
|
||||
'InvalidArgumentException::getLine' => ['int'],
|
||||
'InvalidArgumentException::getMessage' => ['string'],
|
||||
'InvalidArgumentException::getPrevious' => ['Throwable|InvalidArgumentException|null'],
|
||||
'InvalidArgumentException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'InvalidArgumentException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'InvalidArgumentException::getTraceAsString' => ['string'],
|
||||
'Iterator::current' => ['mixed'],
|
||||
'Iterator::key' => ['mixed'],
|
||||
@ -3600,7 +3600,7 @@ return [
|
||||
'LengthException::getLine' => ['int'],
|
||||
'LengthException::getMessage' => ['string'],
|
||||
'LengthException::getPrevious' => ['Throwable|LengthException|null'],
|
||||
'LengthException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'LengthException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'LengthException::getTraceAsString' => ['string'],
|
||||
'LevelDB::__construct' => ['void', 'name'=>'string', 'options='=>'array', 'read_options='=>'array', 'write_options='=>'array'],
|
||||
'LevelDB::close' => [''],
|
||||
@ -3669,7 +3669,7 @@ return [
|
||||
'LogicException::getLine' => ['int'],
|
||||
'LogicException::getMessage' => ['string'],
|
||||
'LogicException::getPrevious' => ['Throwable|LogicException|null'],
|
||||
'LogicException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'LogicException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'LogicException::getTraceAsString' => ['string'],
|
||||
'Lua::__call' => ['mixed', 'lua_func'=>'callable', 'args='=>'array', 'use_self='=>'int'],
|
||||
'Lua::__construct' => ['void', 'lua_script_file'=>'string'],
|
||||
@ -3936,7 +3936,7 @@ return [
|
||||
'MongoCursorException::getLine' => ['int'],
|
||||
'MongoCursorException::getMessage' => ['string'],
|
||||
'MongoCursorException::getPrevious' => ['Exception|Throwable'],
|
||||
'MongoCursorException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'MongoCursorException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'MongoCursorException::getTraceAsString' => ['string'],
|
||||
'MongoCursorInterface::__construct' => ['void'],
|
||||
'MongoCursorInterface::batchSize' => ['MongoCursorInterface', 'batchSize'=>'int'],
|
||||
@ -4103,7 +4103,7 @@ return [
|
||||
'MongoDB\Driver\Exception\RuntimeException::getLine' => ['int'],
|
||||
'MongoDB\Driver\Exception\RuntimeException::getMessage' => ['string'],
|
||||
'MongoDB\Driver\Exception\RuntimeException::getPrevious' => ['RuntimeException|Throwable'],
|
||||
'MongoDB\Driver\Exception\RuntimeException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'MongoDB\Driver\Exception\RuntimeException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'MongoDB\Driver\Exception\RuntimeException::getTraceAsString' => ['string'],
|
||||
'MongoDB\Driver\Exception\WriteException::__clone' => ['void'],
|
||||
'MongoDB\Driver\Exception\WriteException::__construct' => ['void', 'message='=>'string', 'code='=>'int', 'previous='=>'?RuntimeException|?Throwable'],
|
||||
@ -4114,7 +4114,7 @@ return [
|
||||
'MongoDB\Driver\Exception\WriteException::getLine' => ['int'],
|
||||
'MongoDB\Driver\Exception\WriteException::getMessage' => ['string'],
|
||||
'MongoDB\Driver\Exception\WriteException::getPrevious' => ['RuntimeException|Throwable'],
|
||||
'MongoDB\Driver\Exception\WriteException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'MongoDB\Driver\Exception\WriteException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'MongoDB\Driver\Exception\WriteException::getTraceAsString' => ['string'],
|
||||
'MongoDB\Driver\Exception\WriteException::getWriteResult' => ['MongoDB\Driver\WriteResult'],
|
||||
'MongoDB\Driver\Manager::__construct' => ['void', 'uri'=>'string', 'options='=>'array', 'driverOptions='=>'array'],
|
||||
@ -4203,7 +4203,7 @@ return [
|
||||
'MongoException::getLine' => ['int'],
|
||||
'MongoException::getMessage' => ['string'],
|
||||
'MongoException::getPrevious' => ['Exception|Throwable'],
|
||||
'MongoException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'MongoException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'MongoException::getTraceAsString' => ['string'],
|
||||
'MongoGridFS::__construct' => ['void', 'db'=>'MongoDB', 'prefix='=>'string', 'chunks='=>'mixed'],
|
||||
'MongoGridFS::__get' => ['MongoCollection', 'name'=>'string'],
|
||||
@ -4314,7 +4314,7 @@ return [
|
||||
'MongoResultException::getLine' => ['int'],
|
||||
'MongoResultException::getMessage' => ['string'],
|
||||
'MongoResultException::getPrevious' => ['Exception|Throwable'],
|
||||
'MongoResultException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'MongoResultException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'MongoResultException::getTraceAsString' => ['string'],
|
||||
'MongoTimestamp::__construct' => ['void', 'second='=>'int', 'inc='=>'int'],
|
||||
'MongoTimestamp::__toString' => ['string'],
|
||||
@ -4334,7 +4334,7 @@ return [
|
||||
'MongoWriteConcernException::getLine' => ['int'],
|
||||
'MongoWriteConcernException::getMessage' => ['string'],
|
||||
'MongoWriteConcernException::getPrevious' => ['Exception|Throwable'],
|
||||
'MongoWriteConcernException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'MongoWriteConcernException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'MongoWriteConcernException::getTraceAsString' => ['string'],
|
||||
'MultipleIterator::__construct' => ['void', 'flags='=>'int'],
|
||||
'MultipleIterator::attachIterator' => ['void', 'iterator'=>'Iterator', 'infos='=>'string'],
|
||||
@ -4515,7 +4515,7 @@ return [
|
||||
'OutOfBoundsException::getLine' => ['int'],
|
||||
'OutOfBoundsException::getMessage' => ['string'],
|
||||
'OutOfBoundsException::getPrevious' => ['Throwable|OutOfBoundsException|null'],
|
||||
'OutOfBoundsException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'OutOfBoundsException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'OutOfBoundsException::getTraceAsString' => ['string'],
|
||||
'OutOfRangeException::__clone' => ['void'],
|
||||
'OutOfRangeException::__construct' => ['void', 'message='=>'string', 'code='=>'int', 'previous='=>'?Throwable|?OutOfRangeException'],
|
||||
@ -4525,7 +4525,7 @@ return [
|
||||
'OutOfRangeException::getLine' => ['int'],
|
||||
'OutOfRangeException::getMessage' => ['string'],
|
||||
'OutOfRangeException::getPrevious' => ['Throwable|OutOfRangeException|null'],
|
||||
'OutOfRangeException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'OutOfRangeException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'OutOfRangeException::getTraceAsString' => ['string'],
|
||||
'OuterIterator::current' => ['mixed'],
|
||||
'OuterIterator::getInnerIterator' => ['Iterator'],
|
||||
@ -4541,7 +4541,7 @@ return [
|
||||
'OverflowException::getLine' => ['int'],
|
||||
'OverflowException::getMessage' => ['string'],
|
||||
'OverflowException::getPrevious' => ['Throwable|OverflowException|null'],
|
||||
'OverflowException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'OverflowException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'OverflowException::getTraceAsString' => ['string'],
|
||||
'OwsrequestObj::__construct' => ['void'],
|
||||
'OwsrequestObj::addParameter' => ['int', 'name'=>'string', 'value'=>'string'],
|
||||
@ -4895,7 +4895,7 @@ return [
|
||||
'PDOException::getLine' => ['int'],
|
||||
'PDOException::getMessage' => ['string'],
|
||||
'PDOException::getPrevious' => ['?Throwable'],
|
||||
'PDOException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'PDOException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'PDOException::getTraceAsString' => ['string'],
|
||||
'PDOStatement::__sleep' => ['list<string>'],
|
||||
'PDOStatement::__wakeup' => ['void'],
|
||||
@ -4988,7 +4988,7 @@ return [
|
||||
'ParseError::getLine' => ['int'],
|
||||
'ParseError::getMessage' => ['string'],
|
||||
'ParseError::getPrevious' => ['Throwable|ParseError|null'],
|
||||
'ParseError::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'ParseError::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'ParseError::getTraceAsString' => ['string'],
|
||||
'Phar::__construct' => ['void', 'fname'=>'string', 'flags='=>'int', 'alias='=>'string'],
|
||||
'Phar::addEmptyDir' => ['void', 'dirname'=>'string'],
|
||||
@ -5162,7 +5162,7 @@ return [
|
||||
'RangeException::getLine' => ['int'],
|
||||
'RangeException::getMessage' => ['string'],
|
||||
'RangeException::getPrevious' => ['Throwable|RangeException|null'],
|
||||
'RangeException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'RangeException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'RangeException::getTraceAsString' => ['string'],
|
||||
'RarArchive::__toString' => ['string'],
|
||||
'RarArchive::close' => ['bool'],
|
||||
@ -5192,7 +5192,7 @@ return [
|
||||
'RarException::getLine' => ['int'],
|
||||
'RarException::getMessage' => ['string'],
|
||||
'RarException::getPrevious' => ['Exception|Throwable'],
|
||||
'RarException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'RarException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'RarException::getTraceAsString' => ['string'],
|
||||
'RarException::isUsingExceptions' => ['bool'],
|
||||
'RarException::setUsingExceptions' => ['RarEntry', 'using_exceptions'=>'bool'],
|
||||
@ -6249,7 +6249,7 @@ return [
|
||||
'RuntimeException::getLine' => ['int'],
|
||||
'RuntimeException::getMessage' => ['string'],
|
||||
'RuntimeException::getPrevious' => ['Throwable|RuntimeException|null'],
|
||||
'RuntimeException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'RuntimeException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'RuntimeException::getTraceAsString' => ['string'],
|
||||
'SAMConnection::commit' => ['bool'],
|
||||
'SAMConnection::connect' => ['bool', 'protocol'=>'string', 'properties='=>'array'],
|
||||
@ -6409,7 +6409,7 @@ return [
|
||||
'SQLiteException::getLine' => ['int'],
|
||||
'SQLiteException::getMessage' => ['string'],
|
||||
'SQLiteException::getPrevious' => ['RuntimeException|Throwable|null'],
|
||||
'SQLiteException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'SQLiteException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'SQLiteException::getTraceAsString' => ['string'],
|
||||
'SQLiteResult::__construct' => ['void'],
|
||||
'SQLiteResult::column' => ['mixed', 'index_or_name'=>'', 'decode_binary='=>'bool'],
|
||||
@ -6843,7 +6843,7 @@ return [
|
||||
'SoapFault::getLine' => ['int'],
|
||||
'SoapFault::getMessage' => ['string'],
|
||||
'SoapFault::getPrevious' => ['?Exception|?Throwable'],
|
||||
'SoapFault::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'SoapFault::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'SoapFault::getTraceAsString' => ['string'],
|
||||
'SoapHeader::SoapHeader' => ['object', 'namespace'=>'string', 'name'=>'string', 'data='=>'mixed', 'mustunderstand='=>'bool', 'actor='=>'string'],
|
||||
'SoapHeader::__construct' => ['void', 'namespace'=>'string', 'name'=>'string', 'data='=>'mixed', 'mustunderstand='=>'bool', 'actor='=>'string'],
|
||||
@ -6953,7 +6953,7 @@ return [
|
||||
'SolrClientException::getLine' => ['int'],
|
||||
'SolrClientException::getMessage' => ['string'],
|
||||
'SolrClientException::getPrevious' => ['?Exception|?Throwable'],
|
||||
'SolrClientException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'SolrClientException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'SolrClientException::getTraceAsString' => ['string'],
|
||||
'SolrCollapseFunction::__construct' => ['void', 'field'=>'string'],
|
||||
'SolrCollapseFunction::__toString' => ['string'],
|
||||
@ -7245,7 +7245,7 @@ return [
|
||||
'SolrException::getLine' => ['int'],
|
||||
'SolrException::getMessage' => ['string'],
|
||||
'SolrException::getPrevious' => ['Exception|Throwable'],
|
||||
'SolrException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'SolrException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'SolrException::getTraceAsString' => ['string'],
|
||||
'SolrGenericResponse::__construct' => ['void'],
|
||||
'SolrGenericResponse::__destruct' => ['void'],
|
||||
@ -7270,7 +7270,7 @@ return [
|
||||
'SolrIllegalArgumentException::getLine' => ['int'],
|
||||
'SolrIllegalArgumentException::getMessage' => ['string'],
|
||||
'SolrIllegalArgumentException::getPrevious' => ['Exception|Throwable'],
|
||||
'SolrIllegalArgumentException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'SolrIllegalArgumentException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'SolrIllegalArgumentException::getTraceAsString' => ['string'],
|
||||
'SolrIllegalOperationException::__clone' => ['void'],
|
||||
'SolrIllegalOperationException::__construct' => ['void', 'message='=>'string', 'code='=>'int', 'previous='=>'?Exception|?Throwable'],
|
||||
@ -7282,7 +7282,7 @@ return [
|
||||
'SolrIllegalOperationException::getLine' => ['int'],
|
||||
'SolrIllegalOperationException::getMessage' => ['string'],
|
||||
'SolrIllegalOperationException::getPrevious' => ['Exception|Throwable'],
|
||||
'SolrIllegalOperationException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'SolrIllegalOperationException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'SolrIllegalOperationException::getTraceAsString' => ['string'],
|
||||
'SolrInputDocument::__clone' => ['void'],
|
||||
'SolrInputDocument::__construct' => ['void'],
|
||||
@ -7590,7 +7590,7 @@ return [
|
||||
'SolrServerException::getLine' => ['int'],
|
||||
'SolrServerException::getMessage' => ['string'],
|
||||
'SolrServerException::getPrevious' => ['Exception|Throwable'],
|
||||
'SolrServerException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'SolrServerException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'SolrServerException::getTraceAsString' => ['string'],
|
||||
'SolrUpdateResponse::__construct' => ['void'],
|
||||
'SolrUpdateResponse::__destruct' => ['void'],
|
||||
@ -8085,7 +8085,7 @@ return [
|
||||
'Throwable::getLine' => ['int'],
|
||||
'Throwable::getMessage' => ['string'],
|
||||
'Throwable::getPrevious' => ['?Throwable'],
|
||||
'Throwable::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'Throwable::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'Throwable::getTraceAsString' => ['string'],
|
||||
'TokyoTyrant::__construct' => ['void', 'host='=>'string', 'port='=>'int', 'options='=>'array'],
|
||||
'TokyoTyrant::add' => ['int|float', 'key'=>'string', 'increment'=>'float', 'type='=>'int'],
|
||||
@ -8157,7 +8157,7 @@ return [
|
||||
'TypeError::getLine' => ['int'],
|
||||
'TypeError::getMessage' => ['string'],
|
||||
'TypeError::getPrevious' => ['Throwable|TypeError|null'],
|
||||
'TypeError::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'TypeError::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'TypeError::getTraceAsString' => ['string'],
|
||||
'UConverter::__construct' => ['void', 'destination_encoding='=>'string', 'source_encoding='=>'string'],
|
||||
'UConverter::convert' => ['string', 'string'=>'string', 'reverse='=>'bool'],
|
||||
@ -8186,7 +8186,7 @@ return [
|
||||
'UnderflowException::getLine' => ['int'],
|
||||
'UnderflowException::getMessage' => ['string'],
|
||||
'UnderflowException::getPrevious' => ['Throwable|UnderflowException|null'],
|
||||
'UnderflowException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'UnderflowException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'UnderflowException::getTraceAsString' => ['string'],
|
||||
'UnexpectedValueException::__clone' => ['void'],
|
||||
'UnexpectedValueException::__construct' => ['void', 'message='=>'string', 'code='=>'int', 'previous='=>'?Throwable|?UnexpectedValueException'],
|
||||
@ -8196,7 +8196,7 @@ return [
|
||||
'UnexpectedValueException::getLine' => ['int'],
|
||||
'UnexpectedValueException::getMessage' => ['string'],
|
||||
'UnexpectedValueException::getPrevious' => ['Throwable|UnexpectedValueException|null'],
|
||||
'UnexpectedValueException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'UnexpectedValueException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'UnexpectedValueException::getTraceAsString' => ['string'],
|
||||
'V8Js::__construct' => ['void', 'object_name='=>'string', 'variables='=>'array', 'extensions='=>'array', 'report_uncaught_exceptions='=>'bool', 'snapshot_blob='=>'string'],
|
||||
'V8Js::clearPendingException' => [''],
|
||||
@ -8231,7 +8231,7 @@ return [
|
||||
'V8JsScriptException::getLine' => ['int'],
|
||||
'V8JsScriptException::getMessage' => ['string'],
|
||||
'V8JsScriptException::getPrevious' => ['Exception|Throwable'],
|
||||
'V8JsScriptException::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'V8JsScriptException::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'V8JsScriptException::getTraceAsString' => ['string'],
|
||||
'VARIANT::__construct' => ['void', 'value='=>'mixed', 'type='=>'int', 'codepage='=>'int'],
|
||||
'VarnishAdmin::__construct' => ['void', 'args='=>'array'],
|
||||
@ -9249,7 +9249,7 @@ return [
|
||||
'Yar_Client_Exception::getLine' => ['int'],
|
||||
'Yar_Client_Exception::getMessage' => ['string'],
|
||||
'Yar_Client_Exception::getPrevious' => ['?Exception|?Throwable'],
|
||||
'Yar_Client_Exception::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'Yar_Client_Exception::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'Yar_Client_Exception::getTraceAsString' => ['string'],
|
||||
'Yar_Client_Exception::getType' => ['string'],
|
||||
'Yar_Concurrent_Client::call' => ['int', 'uri'=>'string', 'method'=>'string', 'parameters'=>'array', 'callback='=>'callable'],
|
||||
@ -9266,7 +9266,7 @@ return [
|
||||
'Yar_Server_Exception::getLine' => ['int'],
|
||||
'Yar_Server_Exception::getMessage' => ['string'],
|
||||
'Yar_Server_Exception::getPrevious' => ['?Exception|?Throwable'],
|
||||
'Yar_Server_Exception::getTrace' => ['list<array{file:string,line:int,function:string,class?:string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'Yar_Server_Exception::getTrace' => ['list<array{file?:string,line?:int,function:string,class?:class-string,type?:\'::\'|\'->\',args?:array<mixed>}>'],
|
||||
'Yar_Server_Exception::getTraceAsString' => ['string'],
|
||||
'Yar_Server_Exception::getType' => ['string'],
|
||||
'ZMQ::__construct' => ['void'],
|
||||
|
@ -31,7 +31,7 @@ The `@var` tag is supposed to only be used for properties. Psalm, taking a lead
|
||||
|
||||
If `VariableReference` is provided, it should be of the form `$variable` or `$variable->property`. If used above an assignment, Psalm checks whether the `VariableReference` matches the variable being assigned. If they differ, Psalm will assign the `Type` to `VariableReference` and use it in the expression below.
|
||||
|
||||
If no `VariableReference` is given, the annotation tells Psalm that the right hand side of the expression, whether an assignment or a return, is of type `Type`.
|
||||
If no `VariableReference` is given, the annotation tells Psalm that the right-hand side of the expression, whether an assignment or a return, is of type `Type`.
|
||||
|
||||
```php
|
||||
<?php
|
||||
@ -187,7 +187,7 @@ Used to mark a class, property or function as internal to a given namespace. Psa
|
||||
the PHPDoc `@internal` tag. For `@internal`, an issue is raised if the calling code is in a namespace completely
|
||||
unrelated to the namespace of the calling code, i.e. not sharing the first element of the namespace.
|
||||
|
||||
In contrast for `@psalm-internal`, the docbloc line must specify a namespace. An issue is raised if the calling code
|
||||
In contrast for `@psalm-internal`, the docblock line must specify a namespace. An issue is raised if the calling code
|
||||
is not within the given namespace.
|
||||
|
||||
```php
|
||||
@ -551,7 +551,71 @@ Incidentally, it will change the inferred type for the following code:
|
||||
var_dump($a);
|
||||
}
|
||||
```
|
||||
The type of `$a` is `array<array-key, int>` without `@no-named-arguments` but becomes `list<int>` with it, because it exclude the case where the offset would be a string with the name of the parameter
|
||||
The type of `$a` is `array<array-key, int>` without `@no-named-arguments` but becomes `list<int>` with it, because it excludes the case where the offset would be a string with the name of the parameter
|
||||
|
||||
### `@psalm-ignore-variable-property` and `@psalm-ignore-variable-method`
|
||||
|
||||
Instructs Psalm to ignore variable property fetch / variable method call when looking for dead code.
|
||||
```php
|
||||
class Foo
|
||||
{
|
||||
// this property can be deleted by Psalter,
|
||||
// as potential reference in get() is ignored
|
||||
public string $bar = 'bar';
|
||||
|
||||
public function get(string $name): mixed
|
||||
{
|
||||
/** @psalm-ignore-variable-property */
|
||||
return $this->{$name};
|
||||
}
|
||||
}
|
||||
```
|
||||
When Psalm encounters variable property, it treats all properties in given class as potentially referenced.
|
||||
With `@psalm-ignore-variable-property` annotation, this reference is ignored.
|
||||
|
||||
While `PossiblyUnusedProperty` would be emitted in both cases, using `@psalm-ignore-variable-property`
|
||||
would allow [Psalter](../manipulating_code/fixing.md) to delete `Foo::$bar`.
|
||||
|
||||
`@psalm-ignore-variable-method` behaves the same way, but for variable method calls.
|
||||
|
||||
### `@psalm-yield`
|
||||
|
||||
Used to specify the type of value which will be sent back to a generator when an annotated object instance is yielded.
|
||||
|
||||
```php
|
||||
<?php
|
||||
/**
|
||||
* @template-covariant TValue
|
||||
* @psalm-yield TValue
|
||||
*/
|
||||
interface Promise {}
|
||||
|
||||
/**
|
||||
* @template-covariant TValue
|
||||
* @template-implements Promise<TValue>
|
||||
*/
|
||||
class Success implements Promise {
|
||||
/**
|
||||
* @psalm-param TValue $value
|
||||
*/
|
||||
public function __construct($value) {}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Promise<string>
|
||||
*/
|
||||
function fetch(): Promise {
|
||||
return new Success('{"data":[]}');
|
||||
}
|
||||
|
||||
function (): Generator {
|
||||
$data = yield fetch();
|
||||
|
||||
// this is fine, Psalm knows that $data is a string
|
||||
return json_decode($data);
|
||||
};
|
||||
```
|
||||
This annotation supports only generic types, meaning that e.g. `@psalm-yield string` would be ignored.
|
||||
|
||||
## Type Syntax
|
||||
|
||||
|
@ -27,7 +27,7 @@ Psalm has a few different ways to represent arrays in its type system:
|
||||
|
||||
## Generic arrays
|
||||
|
||||
Psalm uses a syntax [borrowed from Java](https://en.wikipedia.org/wiki/Generics_in_Java) that allows you denote the types of both keys *and* values:
|
||||
Psalm uses a syntax [borrowed from Java](https://en.wikipedia.org/wiki/Generics_in_Java) that allows you to denote the types of both keys *and* values:
|
||||
```php
|
||||
/** @return array<TKey, TValue> */
|
||||
```
|
||||
|
@ -10,7 +10,7 @@ Psalm allows you to express a lot of complicated type information in docblocks.
|
||||
|
||||
All docblock types are either [atomic types](type_syntax/atomic_types.md), [union types](type_syntax/union_types.md) or [intersection types](type_syntax/intersection_types.md).
|
||||
|
||||
Additionally Psalm supports PHPDoc’s [type syntax](https://docs.phpdoc.org/latest/guide/guides/types.html), and also the [proposed PHPDoc PSR type syntax](https://github.com/php-fig/fig-standards/blob/master/proposed/phpdoc.md#appendix-a-types).
|
||||
Additionally, Psalm supports PHPDoc’s [type syntax](https://docs.phpdoc.org/latest/guide/guides/types.html), and also the [proposed PHPDoc PSR type syntax](https://github.com/php-fig/fig-standards/blob/master/proposed/phpdoc.md#appendix-a-types).
|
||||
|
||||
## Property declaration types vs Assignment typehints
|
||||
|
||||
|
@ -49,7 +49,7 @@ In the "Server definitions" tab you should add a definition for Psalm:
|
||||
- this should be an absolute path, not just `php`
|
||||
- Args: `vendor/bin/psalm-language-server` (on Windows use `vendor/vimeo/psalm/psalm-language-server`, or for a 'global' install '%APPDATA%' + `\Composer\vendor\vimeo\psalm\psalm-language-server`, where the '%APPDATA%' environment variable is probably something like `C:\Users\<homedir>\AppData\Roaming\`)
|
||||
|
||||
In the "Timeouts" tab you can adjust the initialization timeout. This is important if you have a large project. You should set the "Init" value to the number of milliseconds you allow Psalm to scan your entire project and your project's dependencies. For opening a couple of projects that use large PHP frameworks, on a high end business laptop, try `240000` milliseconds for Init.
|
||||
In the "Timeouts" tab you can adjust the initialization timeout. This is important if you have a large project. You should set the "Init" value to the number of milliseconds you allow Psalm to scan your entire project and your project's dependencies. For opening a couple of projects that use large PHP frameworks, on a high-end business laptop, try `240000` milliseconds for Init.
|
||||
|
||||
## Sublime Text
|
||||
|
||||
|
@ -445,20 +445,26 @@ class ArithmeticOpAnalyzer
|
||||
}
|
||||
|
||||
if ($left_type_part instanceof TTemplateParam || $right_type_part instanceof TTemplateParam) {
|
||||
if ($left_type_part instanceof TTemplateParam && !$left_type_part->as->isInt()) {
|
||||
if ($left_type_part instanceof TTemplateParam
|
||||
&& !$left_type_part->as->isInt()
|
||||
&& !$left_type_part->as->isFloat()
|
||||
) {
|
||||
if ($statements_source && IssueBuffer::accepts(
|
||||
new MixedOperand(
|
||||
'Left operand cannot be a non-int template',
|
||||
'Left operand cannot be a non-numeric template',
|
||||
new CodeLocation($statements_source, $left)
|
||||
),
|
||||
$statements_source->getSuppressedIssues()
|
||||
)) {
|
||||
// fall through
|
||||
}
|
||||
} elseif ($right_type_part instanceof TTemplateParam && !$right_type_part->as->isInt()) {
|
||||
} elseif ($right_type_part instanceof TTemplateParam
|
||||
&& !$right_type_part->as->isInt()
|
||||
&& !$right_type_part->as->isFloat()
|
||||
) {
|
||||
if ($statements_source && IssueBuffer::accepts(
|
||||
new MixedOperand(
|
||||
'Right operand cannot be a non-int template',
|
||||
'Right operand cannot be a non-numeric template',
|
||||
new CodeLocation($statements_source, $right)
|
||||
),
|
||||
$statements_source->getSuppressedIssues()
|
||||
|
@ -1137,18 +1137,30 @@ class CallAnalyzer
|
||||
} else {
|
||||
foreach ($lower_bounds as $lower_bound) {
|
||||
if ($lower_bound->equality_bound_classlike === null) {
|
||||
if (!in_array($lower_bound->type->getId(), $equality_types, true)) {
|
||||
IssueBuffer::maybeAdd(
|
||||
new InvalidArgument(
|
||||
'Incompatible types found for ' . $template_name . ' (' .
|
||||
$lower_bound->type->getId() . ' is not in ' .
|
||||
implode(', ', $equality_types) . ')',
|
||||
$code_location,
|
||||
$function_id
|
||||
),
|
||||
$statements_analyzer->getSuppressedIssues()
|
||||
);
|
||||
foreach ($bounds_with_equality as $bound_with_equality) {
|
||||
if (UnionTypeComparator::isContainedBy(
|
||||
$statements_analyzer->getCodebase(),
|
||||
$lower_bound->type,
|
||||
$bound_with_equality->type
|
||||
) && UnionTypeComparator::isContainedBy(
|
||||
$statements_analyzer->getCodebase(),
|
||||
$bound_with_equality->type,
|
||||
$lower_bound->type
|
||||
)) {
|
||||
continue 2;
|
||||
}
|
||||
}
|
||||
|
||||
IssueBuffer::maybeAdd(
|
||||
new InvalidArgument(
|
||||
'Incompatible types found for ' . $template_name . ' (' .
|
||||
$lower_bound->type->getId() . ' is not in ' .
|
||||
implode(', ', $equality_types) . ')',
|
||||
$code_location,
|
||||
$function_id
|
||||
),
|
||||
$statements_analyzer->getSuppressedIssues()
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -27,6 +27,7 @@ use Psalm\Type\Atomic\TTemplateParam;
|
||||
|
||||
use function array_merge;
|
||||
use function array_shift;
|
||||
use function rtrim;
|
||||
use function strtolower;
|
||||
|
||||
/**
|
||||
@ -192,7 +193,8 @@ class InstancePropertyFetchAnalyzer
|
||||
) {
|
||||
IssueBuffer::maybeAdd(
|
||||
new PossiblyNullPropertyFetch(
|
||||
'Cannot get property on possibly null variable ' . $stmt_var_id . ' of type ' . $stmt_var_type,
|
||||
rtrim('Cannot get property on possibly null variable ' . $stmt_var_id)
|
||||
. ' of type ' . $stmt_var_type,
|
||||
new CodeLocation($statements_analyzer->getSource(), $stmt)
|
||||
),
|
||||
$statements_analyzer->getSuppressedIssues()
|
||||
|
@ -1029,10 +1029,6 @@ final class Psalm
|
||||
$issue_baseline = self::generateBaseline($options, $config, $current_dir, $path_to_config);
|
||||
}
|
||||
|
||||
if (isset($options['update-baseline'])) {
|
||||
$issue_baseline = self::updateBaseline($options, $config);
|
||||
}
|
||||
|
||||
if (isset($options['use-baseline'])) {
|
||||
if (!is_string($options['use-baseline'])) {
|
||||
fwrite(STDERR, '--use-baseline must be a string' . PHP_EOL);
|
||||
@ -1040,10 +1036,15 @@ final class Psalm
|
||||
}
|
||||
|
||||
$baseline_file_path = $options['use-baseline'];
|
||||
$config->error_baseline = $baseline_file_path;
|
||||
} else {
|
||||
$baseline_file_path = $config->error_baseline;
|
||||
}
|
||||
|
||||
if (isset($options['update-baseline'])) {
|
||||
$issue_baseline = self::updateBaseline($options, $config);
|
||||
}
|
||||
|
||||
if (!$issue_baseline && $baseline_file_path && !isset($options['ignore-baseline'])) {
|
||||
try {
|
||||
$issue_baseline = ErrorBaseline::read(
|
||||
|
@ -659,6 +659,7 @@ HELP;
|
||||
|| isset($_SERVER['JENKINS_URL'])
|
||||
|| isset($_SERVER['SCRUTINIZER'])
|
||||
|| isset($_SERVER['GITLAB_CI'])
|
||||
|| isset($_SERVER['GITHUB_WORKFLOW']);
|
||||
|| isset($_SERVER['GITHUB_WORKFLOW'])
|
||||
|| isset($_SERVER['DRONE']);
|
||||
}
|
||||
}
|
||||
|
@ -404,7 +404,7 @@ class Functions
|
||||
'opendir', 'readdir', 'closedir', 'rewinddir', 'scandir',
|
||||
'fopen', 'fread', 'fwrite', 'fclose', 'touch', 'fpassthru', 'fputs', 'fscanf', 'fseek', 'flock',
|
||||
'ftruncate', 'fprintf', 'symlink', 'mkdir', 'unlink', 'rename', 'rmdir', 'popen', 'pclose',
|
||||
'fgetcsv', 'fputcsv', 'umask', 'finfo_open', 'finfo_close', 'finfo_file', 'readline_add_history',
|
||||
'fgetcsv', 'fputcsv', 'umask', 'finfo_open', 'finfo_close', 'finfo_file',
|
||||
'stream_set_timeout', 'fgets', 'fflush', 'move_uploaded_file', 'file_exists', 'realpath', 'glob',
|
||||
'is_readable', 'is_dir', 'is_file',
|
||||
|
||||
@ -515,6 +515,10 @@ class Functions
|
||||
return false;
|
||||
}
|
||||
|
||||
if (strpos($function_id, 'readline') === 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (($function_id === 'var_export' || $function_id === 'print_r') && !isset($args[1])) {
|
||||
return false;
|
||||
}
|
||||
|
@ -128,11 +128,7 @@ class TextDocument
|
||||
|
||||
$file_path = LanguageServer::uriToPath($textDocument->uri);
|
||||
|
||||
if ($this->project_analyzer->onchange_line_limit === 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (count($contentChanges) === 1 && isset($contentChanges[0]) && $contentChanges[0]->range === null) {
|
||||
if (count($contentChanges) === 1 && $contentChanges[0]->range === null) {
|
||||
$new_content = $contentChanges[0]->text;
|
||||
} else {
|
||||
throw new UnexpectedValueException('Not expecting partial diff');
|
||||
|
@ -55,6 +55,11 @@ class StatementsProvider
|
||||
*/
|
||||
private $file_storage_cache_provider;
|
||||
|
||||
/**
|
||||
* @var StatementsVolatileCache
|
||||
*/
|
||||
private $statements_volatile_cache;
|
||||
|
||||
/**
|
||||
* @var array<string, array<string, bool>>
|
||||
*/
|
||||
@ -104,6 +109,7 @@ class StatementsProvider
|
||||
$this->parser_cache_provider = $parser_cache_provider;
|
||||
$this->this_modified_time = filemtime(__FILE__);
|
||||
$this->file_storage_cache_provider = $file_storage_cache_provider;
|
||||
$this->statements_volatile_cache = StatementsVolatileCache::getInstance();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -126,19 +132,26 @@ class StatementsProvider
|
||||
|
||||
$config = Config::getInstance();
|
||||
|
||||
$file_content_hash = md5($version . $file_contents);
|
||||
|
||||
if (!$this->parser_cache_provider
|
||||
|| (!$config->isInProjectDirs($file_path) && strpos($file_path, 'vendor'))
|
||||
) {
|
||||
$cache_key = "${file_content_hash}:${php_version}";
|
||||
if ($this->statements_volatile_cache->has($cache_key)) {
|
||||
return $this->statements_volatile_cache->get($cache_key);
|
||||
}
|
||||
|
||||
$progress->debug('Parsing ' . $file_path . "\n");
|
||||
|
||||
$has_errors = false;
|
||||
|
||||
$stmts = self::parseStatements($file_contents, $php_version, $has_errors, $file_path);
|
||||
|
||||
return $stmts ?: [];
|
||||
}
|
||||
$this->statements_volatile_cache->set($cache_key, $stmts);
|
||||
|
||||
$file_content_hash = md5($version . $file_contents);
|
||||
return $stmts;
|
||||
}
|
||||
|
||||
$stmts = $this->parser_cache_provider->loadStatementsFromCache(
|
||||
$file_path,
|
||||
|
108
src/Psalm/Internal/Provider/StatementsVolatileCache.php
Normal file
108
src/Psalm/Internal/Provider/StatementsVolatileCache.php
Normal file
@ -0,0 +1,108 @@
|
||||
<?php
|
||||
|
||||
namespace Psalm\Internal\Provider;
|
||||
|
||||
use InvalidArgumentException;
|
||||
use PhpParser\Node\Stmt;
|
||||
|
||||
use function array_key_exists;
|
||||
use function array_search;
|
||||
use function array_splice;
|
||||
use function count;
|
||||
use function is_null;
|
||||
use function key;
|
||||
use function reset;
|
||||
|
||||
/**
|
||||
* @internal Owned by StatementsProvider
|
||||
* @todo: track variables size instead
|
||||
*/
|
||||
final class StatementsVolatileCache
|
||||
{
|
||||
/**
|
||||
* @var array<string, list<Stmt>>
|
||||
*/
|
||||
protected $cache = [];
|
||||
|
||||
/**
|
||||
* @var array<int, string>
|
||||
*/
|
||||
protected $access = [];
|
||||
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
protected $max_size;
|
||||
|
||||
/**
|
||||
* @var ?StatementsVolatileCache
|
||||
*/
|
||||
protected static $instance;
|
||||
|
||||
public function __construct(int $max_size = 4096)
|
||||
{
|
||||
$this->max_size = $max_size;
|
||||
}
|
||||
|
||||
public static function getInstance(): StatementsVolatileCache
|
||||
{
|
||||
if (is_null(self::$instance)) {
|
||||
self::$instance = new self();
|
||||
}
|
||||
|
||||
return self::$instance;
|
||||
}
|
||||
|
||||
public function has(string $key): bool
|
||||
{
|
||||
return array_key_exists($key, $this->cache);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $key
|
||||
* @return list<Stmt>
|
||||
* @throws InvalidArgumentException
|
||||
*/
|
||||
public function get(string $key): array
|
||||
{
|
||||
if (! $this->has($key)) {
|
||||
throw new InvalidArgumentException('Given $key does not exists');
|
||||
}
|
||||
|
||||
$access_index = array_search($key, $this->access);
|
||||
if (false !== $access_index) {
|
||||
array_splice($this->access, $access_index, 1);
|
||||
}
|
||||
$this->access[] = $key;
|
||||
|
||||
return $this->cache[$key];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $key
|
||||
* @param list<Stmt> $content
|
||||
*/
|
||||
public function set(string $key, array $content): void
|
||||
{
|
||||
if (count($this->cache) > $this->max_size) {
|
||||
reset($this->access);
|
||||
|
||||
$oldest_key_index = key($this->access);
|
||||
|
||||
if (! is_null($oldest_key_index)) {
|
||||
$oldest_key = $this->access[$oldest_key_index];
|
||||
unset($this->cache[$oldest_key]);
|
||||
unset($this->access[$oldest_key_index]);
|
||||
}
|
||||
}
|
||||
|
||||
$this->cache[$key] = $content;
|
||||
$this->access[] = $key;
|
||||
}
|
||||
|
||||
public function clearCache(): void
|
||||
{
|
||||
$this->cache = [];
|
||||
$this->access = [];
|
||||
}
|
||||
}
|
@ -14,6 +14,7 @@ use Psalm\Internal\Provider\ClassLikeStorageProvider;
|
||||
use Psalm\Internal\Provider\FileReferenceProvider;
|
||||
use Psalm\Internal\Provider\FileStorageProvider;
|
||||
use Psalm\Internal\Provider\StatementsProvider;
|
||||
use Psalm\Internal\Provider\StatementsVolatileCache;
|
||||
use Psalm\Internal\Scanner\ParsedDocblock;
|
||||
use Psalm\Internal\Type\TypeTokenizer;
|
||||
use Psalm\IssueBuffer;
|
||||
@ -38,5 +39,6 @@ abstract class RuntimeCaches
|
||||
StatementsProvider::clearLexer();
|
||||
StatementsProvider::clearParser();
|
||||
ParsedDocblock::resetNewlineBetweenAnnotations();
|
||||
StatementsVolatileCache::getInstance()->clearCache();
|
||||
}
|
||||
}
|
||||
|
@ -45,7 +45,7 @@ interface Throwable
|
||||
|
||||
/**
|
||||
* @psalm-mutation-free
|
||||
* @return list<array{file:string,line:int,function?:string,class?:string,type?:'::'|'->',args?:array<mixed>}>
|
||||
* @return list<array{file?:string,line?:int,function?:string,class?:class-string,type?:'::'|'->',args?:array<mixed>}>
|
||||
*/
|
||||
public function getTrace() : array;
|
||||
|
||||
@ -124,7 +124,7 @@ class Exception implements Throwable
|
||||
|
||||
/**
|
||||
* @psalm-mutation-free
|
||||
* @return list<array{file:string,line:int,function?:string,class?:string,type?:'::'|'->',args?:array<mixed>}>
|
||||
* @return list<array{file?:string,line?:int,function?:string,class?:class-string,type?:'::'|'->',args?:array<mixed>}>
|
||||
*/
|
||||
public final function getTrace() : array {}
|
||||
|
||||
@ -201,7 +201,7 @@ class Error implements Throwable
|
||||
|
||||
/**
|
||||
* @psalm-mutation-free
|
||||
* @return list<array{file:string,line:int,function?:string,class?:string,type?:'::'|'->',args?:array<mixed>}>
|
||||
* @return list<array{file?:string,line?:int,function?:string,class?:class-string,type?:'::'|'->',args?:array<mixed>}>
|
||||
*/
|
||||
public final function getTrace() : array {}
|
||||
|
||||
|
@ -74,18 +74,13 @@ class DocumentationTest extends TestCase
|
||||
*/
|
||||
private const WALL_OF_SHAME = [
|
||||
'@psalm-assert-untainted',
|
||||
'@psalm-consistent-constructor',
|
||||
'@psalm-flow',
|
||||
'@psalm-generator-return',
|
||||
'@psalm-ignore-variable-method',
|
||||
'@psalm-ignore-variable-property',
|
||||
'@psalm-override-method-visibility',
|
||||
'@psalm-override-property-visibility',
|
||||
'@psalm-scope-this',
|
||||
'@psalm-seal-methods',
|
||||
'@psalm-stub-override',
|
||||
'@psalm-taint-unescape',
|
||||
'@psalm-yield',
|
||||
];
|
||||
|
||||
/** @var ProjectAnalyzer */
|
||||
|
@ -3620,6 +3620,80 @@ class ClassTemplateTest extends TestCase
|
||||
foo($container->get());
|
||||
'
|
||||
],
|
||||
'issue7825' => [
|
||||
'<?php
|
||||
interface Stub {}
|
||||
interface ProxyQueryInterface {}
|
||||
class MockObject {}
|
||||
/** @phpstan-template T of ProxyQueryInterface */
|
||||
interface PagerInterface {}
|
||||
/** @phpstan-template T of ProxyQueryInterface */
|
||||
class Datagrid
|
||||
{
|
||||
/** @var T */
|
||||
private $query;
|
||||
|
||||
/** @var PagerInterface<T> */
|
||||
private $pager;
|
||||
|
||||
/**
|
||||
* @phpstan-param T $query
|
||||
* @phpstan-param PagerInterface<T> $pager
|
||||
*/
|
||||
public function __construct(
|
||||
ProxyQueryInterface $query,
|
||||
PagerInterface $pager
|
||||
) {
|
||||
$this->pager = $pager;
|
||||
$this->query = $query;
|
||||
}
|
||||
}
|
||||
interface FormBuilderInterface {}
|
||||
/** @template T of FieldDescriptionInterface */
|
||||
class FieldDescriptionCollection {}
|
||||
interface FieldDescriptionInterface {}
|
||||
abstract class Test
|
||||
{
|
||||
/** @var Datagrid<ProxyQueryInterface&Stub> */
|
||||
private Datagrid $datagrid;
|
||||
|
||||
/** @var PagerInterface<ProxyQueryInterface&Stub>&MockObject */
|
||||
private $pager;
|
||||
|
||||
/** @var ProxyQueryInterface&Stub */
|
||||
private $query;
|
||||
|
||||
/** @var FieldDescriptionCollection<FieldDescriptionInterface> */
|
||||
private FieldDescriptionCollection $columns;
|
||||
|
||||
private FormBuilderInterface $formBuilder;
|
||||
|
||||
/**
|
||||
* @psalm-template RealInstanceType of object
|
||||
* @psalm-param class-string<RealInstanceType> $originalClassName
|
||||
* @psalm-return MockObject&RealInstanceType
|
||||
*/
|
||||
abstract protected function createMock(string $originalClassName): MockObject;
|
||||
|
||||
/**
|
||||
* @psalm-template RealInstanceType of object
|
||||
* @psalm-param class-string<RealInstanceType> $originalClassName
|
||||
* @psalm-return Stub&RealInstanceType
|
||||
*/
|
||||
abstract protected function createStub(string $originalClassName): Stub;
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
$this->query = $this->createStub(ProxyQueryInterface::class);
|
||||
$this->columns = new FieldDescriptionCollection();
|
||||
|
||||
/** @var PagerInterface<ProxyQueryInterface&Stub>&MockObject $pager */
|
||||
$pager = $this->createMock(PagerInterface::class);
|
||||
$this->pager = $pager;
|
||||
$this->datagrid = new Datagrid($this->query, $pager);
|
||||
}
|
||||
}',
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
|
@ -1603,6 +1603,22 @@ class FunctionTemplateTest extends TestCase
|
||||
}
|
||||
}'
|
||||
],
|
||||
'dontScreamForArithmeticsOnFloatTemplates' => [
|
||||
'<?php
|
||||
|
||||
/**
|
||||
* @template T of ?float
|
||||
* @param T $p
|
||||
* @return (T is null ? null : float)
|
||||
*/
|
||||
function foo(?float $p): ?float
|
||||
{
|
||||
if ($p === null) {
|
||||
return null;
|
||||
}
|
||||
return $p - 1;
|
||||
}'
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user