diff options
| author | Levi Morrison <levim@php.net> | 2016-04-28 15:26:57 -0600 |
|---|---|---|
| committer | Levi Morrison <levim@php.net> | 2016-05-05 11:53:32 -0600 |
| commit | 9662259cb93ff04be80766bdade39d2e827e0e16 (patch) | |
| tree | 6dbc991b00567eb964f4b11db90b34bc03705ee9 /Zend/zend_language_parser.y | |
| parent | 49fe737e585d2bf3cea4df14ef7a1965dc632655 (diff) | |
| download | php-git-9662259cb93ff04be80766bdade39d2e827e0e16.tar.gz | |
Add nullable parameter types
This works off of Dmitry's commit for nullable return types
Diffstat (limited to 'Zend/zend_language_parser.y')
| -rw-r--r-- | Zend/zend_language_parser.y | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y index c995e5fd4d..7682d69b68 100644 --- a/Zend/zend_language_parser.y +++ b/Zend/zend_language_parser.y @@ -252,7 +252,7 @@ static YYSIZE_T zend_yytnamerr(char*, const char*); %type <ast> ctor_arguments alt_if_stmt_without_else trait_adaptation_list lexical_vars %type <ast> lexical_var_list encaps_list array_pair_list non_empty_array_pair_list %type <ast> assignment_list unkeyed_assignment_list keyed_assignment_list -%type <ast> isset_variable type return_type +%type <ast> isset_variable type return_type type_expr %type <ast> identifier %type <num> returns_ref function is_reference is_variadic variable_modifiers @@ -644,7 +644,12 @@ parameter: optional_type: /* empty */ { $$ = NULL; } - | type { $$ = $1; } + | type_expr { $$ = $1; } +; + +type_expr: + type { $$ = $1; } + | '?' type { $$ = $2; $$->attr |= ZEND_TYPE_NULLABLE; } ; type: @@ -655,8 +660,7 @@ type: return_type: /* empty */ { $$ = NULL; } - | ':' type { $$ = $2; } - | ':' '?' type { $$ = $3; $$->attr |= ZEND_TYPE_NULLABLE; } + | ':' type_expr { $$ = $2; } ; argument_list: |
