# Snapshot report for `src/__tests__/memory-spec.js`

The actual snapshot is saved in `memory-spec.js.snap`.

Generated by [AVA](https://ava.li).

## memory parser

> Snapshot 1

    {
      Type: 'FunctionDeclaration',
      meta: [],
      params: [
        {
          Type: 'FunctionArguments',
          meta: [],
          params: [
            undefined,
          ],
          range: [
            {
              col: 14,
              line: 1,
              sourceLine: 'function test(): i32 {',
            },
            {
              col: 15,
              line: 1,
              sourceLine: 'function test(): i32 {',
            },
          ],
          type: null,
          value: 'FUNCTION_ARGUMENTS',
        },
        {
          Type: 'FunctionResult',
          meta: [],
          params: [],
          range: [
            {
              col: 15,
              line: 1,
              sourceLine: 'function test(): i32 {',
            },
            {
              col: 22,
              line: 1,
              sourceLine: 'function test(): i32 {',
            },
          ],
          type: 'i32',
          value: 'i32',
        },
        {
          Type: 'Declaration',
          meta: [],
          params: [
            {
              Type: 'Constant',
              meta: [],
              params: [],
              range: [
                {
                  col: 19,
                  line: 2,
                  sourceLine: '    let x: i32[] = 0;',
                },
                {
                  col: 20,
                  line: 2,
                  sourceLine: '    let x: i32[] = 0;',
                },
              ],
              type: 'i32',
              value: '0',
            },
          ],
          range: [
            {
              col: 4,
              line: 2,
              sourceLine: '    let x: i32[] = 0;',
            },
            {
              col: 21,
              line: 2,
              sourceLine: '    let x: i32[] = 0;',
            },
          ],
          type: 'i32[]',
          value: 'x',
        },
        {
          Type: 'Declaration',
          meta: [],
          params: [
            {
              Type: 'Constant',
              meta: [],
              params: [],
              range: [
                {
                  col: 17,
                  line: 3,
                  sourceLine: '    let y: i32 = 5;',
                },
                {
                  col: 18,
                  line: 3,
                  sourceLine: '    let y: i32 = 5;',
                },
              ],
              type: 'i32',
              value: '5',
            },
          ],
          range: [
            {
              col: 4,
              line: 3,
              sourceLine: '    let y: i32 = 5;',
            },
            {
              col: 19,
              line: 3,
              sourceLine: '    let y: i32 = 5;',
            },
          ],
          type: 'i32',
          value: 'y',
        },
        {
          Type: 'MemoryAssignment',
          meta: [],
          params: [
            {
              Type: 'ArraySubscript',
              meta: [],
              params: [
                {
                  Type: 'Identifier',
                  meta: [],
                  params: [],
                  range: [
                    {
                      col: 4,
                      line: 4,
                      sourceLine: '    x[0] = 21;',
                    },
                    {
                      col: 6,
                      line: 4,
                      sourceLine: '    x[0] = 21;',
                    },
                  ],
                  type: null,
                  value: 'x',
                },
                {
                  Type: 'Constant',
                  meta: [],
                  params: [],
                  range: [
                    {
                      col: 6,
                      line: 4,
                      sourceLine: '    x[0] = 21;',
                    },
                    {
                      col: 7,
                      line: 4,
                      sourceLine: '    x[0] = 21;',
                    },
                  ],
                  type: 'i32',
                  value: '0',
                },
              ],
              range: [
                {
                  col: 4,
                  line: 4,
                  sourceLine: '    x[0] = 21;',
                },
                {
                  col: 6,
                  line: 4,
                  sourceLine: '    x[0] = 21;',
                },
                {
                  col: 8,
                  line: 4,
                  sourceLine: '    x[0] = 21;',
                },
              ],
              type: null,
              value: 'x',
            },
            {
              Type: 'Constant',
              meta: [],
              params: [],
              range: [
                {
                  col: 11,
                  line: 4,
                  sourceLine: '    x[0] = 21;',
                },
                {
                  col: 13,
                  line: 4,
                  sourceLine: '    x[0] = 21;',
                },
              ],
              type: 'i32',
              value: '21',
            },
          ],
          range: [
            {
              col: 4,
              line: 4,
              sourceLine: '    x[0] = 21;',
            },
            {
              col: 6,
              line: 4,
              sourceLine: '    x[0] = 21;',
            },
            {
              col: 8,
              line: 4,
              sourceLine: '    x[0] = 21;',
            },
            {
              col: 14,
              line: 4,
              sourceLine: '    x[0] = 21;',
            },
            {
              col: 14,
              line: 4,
              sourceLine: '    x[0] = 21;',
            },
          ],
          type: null,
          value: '=',
        },
        {
          Type: 'MemoryAssignment',
          meta: [],
          params: [
            {
              Type: 'ArraySubscript',
              meta: [],
              params: [
                {
                  Type: 'Identifier',
                  meta: [],
                  params: [],
                  range: [
                    {
                      col: 4,
                      line: 5,
                      sourceLine: '    x[y] = 2;',
                    },
                    {
                      col: 6,
                      line: 5,
                      sourceLine: '    x[y] = 2;',
                    },
                  ],
                  type: null,
                  value: 'x',
                },
                {
                  Type: 'Identifier',
                  meta: [],
                  params: [],
                  range: [
                    {
                      col: 6,
                      line: 5,
                      sourceLine: '    x[y] = 2;',
                    },
                    {
                      col: 8,
                      line: 5,
                      sourceLine: '    x[y] = 2;',
                    },
                  ],
                  type: null,
                  value: 'y',
                },
              ],
              range: [
                {
                  col: 4,
                  line: 5,
                  sourceLine: '    x[y] = 2;',
                },
                {
                  col: 6,
                  line: 5,
                  sourceLine: '    x[y] = 2;',
                },
                {
                  col: 8,
                  line: 5,
                  sourceLine: '    x[y] = 2;',
                },
              ],
              type: null,
              value: 'x',
            },
            {
              Type: 'Constant',
              meta: [],
              params: [],
              range: [
                {
                  col: 11,
                  line: 5,
                  sourceLine: '    x[y] = 2;',
                },
                {
                  col: 12,
                  line: 5,
                  sourceLine: '    x[y] = 2;',
                },
              ],
              type: 'i32',
              value: '2',
            },
          ],
          range: [
            {
              col: 4,
              line: 5,
              sourceLine: '    x[y] = 2;',
            },
            {
              col: 6,
              line: 5,
              sourceLine: '    x[y] = 2;',
            },
            {
              col: 8,
              line: 5,
              sourceLine: '    x[y] = 2;',
            },
            {
              col: 13,
              line: 5,
              sourceLine: '    x[y] = 2;',
            },
            {
              col: 13,
              line: 5,
              sourceLine: '    x[y] = 2;',
            },
          ],
          type: null,
          value: '=',
        },
        {
          Type: 'ReturnStatement',
          meta: [],
          params: [
            {
              Type: 'BinaryExpression',
              meta: [],
              params: [
                {
                  Type: 'ArraySubscript',
                  meta: [],
                  params: [
                    {
                      Type: 'Identifier',
                      meta: [],
                      params: [],
                      range: [
                        {
                          col: 11,
                          line: 6,
                          sourceLine: '    return x[0] * x[y];',
                        },
                        {
                          col: 13,
                          line: 6,
                          sourceLine: '    return x[0] * x[y];',
                        },
                      ],
                      type: null,
                      value: 'x',
                    },
                    {
                      Type: 'Constant',
                      meta: [],
                      params: [],
                      range: [
                        {
                          col: 13,
                          line: 6,
                          sourceLine: '    return x[0] * x[y];',
                        },
                        {
                          col: 14,
                          line: 6,
                          sourceLine: '    return x[0] * x[y];',
                        },
                      ],
                      type: 'i32',
                      value: '0',
                    },
                  ],
                  range: [
                    {
                      col: 11,
                      line: 6,
                      sourceLine: '    return x[0] * x[y];',
                    },
                    {
                      col: 13,
                      line: 6,
                      sourceLine: '    return x[0] * x[y];',
                    },
                    {
                      col: 15,
                      line: 6,
                      sourceLine: '    return x[0] * x[y];',
                    },
                  ],
                  type: null,
                  value: 'x',
                },
                {
                  Type: 'ArraySubscript',
                  meta: [],
                  params: [
                    {
                      Type: 'Identifier',
                      meta: [],
                      params: [],
                      range: [
                        {
                          col: 18,
                          line: 6,
                          sourceLine: '    return x[0] * x[y];',
                        },
                        {
                          col: 20,
                          line: 6,
                          sourceLine: '    return x[0] * x[y];',
                        },
                      ],
                      type: null,
                      value: 'x',
                    },
                    {
                      Type: 'Identifier',
                      meta: [],
                      params: [],
                      range: [
                        {
                          col: 20,
                          line: 6,
                          sourceLine: '    return x[0] * x[y];',
                        },
                        {
                          col: 22,
                          line: 6,
                          sourceLine: '    return x[0] * x[y];',
                        },
                      ],
                      type: null,
                      value: 'y',
                    },
                  ],
                  range: [
                    {
                      col: 18,
                      line: 6,
                      sourceLine: '    return x[0] * x[y];',
                    },
                    {
                      col: 20,
                      line: 6,
                      sourceLine: '    return x[0] * x[y];',
                    },
                    {
                      col: 22,
                      line: 6,
                      sourceLine: '    return x[0] * x[y];',
                    },
                  ],
                  type: null,
                  value: 'x',
                },
              ],
              range: [
                {
                  col: 11,
                  line: 6,
                  sourceLine: '    return x[0] * x[y];',
                },
                {
                  col: 13,
                  line: 6,
                  sourceLine: '    return x[0] * x[y];',
                },
                {
                  col: 15,
                  line: 6,
                  sourceLine: '    return x[0] * x[y];',
                },
                {
                  col: 23,
                  line: 6,
                  sourceLine: '    return x[0] * x[y];',
                },
              ],
              type: null,
              value: '*',
            },
          ],
          range: [
            {
              col: 4,
              line: 6,
              sourceLine: '    return x[0] * x[y];',
            },
            {
              col: 23,
              line: 6,
              sourceLine: '    return x[0] * x[y];',
            },
          ],
          type: null,
          value: 'return',
        },
      ],
      range: [
        {
          col: 9,
          line: 1,
          sourceLine: 'function test(): i32 {',
        },
        {
          col: 3,
          line: 7,
          sourceLine: '  }',
        },
      ],
      type: null,
      value: 'test',
    }

## memory store on float arrays

> Snapshot 1

    {
      Type: 'MemoryAssignment',
      meta: [],
      params: [
        {
          Type: 'ArraySubscript',
          meta: [],
          params: [
            {
              Type: 'Identifier',
              meta: [],
              params: [],
              range: [
                {
                  col: 0,
                  line: 1,
                  sourceLine: 'x[0] = 2.0;',
                },
                {
                  col: 2,
                  line: 1,
                  sourceLine: 'x[0] = 2.0;',
                },
              ],
              type: null,
              value: 'x',
            },
            {
              Type: 'Constant',
              meta: [],
              params: [],
              range: [
                {
                  col: 2,
                  line: 1,
                  sourceLine: 'x[0] = 2.0;',
                },
                {
                  col: 3,
                  line: 1,
                  sourceLine: 'x[0] = 2.0;',
                },
              ],
              type: 'i32',
              value: '0',
            },
          ],
          range: [
            {
              col: 0,
              line: 1,
              sourceLine: 'x[0] = 2.0;',
            },
            {
              col: 2,
              line: 1,
              sourceLine: 'x[0] = 2.0;',
            },
            {
              col: 4,
              line: 1,
              sourceLine: 'x[0] = 2.0;',
            },
          ],
          type: null,
          value: 'x',
        },
        {
          Type: 'Constant',
          meta: [],
          params: [],
          range: [
            {
              col: 7,
              line: 1,
              sourceLine: 'x[0] = 2.0;',
            },
            {
              col: 10,
              line: 1,
              sourceLine: 'x[0] = 2.0;',
            },
          ],
          type: 'f32',
          value: '2.0',
        },
      ],
      range: [
        {
          col: 0,
          line: 1,
          sourceLine: 'x[0] = 2.0;',
        },
        {
          col: 2,
          line: 1,
          sourceLine: 'x[0] = 2.0;',
        },
        {
          col: 4,
          line: 1,
          sourceLine: 'x[0] = 2.0;',
        },
        {
          col: 11,
          line: 1,
          sourceLine: 'x[0] = 2.0;',
        },
        {
          col: 11,
          line: 1,
          sourceLine: 'x[0] = 2.0;',
        },
      ],
      type: null,
      value: '=',
    }
