From c656212bad2db9217fdcd014002ea723f3eaa6e8 Mon Sep 17 00:00:00 2001 From: alexgit2k Date: Fri, 11 Mar 2022 12:23:40 +0100 Subject: [PATCH] Set return-type for some functions --- src/php7/php_solr.c | 61 ++++++++++++++++++++++++++++++++++----------- 1 file changed, 47 insertions(+), 14 deletions(-) diff --git a/src/php7/php_solr.c b/src/php7/php_solr.c index 4d7fec3..39018e5 100644 --- a/src/php7/php_solr.c +++ b/src/php7/php_solr.c @@ -99,16 +99,20 @@ static void php_solr_globals_ctor(zend_solr_globals *solr_globals_arg) /* {{{ arg_info vectors for functions and methods */ -ZEND_BEGIN_ARG_INFO_EX(SolrObject__get_args, SOLR_ARG_PASS_REMAINING_BY_REF_FALSE, SOLR_METHOD_RETURN_REFERENCE_FALSE, 1) +ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(SolrObject__get_args, SOLR_METHOD_RETURN_REFERENCE_FALSE, 1, IS_MIXED, 0) ZEND_ARG_INFO(SOLR_ARG_PASS_BY_REF_FALSE, property_name) ZEND_END_ARG_INFO() -ZEND_BEGIN_ARG_INFO_EX(SolrObject__set_args, SOLR_ARG_PASS_REMAINING_BY_REF_FALSE, SOLR_METHOD_RETURN_REFERENCE_FALSE, 2) +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(SolrObject__set_args, SOLR_METHOD_RETURN_REFERENCE_FALSE, 2, IS_VOID, 0) ZEND_ARG_INFO(SOLR_ARG_PASS_BY_REF_FALSE, property_name) ZEND_ARG_INFO(SOLR_ARG_PASS_BY_REF_FALSE, property_value) ZEND_END_ARG_INFO() -ZEND_BEGIN_ARG_INFO_EX(SolrObject_one_args, SOLR_ARG_PASS_REMAINING_BY_REF_FALSE, SOLR_METHOD_RETURN_REFERENCE_FALSE, 1) +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(SolrObject_offsetExists_args, SOLR_METHOD_RETURN_REFERENCE_FALSE, 1, _IS_BOOL, 0) +ZEND_ARG_INFO(SOLR_ARG_PASS_BY_REF_FALSE, property_name) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(SolrObject_offsetUnset_args, SOLR_METHOD_RETURN_REFERENCE_FALSE, 1, IS_VOID, 0) ZEND_ARG_INFO(SOLR_ARG_PASS_BY_REF_FALSE, property_name) ZEND_END_ARG_INFO() @@ -143,7 +147,19 @@ ZEND_ARG_OBJ_INFO(SOLR_ARG_PASS_BY_REF_TRUE, sourceDoc, SolrDocument, SOLR_ARG_A ZEND_ARG_INFO(SOLR_ARG_PASS_BY_REF_FALSE, overwrite) ZEND_END_ARG_INFO() -ZEND_BEGIN_ARG_INFO_EX(SolrDocument_current_args, SOLR_ARG_PASS_REMAINING_BY_REF_FALSE, SOLR_METHOD_RETURN_REFERENCE_FALSE, 0) +ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(SolrDocument_current_args, SOLR_METHOD_RETURN_REFERENCE_FALSE, 0, IS_MIXED, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(SolrDocument_key_args, SOLR_METHOD_RETURN_REFERENCE_FALSE, 0, IS_MIXED, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(SolrDocument_next_args, SOLR_METHOD_RETURN_REFERENCE_FALSE, 0, IS_VOID, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(SolrDocument_valid_args, SOLR_METHOD_RETURN_REFERENCE_FALSE, 0, _IS_BOOL, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(SolrDocument_rewind_args, SOLR_METHOD_RETURN_REFERENCE_FALSE, 0, IS_VOID, 0) ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(SolrDocument_getInputDocument_args, SOLR_ARG_PASS_REMAINING_BY_REF_FALSE, SOLR_METHOD_RETURN_REFERENCE_FALSE, 0) @@ -152,6 +168,23 @@ ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO(SolrDocument_unserialize_args, 0) ZEND_ARG_INFO(0, serialized) ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(SolrDocument_offsetSet_args, SOLR_METHOD_RETURN_REFERENCE_FALSE, 2, IS_VOID, 0) +ZEND_ARG_INFO(SOLR_ARG_PASS_BY_REF_FALSE, fieldName) +ZEND_ARG_INFO(SOLR_ARG_PASS_BY_REF_FALSE, fieldValue) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(SolrDocument_offsetGet_args, SOLR_METHOD_RETURN_REFERENCE_FALSE, 1, IS_MIXED, 0) +ZEND_ARG_INFO(SOLR_ARG_PASS_BY_REF_FALSE, fieldName) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(SolrDocument_offsetExists_args, SOLR_METHOD_RETURN_REFERENCE_FALSE, 1, _IS_BOOL, 0) +ZEND_ARG_INFO(SOLR_ARG_PASS_BY_REF_FALSE, fieldName) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(SolrDocument_offsetUnset_args, SOLR_METHOD_RETURN_REFERENCE_FALSE, 1, IS_VOID, 0) +ZEND_ARG_INFO(SOLR_ARG_PASS_BY_REF_FALSE, fieldName) +ZEND_END_ARG_INFO() /* }}} */ /* {{{ SolrInputDocument arguments */ @@ -524,8 +557,8 @@ static zend_function_entry solr_object_methods[] = { */ PHP_ME(SolrObject, offsetSet, SolrObject__set_args, ZEND_ACC_PUBLIC) PHP_ME(SolrObject, offsetGet, SolrObject__get_args, ZEND_ACC_PUBLIC) - PHP_ME(SolrObject, offsetExists, SolrObject_one_args, ZEND_ACC_PUBLIC) - PHP_ME(SolrObject, offsetUnset, SolrObject_one_args, ZEND_ACC_PUBLIC) + PHP_ME(SolrObject, offsetExists, SolrObject_offsetExists_args, ZEND_ACC_PUBLIC) + PHP_ME(SolrObject, offsetUnset, SolrObject_offsetUnset_args, ZEND_ACC_PUBLIC) PHP_ME(SolrObject, getPropertyNames, Solr_no_args, ZEND_ACC_PUBLIC) PHP_FE_END @@ -582,16 +615,16 @@ static zend_function_entry solr_document_methods[] = { PHP_ME(SolrDocument, __isset, SolrDocument_fieldExists_args, ZEND_ACC_PUBLIC) PHP_ME(SolrDocument, __unset, SolrDocument_deleteField_args, ZEND_ACC_PUBLIC) - PHP_ME(SolrDocument, offsetSet, SolrDocument_addField_args, ZEND_ACC_PUBLIC) - PHP_ME(SolrDocument, offsetGet, SolrDocument_getField_args, ZEND_ACC_PUBLIC) - PHP_ME(SolrDocument, offsetExists, SolrDocument_fieldExists_args, ZEND_ACC_PUBLIC) - PHP_ME(SolrDocument, offsetUnset, SolrDocument_deleteField_args, ZEND_ACC_PUBLIC) + PHP_ME(SolrDocument, offsetSet, SolrDocument_offsetSet_args, ZEND_ACC_PUBLIC) + PHP_ME(SolrDocument, offsetGet, SolrDocument_offsetGet_args, ZEND_ACC_PUBLIC) + PHP_ME(SolrDocument, offsetExists, SolrDocument_offsetExists_args, ZEND_ACC_PUBLIC) + PHP_ME(SolrDocument, offsetUnset, SolrDocument_offsetUnset_args, ZEND_ACC_PUBLIC) PHP_ME(SolrDocument, current, SolrDocument_current_args, ZEND_ACC_PUBLIC) - PHP_ME(SolrDocument, key, Solr_no_args, ZEND_ACC_PUBLIC) - PHP_ME(SolrDocument, next, Solr_no_args, ZEND_ACC_PUBLIC) - PHP_ME(SolrDocument, rewind, Solr_no_args, ZEND_ACC_PUBLIC) - PHP_ME(SolrDocument, valid, Solr_no_args, ZEND_ACC_PUBLIC) + PHP_ME(SolrDocument, key, SolrDocument_key_args, ZEND_ACC_PUBLIC) + PHP_ME(SolrDocument, next, SolrDocument_next_args, ZEND_ACC_PUBLIC) + PHP_ME(SolrDocument, rewind, SolrDocument_rewind_args, ZEND_ACC_PUBLIC) + PHP_ME(SolrDocument, valid, SolrDocument_valid_args, ZEND_ACC_PUBLIC) PHP_ME(SolrDocument, serialize, Solr_no_args, ZEND_ACC_PUBLIC) PHP_ME(SolrDocument, unserialize, SolrDocument_unserialize_args, ZEND_ACC_PUBLIC) From 3d1d2c98d4a3f7638a976afc3dd6b85b2d1d4fef Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Thu, 17 Mar 2022 11:38:47 +0100 Subject: [PATCH] fix build with older PHP --- src/php7/php_solr.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/php7/php_solr.c b/src/php7/php_solr.c index 26583b2..2110296 100644 --- a/src/php7/php_solr.c +++ b/src/php7/php_solr.c @@ -98,6 +98,17 @@ static void php_solr_globals_ctor(zend_solr_globals *solr_globals_arg) /******************************************************************************/ /* {{{ arg_info vectors for functions and methods */ +#if PHP_VERSION_ID < 70200 +#undef ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX +#define ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(name, return_reference, required_num_args, class_name, allow_null) \ + static const zend_internal_arg_info name[] = { \ + { (const char*)(zend_uintptr_t)(required_num_args), ( #class_name ), 0, return_reference, allow_null, 0 }, +#endif + +#ifndef ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX +#define ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(name, return_reference, required_num_args, type, allow_null) \ + ZEND_BEGIN_ARG_INFO_EX(name, 0, return_reference, required_num_args) +#endif ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(SolrObject__get_args, SOLR_METHOD_RETURN_REFERENCE_FALSE, 1, IS_MIXED, 0) ZEND_ARG_INFO(SOLR_ARG_PASS_BY_REF_FALSE, property_name) From 359a8aebd9382f99f07fcc6d36cc063bee01727d Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Thu, 17 Mar 2022 11:48:14 +0100 Subject: [PATCH] relax test --- tests/bug_61836_error.phpt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/bug_61836_error.phpt b/tests/bug_61836_error.phpt index 9dfd94d..2ffff33 100644 --- a/tests/bug_61836_error.phpt +++ b/tests/bug_61836_error.phpt @@ -18,4 +18,4 @@ $doc = new Model_SolrDocument(); //$doc->addField('testname', true); ?> --EXPECTF-- -Fatal error: Class Model_SolrDocument may not inherit from final class (SolrDocument) in %s on line %d \ No newline at end of file +Fatal error: Class Model_SolrDocument %s final class %s -- 2.35.1