@@ -70,7 +70,10 @@ void php_v8_message_create_from_message(zval *return_value, php_v8_isolate_t *ph
7070 if (!message->GetLineNumber (context).IsNothing ()) {
7171 line_number = message->GetLineNumber (context).FromJust ();
7272 }
73- zend_update_property_long (this_ce, return_value, ZEND_STRL (" line_number" ), static_cast <zend_long>(line_number));
73+
74+ if (v8::Message::kNoLineNumberInfo != line_number) {
75+ zend_update_property_long (this_ce, return_value, ZEND_STRL (" line_number" ), static_cast <zend_long>(line_number));
76+ }
7477
7578 /* v8::Message::GetStartPosition */
7679 zend_update_property_long (this_ce, return_value, ZEND_STRL (" start_position" ), static_cast <zend_long>(message->GetStartPosition ()));
@@ -85,20 +88,19 @@ void php_v8_message_create_from_message(zval *return_value, php_v8_isolate_t *ph
8588 start_column = message->GetStartColumn (context).FromJust ();
8689 }
8790
88- zend_update_property_long (this_ce, return_value, ZEND_STRL (" start_column" ), static_cast <zend_long>(start_column));
91+ if (v8::Message::kNoColumnInfo != start_column) {
92+ zend_update_property_long (this_ce, return_value, ZEND_STRL (" start_column" ), static_cast <zend_long>(start_column));
93+ }
8994
9095 /* v8::Message::GetEndColumn */
9196 /* NOTE: we don't use FromMaybe(v8::Message::kNoColumnInfo) due to static const (https://gcc.gnu.org/wiki/VerboseDiagnostics#missing_static_const_definition)*/
9297 int end_column = v8::Message::kNoColumnInfo ;
9398 if (!message->GetEndColumn (context).IsNothing ()) {
9499 end_column = message->GetEndColumn (context).FromJust ();
95100 }
96- zend_update_property_long (this_ce, return_value, ZEND_STRL (" end_column" ), static_cast <zend_long>(end_column));
97-
98- /* v8::Message::IsSharedCrossOrigin */
99- zend_update_property_bool (this_ce, return_value, ZEND_STRL (" is_shared_cross_origin" ), static_cast <zend_bool>(message->IsSharedCrossOrigin ()));
100- /* v8::Message::IsOpaque */
101- zend_update_property_bool (this_ce, return_value, ZEND_STRL (" is_opaque" ), static_cast <zend_bool>(message->IsOpaque ()));
101+ if (v8::Message::kNoColumnInfo != end_column) {
102+ zend_update_property_long (this_ce, return_value, ZEND_STRL (" end_column" ), static_cast <zend_long>(end_column));
103+ }
102104}
103105
104106
@@ -110,19 +112,15 @@ static PHP_METHOD(Message, __construct) {
110112 zend_string *resource_name = NULL ;
111113 zval *stack_trace = NULL ;
112114
113- zend_long line_number = static_cast <zend_long>(v8::Message:: kNoLineNumberInfo ) ;
115+ zend_long line_number = - 1 ;
114116 zend_long start_position = -1 ;
115- zend_long end_position = -1 ;
116- zend_long start_column = static_cast <zend_long>(v8::Message:: kNoColumnInfo ) ;
117- zend_long end_column = static_cast <zend_long>(v8::Message:: kNoColumnInfo ) ;
117+ zend_long end_position = -1 ;
118+ zend_long start_column = - 1 ;
119+ zend_long end_column = - 1 ;
118120
119- zend_bool is_shared_cross_origin = ' \0 ' ;
120- zend_bool is_opaque = ' \0 ' ;
121-
122- if (zend_parse_parameters (ZEND_NUM_ARGS (), " SSoSo|lllllbb" ,
121+ if (zend_parse_parameters (ZEND_NUM_ARGS (), " SSoSo|lllll" ,
123122 &message, &source_line, &script_origin, &resource_name, &stack_trace,
124- &line_number, &start_position, &end_position, &start_column, &end_column,
125- &is_shared_cross_origin, &is_opaque) == FAILURE) {
123+ &line_number, &start_position, &end_position, &start_column, &end_column) == FAILURE) {
126124 return ;
127125 }
128126
@@ -132,14 +130,21 @@ static PHP_METHOD(Message, __construct) {
132130 zend_update_property_str (this_ce, getThis (), ZEND_STRL (" resource_name" ), resource_name);
133131 zend_update_property (this_ce, getThis (), ZEND_STRL (" stack_trace" ), stack_trace);
134132
135- zend_update_property_long (this_ce, getThis (), ZEND_STRL (" line_number" ), line_number);
136- zend_update_property_long (this_ce, getThis (), ZEND_STRL (" start_position" ), start_position);
137- zend_update_property_long (this_ce, getThis (), ZEND_STRL (" end_position" ), end_position);
138- zend_update_property_long (this_ce, getThis (), ZEND_STRL (" start_column" ), start_column);
139- zend_update_property_long (this_ce, getThis (), ZEND_STRL (" end_column" ), end_column);
140-
141- zend_update_property_bool (this_ce, getThis (), ZEND_STRL (" is_shared_cross_origin" ), is_shared_cross_origin);
142- zend_update_property_bool (this_ce, getThis (), ZEND_STRL (" is_opaque" ), is_opaque);
133+ if (line_number > 0 ) {
134+ zend_update_property_long (this_ce, getThis (), ZEND_STRL (" line_number" ), line_number);
135+ }
136+ if (start_position >= 0 ) {
137+ zend_update_property_long (this_ce, getThis (), ZEND_STRL (" start_position" ), start_position);
138+ }
139+ if (end_position >= 0 ) {
140+ zend_update_property_long (this_ce, getThis (), ZEND_STRL (" end_position" ), end_position);
141+ }
142+ if (start_column > 0 ) {
143+ zend_update_property_long (this_ce, getThis (), ZEND_STRL (" start_column" ), start_column);
144+ }
145+ if (end_column > 0 ) {
146+ zend_update_property_long (this_ce, getThis (), ZEND_STRL (" end_column" ), end_column);
147+ }
143148}
144149
145150static PHP_METHOD (Message, get)
@@ -252,41 +257,17 @@ static PHP_METHOD(Message, getEndColumn)
252257 RETVAL_ZVAL (zend_read_property (this_ce, getThis (), ZEND_STRL (" end_column" ), 0 , &rv), 1 , 0 );
253258}
254259
255- static PHP_METHOD (Message, isSharedCrossOrigin)
256- {
257- zval rv;
258-
259- if (zend_parse_parameters_none () == FAILURE) {
260- return ;
261- }
262-
263- RETVAL_ZVAL (zend_read_property (this_ce, getThis (), ZEND_STRL (" is_shared_cross_origin" ), 0 , &rv), 1 , 0 );
264- }
265-
266- static PHP_METHOD (Message, isOpaque)
267- {
268- zval rv;
269-
270- if (zend_parse_parameters_none () == FAILURE) {
271- return ;
272- }
273-
274- RETVAL_ZVAL (zend_read_property (this_ce, getThis (), ZEND_STRL (" is_opaque" ), 0 , &rv), 1 , 0 );
275- }
276-
277260PHP_V8_ZEND_BEGIN_ARG_WITH_CONSTRUCTOR_INFO_EX (arginfo___construct, 5 )
278261 ZEND_ARG_TYPE_INFO(0 , message, IS_STRING, 0 )
279262 ZEND_ARG_TYPE_INFO(0 , source_line, IS_STRING, 0 )
280263 ZEND_ARG_OBJ_INFO(0 , script_origin, V8\\ScriptOrigin, 0 )
281264 ZEND_ARG_TYPE_INFO(0 , resource_name, IS_STRING, 0 )
282265 ZEND_ARG_OBJ_INFO(0 , stack_trace, V8\\StackTrace, 0 )
283- ZEND_ARG_TYPE_INFO(0 , line_number, IS_LONG, 0 )
284- ZEND_ARG_TYPE_INFO(0 , start_position, IS_LONG, 0 )
285- ZEND_ARG_TYPE_INFO(0 , end_position, IS_LONG, 0 )
286- ZEND_ARG_TYPE_INFO(0 , start_column, IS_LONG, 0 )
287- ZEND_ARG_TYPE_INFO(0 , end_column, IS_LONG, 0 )
288- ZEND_ARG_TYPE_INFO(0 , is_shared_cross_origin, _IS_BOOL, 0 )
289- ZEND_ARG_TYPE_INFO(0 , is_opaque, _IS_BOOL, 0 )
266+ ZEND_ARG_TYPE_INFO(0 , line_number, IS_LONG, 1 )
267+ ZEND_ARG_TYPE_INFO(0 , start_position, IS_LONG, 1 )
268+ ZEND_ARG_TYPE_INFO(0 , end_position, IS_LONG, 1 )
269+ ZEND_ARG_TYPE_INFO(0 , start_column, IS_LONG, 1 )
270+ ZEND_ARG_TYPE_INFO(0 , end_column, IS_LONG, 1 )
290271ZEND_END_ARG_INFO()
291272
292273PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_get, ZEND_RETURN_VALUE, 0 , IS_STRING, 0 )
@@ -304,25 +285,19 @@ ZEND_END_ARG_INFO()
304285PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_getStackTrace, ZEND_RETURN_VALUE, 0 , V8\\StackTrace, 1 )
305286ZEND_END_ARG_INFO()
306287
307- PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_getLineNumber, ZEND_RETURN_VALUE, 0 , IS_LONG, 0 )
288+ PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_getLineNumber, ZEND_RETURN_VALUE, 0 , IS_LONG, 1 )
308289ZEND_END_ARG_INFO()
309290
310- PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_getStartPosition, ZEND_RETURN_VALUE, 0 , IS_LONG, 0 )
291+ PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_getStartPosition, ZEND_RETURN_VALUE, 0 , IS_LONG, 1 )
311292ZEND_END_ARG_INFO()
312293
313- PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_getEndPosition, ZEND_RETURN_VALUE, 0 , IS_LONG, 0 )
294+ PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_getEndPosition, ZEND_RETURN_VALUE, 0 , IS_LONG, 1 )
314295ZEND_END_ARG_INFO()
315296
316- PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_getStartColumn, ZEND_RETURN_VALUE, 0 , IS_LONG, 0 )
297+ PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_getStartColumn, ZEND_RETURN_VALUE, 0 , IS_LONG, 1 )
317298ZEND_END_ARG_INFO()
318299
319- PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_getEndColumn, ZEND_RETURN_VALUE, 0 , IS_LONG, 0 )
320- ZEND_END_ARG_INFO()
321-
322- PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_isSharedCrossOrigin, ZEND_RETURN_VALUE, 0 , _IS_BOOL, 0 )
323- ZEND_END_ARG_INFO()
324-
325- PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_isOpaque, ZEND_RETURN_VALUE, 0 , _IS_BOOL, 0 )
300+ PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_getEndColumn, ZEND_RETURN_VALUE, 0 , IS_LONG, 1 )
326301ZEND_END_ARG_INFO()
327302
328303
@@ -338,8 +313,6 @@ static const zend_function_entry php_v8_message_methods[] = {
338313 PHP_V8_ME (Message, getEndPosition, ZEND_ACC_PUBLIC)
339314 PHP_V8_ME (Message, getStartColumn, ZEND_ACC_PUBLIC)
340315 PHP_V8_ME (Message, getEndColumn, ZEND_ACC_PUBLIC)
341- PHP_V8_ME (Message, isSharedCrossOrigin, ZEND_ACC_PUBLIC)
342- PHP_V8_ME (Message, isOpaque, ZEND_ACC_PUBLIC)
343316
344317 PHP_FE_END
345318};
@@ -349,25 +322,18 @@ PHP_MINIT_FUNCTION (php_v8_message) {
349322 INIT_NS_CLASS_ENTRY (ce, PHP_V8_NS, " Message" , php_v8_message_methods);
350323 this_ce = zend_register_internal_class (&ce);
351324
352- zend_declare_class_constant_long (this_ce, ZEND_STRL (" kNoLineNumberInfo" ), static_cast <zend_long>(v8::Message::kNoLineNumberInfo ));
353- zend_declare_class_constant_long (this_ce, ZEND_STRL (" kNoColumnInfo" ), static_cast <zend_long>(v8::Message::kNoColumnInfo ));
354- zend_declare_class_constant_long (this_ce, ZEND_STRL (" kNoScriptIdInfo" ), static_cast <zend_long>(v8::Message::kNoLineNumberInfo ));
355-
356- zend_declare_property_string (this_ce, ZEND_STRL (" message" ), " " , ZEND_ACC_PRIVATE);
357- zend_declare_property_null (this_ce, ZEND_STRL (" script_origin" ), ZEND_ACC_PRIVATE);
358- zend_declare_property_string (this_ce, ZEND_STRL (" source_line" ), " " , ZEND_ACC_PRIVATE);
325+ zend_declare_property_string (this_ce, ZEND_STRL (" message" ), " " , ZEND_ACC_PRIVATE);
326+ zend_declare_property_null (this_ce, ZEND_STRL (" script_origin" ), ZEND_ACC_PRIVATE);
327+ zend_declare_property_string (this_ce, ZEND_STRL (" source_line" ), " " , ZEND_ACC_PRIVATE);
359328 zend_declare_property_string (this_ce, ZEND_STRL (" resource_name" ), " " , ZEND_ACC_PRIVATE);
360- zend_declare_property_null (this_ce, ZEND_STRL (" stack_trace" ), ZEND_ACC_PRIVATE);
361-
362- zend_declare_property_long (this_ce, ZEND_STRL (" line_number" ), static_cast <zend_long>(v8::Message::kNoLineNumberInfo ), ZEND_ACC_PRIVATE);
363- zend_declare_property_long (this_ce, ZEND_STRL (" start_position" ), -1 , ZEND_ACC_PRIVATE);
364- zend_declare_property_long (this_ce, ZEND_STRL (" end_position" ), -1 , ZEND_ACC_PRIVATE);
329+ zend_declare_property_null (this_ce, ZEND_STRL (" stack_trace" ), ZEND_ACC_PRIVATE);
365330
366- zend_declare_property_long (this_ce, ZEND_STRL (" start_column" ), static_cast <zend_long>(v8::Message::kNoColumnInfo ), ZEND_ACC_PRIVATE);
367- zend_declare_property_long (this_ce, ZEND_STRL (" end_column" ), static_cast <zend_long>(v8::Message::kNoColumnInfo ), ZEND_ACC_PRIVATE);
331+ zend_declare_property_null (this_ce, ZEND_STRL (" line_number" ), ZEND_ACC_PRIVATE);
332+ zend_declare_property_null (this_ce, ZEND_STRL (" start_position" ), ZEND_ACC_PRIVATE);
333+ zend_declare_property_null (this_ce, ZEND_STRL (" end_position" ), ZEND_ACC_PRIVATE);
368334
369- zend_declare_property_bool (this_ce, ZEND_STRL (" is_shared_cross_origin " ), static_cast <zend_bool>( false ), ZEND_ACC_PRIVATE);
370- zend_declare_property_bool (this_ce, ZEND_STRL (" is_opaque " ), static_cast <zend_bool>( false ), ZEND_ACC_PRIVATE);
335+ zend_declare_property_null (this_ce, ZEND_STRL (" start_column " ), ZEND_ACC_PRIVATE);
336+ zend_declare_property_null (this_ce, ZEND_STRL (" end_column " ), ZEND_ACC_PRIVATE);
371337
372338 return SUCCESS;
373339}
0 commit comments