in lib/generator.js [2733:2761]
visitArrayAccess(ast, level, env, expected) {
assert.equal(ast.type, 'array_access');
let arrayName = _name(ast.id);
if (ast.id.tag === DSL.Tag.Tag.VID) {
arrayName = _vid(arrayName);
}
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') {
arrayName += `.${_format(name)}`;
} else {
arrayName += `["${name}"]`;
}
current = ast.propertyPathTypes[i];
}
}
if ((!expected || !expected.pointer) && (DSL.util.isBasicType(_name(ast.inferred)) &&
!_isFilterType(_name(ast.inferred))) && _name(ast.inferred) !== 'model') {
this.emit(`${_setValueFunc(_name(ast.inferred))}${arrayName}[`);
this.visitExpr(ast.accessKey, level, env);
this.emit(`])`);
} else {
this.emit(`${arrayName}[`);
this.visitExpr(ast.accessKey, level, env);
this.emit(`]`);
}
}