visitArrayAccess()

in lib/generator.js [1795:1818]


  visitArrayAccess(ast, level) {
    assert.equal(ast.type, 'array_access');
    let expr;
    if (ast.id.tag === DSL.Tag.Tag.VID) {
      expr = `$this->${_vid(ast.id)}`;
    } else {
      expr = `$${_name(ast.id)}`;
    }
    if (ast.propertyPath && ast.propertyPath.length) {
      var current = ast.id.inferred;
      for (var i = 0; i < ast.propertyPath.length; i++) {
        var name = _name(ast.propertyPath[i]);
        if (current.type === 'model') {
          expr += `->${name}`;
        } else {
          expr += `['${name}']`;
        }
        current = ast.propertyPathTypes[i];
      }
    }
    this.emit(`@${expr}[`, level);
    this.visitExpr(ast.accessKey, level);
    this.emit(']');
  }