Viewing File: /home/ubuntu/code_review/arcanist/src/parser/xhpast/__tests__/data/php-array-dereference.test

<?php

function foo() {
  return [1,2,3];
}

$i = 1;
$x = foo()[2];

$y = foo()[$i];

if (isset(foo()[0])) { }
~~~~~~~~~~
pass
~~~~~~~~~~
* n_PROGRAM
 * n_STATEMENT_LIST
  * n_OPEN_TAG
   > <?php
  > "\n\n"
  * n_STATEMENT
   * n_FUNCTION_DECLARATION
    * n_EMPTY
    * n_EMPTY
    * n_STRING
     > foo
    * n_DECLARATION_PARAMETER_LIST
     > (
     > )
    * n_EMPTY
    * n_EMPTY
    * n_STATEMENT_LIST
     > {
     > "\n  "
     * n_STATEMENT
      * n_RETURN
       > return
       > " "
       * n_ARRAY_LITERAL
        * n_ARRAY_VALUE_LIST
         > [
         * n_ARRAY_VALUE
          * n_EMPTY
          * n_NUMERIC_SCALAR
           > 1
         > ,
         * n_ARRAY_VALUE
          * n_EMPTY
          * n_NUMERIC_SCALAR
           > 2
         > ,
         * n_ARRAY_VALUE
          * n_EMPTY
          * n_NUMERIC_SCALAR
           > 3
         > ]
      > ;
     > "\n"
     > }
  > "\n\n"
  * n_STATEMENT
   * n_BINARY_EXPRESSION
    * n_VARIABLE
     > $i
    > " "
    * n_OPERATOR
     > =
    > " "
    * n_NUMERIC_SCALAR
     > 1
   > ;
  > "\n"
  * n_STATEMENT
   * n_BINARY_EXPRESSION
    * n_VARIABLE
     > $x
    > " "
    * n_OPERATOR
     > =
    > " "
    * n_INDEX_ACCESS
     * n_FUNCTION_CALL
      * n_SYMBOL_NAME
       > foo
      * n_CALL_PARAMETER_LIST
       > (
       > )
     > [
     * n_NUMERIC_SCALAR
      > 2
     > ]
   > ;
  > "\n\n"
  * n_STATEMENT
   * n_BINARY_EXPRESSION
    * n_VARIABLE
     > $y
    > " "
    * n_OPERATOR
     > =
    > " "
    * n_INDEX_ACCESS
     * n_FUNCTION_CALL
      * n_SYMBOL_NAME
       > foo
      * n_CALL_PARAMETER_LIST
       > (
       > )
     > [
     * n_VARIABLE
      > $i
     > ]
   > ;
  > "\n\n"
  * n_STATEMENT
   * n_CONDITION_LIST
    * n_IF
     > if
     > " "
     * n_CONTROL_CONDITION
      > (
      * n_FUNCTION_CALL
       * n_SYMBOL_NAME
        > isset
       * n_CALL_PARAMETER_LIST
        > (
        * n_INDEX_ACCESS
         * n_FUNCTION_CALL
          * n_SYMBOL_NAME
           > foo
          * n_CALL_PARAMETER_LIST
           > (
           > )
         > [
         * n_NUMERIC_SCALAR
          > 0
         > ]
        > )
      > )
     > " "
     * n_STATEMENT_LIST
      > {
      > " "
      > }
 > "\n"
Back to Directory File Manager