Could someone please spare a moment to give me karma so I can open an RFC? I greatly appreciate your time. My username is: wookieetyler
Derick Rethans commit inspired me to start looking at the source code in more depth. I got started on this branch <https://github.com/php/php-src/compare/master...RichardTMiles:php-src:arrayTypes> last night, I focused on the zend_language_parser.y. I think I got that figured out, and not I need to adjust the functions it touches (zend_ast_create_decl and zend_ast_create). I might call myself a very seasoned n00b here, so my main goal is to get it working. interface_declaration_statement: T_INTERFACE { $<num>$ = CG(zend_lineno); } T_STRING interface_extends_list backup_doc_comment '{' class_statement_list '}' { $$ = zend_ast_create_decl(ZEND_AST_CLASS, ZEND_ACC_INTERFACE, $<num>2, $5, zend_ast_get_str($3), NULL, $4, $7, NULL, NULL); } | T_INTERFACE { $<num>$ = CG(zend_lineno); } T_STRING interface_extends_list backup_doc_comment '[' array_statement_list ']' { $$ = zend_ast_create_decl(ZEND_AST_CLASS, ZEND_ACC_INTERFACE, $<num>2, $4, zend_ast_get_str($2), NULL, $3, $6, NULL, NULL); } ; Then for casting: expr: ... | type_without_static expr { $$ = zend_ast_create(ZEND_AST_CAST, $2, $4); } | '(' type_expr_without_static_or_nullable ')' expr { $$ = zend_ast_create(ZEND_AST_CAST, $2, $4); } | '(' expr ')' { $$ = $2; if ($$->kind == ZEND_AST_CONDITIONAL) $$->attr = ZEND_PARENTHESIZED_CONDITIONAL; } | new_expr { $$ = $1; } ... I should also point out that the syntax I posed yesterday was a bit incorrect as I extended an interface using the `implements` keyword. >> interface iArrayA ['a' => string ] >> interface iArrayB implements iArrayA ['b' => string, 'c' => ?string ] It should actually read: interface iArrayA [ ‘a’ => string ] interface iArrayB extends iArrayA [ ‘b’ => string, ‘c’ => ?string] P.s. I also started a draft for the addition of the `apache_connection_stream` function https://github.com/php/php-src/pull/14047 and would like to create an RFC for that as well. Best, Richard Miles