UVS indirect calls ----- <?php id('var_dump')(1); id('id')('var_dump')(2); id()()('var_dump')(4); id(['udef', 'id'])[1]()('var_dump')(5); (function($x) { return $x; })('id')('var_dump')(8); ($f = function($x = null) use (&$f) { return $x ?: $f; })()()()('var_dump')(9); [$obj, 'id']()('id')($id)('var_dump')(10); 'id'()('id')('var_dump')(12); ('i' . 'd')()('var_dump')(13); '\id'('var_dump')(14); ----- !!php7 array( 0: Expr_FuncCall( name: Expr_FuncCall( name: Name( parts: array( 0: id ) ) args: array( 0: Arg( value: Scalar_String( value: var_dump ) byRef: false unpack: false ) ) ) args: array( 0: Arg( value: Scalar_LNumber( value: 1 ) byRef: false unpack: false ) ) ) 1: Expr_FuncCall( name: Expr_FuncCall( name: Expr_FuncCall( name: Name( parts: array( 0: id ) ) args: array( 0: Arg( value: Scalar_String( value: id ) byRef: false unpack: false ) ) ) args: array( 0: Arg( value: Scalar_String( value: var_dump ) byRef: false unpack: false ) ) ) args: array( 0: Arg( value: Scalar_LNumber( value: 2 ) byRef: false unpack: false ) ) ) 2: Expr_FuncCall( name: Expr_FuncCall( name: Expr_FuncCall( name: Expr_FuncCall( name: Name( parts: array( 0: id ) ) args: array( ) ) args: array( ) ) args: array( 0: Arg( value: Scalar_String( value: var_dump ) byRef: false unpack: false ) ) ) args: array( 0: Arg( value: Scalar_LNumber( value: 4 ) byRef: false unpack: false ) ) ) 3: Expr_FuncCall( name: Expr_FuncCall( name: Expr_FuncCall( name: Expr_ArrayDimFetch( var: Expr_FuncCall( name: Name( parts: array( 0: id ) ) args: array( 0: Arg( value: Expr_Array( items: array( 0: Expr_ArrayItem( key: null value: Scalar_String( value: udef ) byRef: false ) 1: Expr_ArrayItem( key: null value: Scalar_String( value: id ) byRef: false ) ) ) byRef: false unpack: false ) ) ) dim: Scalar_LNumber( value: 1 ) ) args: array( ) ) args: array( 0: Arg( value: Scalar_String( value: var_dump ) byRef: false unpack: false ) ) ) args: array( 0: Arg( value: Scalar_LNumber( value: 5 ) byRef: false unpack: false ) ) ) 4: Expr_FuncCall( name: Expr_FuncCall( name: Expr_FuncCall( name: Expr_Closure( static: false byRef: false params: array( 0: Param( type: null byRef: false variadic: false name: x default: null ) ) uses: array( ) returnType: null stmts: array( 0: Stmt_Return( expr: Expr_Variable( name: x ) ) ) ) args: array( 0: Arg( value: Scalar_String( value: id ) byRef: false unpack: false ) ) ) args: array( 0: Arg( value: Scalar_String( value: var_dump ) byRef: false unpack: false ) ) ) args: array( 0: Arg( value: Scalar_LNumber( value: 8 ) byRef: false unpack: false ) ) ) 5: Expr_FuncCall( name: Expr_FuncCall( name: Expr_FuncCall( name: Expr_FuncCall( name: Expr_FuncCall( name: Expr_Assign( var: Expr_Variable( name: f ) expr: Expr_Closure( static: false byRef: false params: array( 0: Param( type: null byRef: false variadic: false name: x default: Expr_ConstFetch( name: Name( parts: array( 0: null ) ) ) ) ) uses: array( 0: Expr_ClosureUse( var: f byRef: true ) ) returnType: null stmts: array( 0: Stmt_Return( expr: Expr_Ternary( cond: Expr_Variable( name: x ) if: null else: Expr_Variable( name: f ) ) ) ) ) ) args: array( ) ) args: array( ) ) args: array( ) ) args: array( 0: Arg( value: Scalar_String( value: var_dump ) byRef: false unpack: false ) ) ) args: array( 0: Arg( value: Scalar_LNumber( value: 9 ) byRef: false unpack: false ) ) ) 6: Expr_FuncCall( name: Expr_FuncCall( name: Expr_FuncCall( name: Expr_FuncCall( name: Expr_FuncCall( name: Expr_Array( items: array( 0: Expr_ArrayItem( key: null value: Expr_Variable( name: obj ) byRef: false ) 1: Expr_ArrayItem( key: null value: Scalar_String( value: id ) byRef: false ) ) ) args: array( ) ) args: array( 0: Arg( value: Scalar_String( value: id ) byRef: false unpack: false ) ) ) args: array( 0: Arg( value: Expr_Variable( name: id ) byRef: false unpack: false ) ) ) args: array( 0: Arg( value: Scalar_String( value: var_dump ) byRef: false unpack: false ) ) ) args: array( 0: Arg( value: Scalar_LNumber( value: 10 ) byRef: false unpack: false ) ) ) 7: Expr_FuncCall( name: Expr_FuncCall( name: Expr_FuncCall( name: Expr_FuncCall( name: Scalar_String( value: id ) args: array( ) ) args: array( 0: Arg( value: Scalar_String( value: id ) byRef: false unpack: false ) ) ) args: array( 0: Arg( value: Scalar_String( value: var_dump ) byRef: false unpack: false ) ) ) args: array( 0: Arg( value: Scalar_LNumber( value: 12 ) byRef: false unpack: false ) ) ) 8: Expr_FuncCall( name: Expr_FuncCall( name: Expr_FuncCall( name: Expr_BinaryOp_Concat( left: Scalar_String( value: i ) right: Scalar_String( value: d ) ) args: array( ) ) args: array( 0: Arg( value: Scalar_String( value: var_dump ) byRef: false unpack: false ) ) ) args: array( 0: Arg( value: Scalar_LNumber( value: 13 ) byRef: false unpack: false ) ) ) 9: Expr_FuncCall( name: Expr_FuncCall( name: Scalar_String( value: \id ) args: array( 0: Arg( value: Scalar_String( value: var_dump ) byRef: false unpack: false ) ) ) args: array( 0: Arg( value: Scalar_LNumber( value: 14 ) byRef: false unpack: false ) ) ) )