in lib/generator.js [1484:1516]
visitArrayAccess(ast, level, env, isLeft) {
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 += `.${_upperFirst(name)}`;
} else {
expr += `["${name}"]`;
}
current = ast.propertyPathTypes[i];
}
}
if (isLeft) {
this.emit(`${expr}[`, level);
} else {
this.emit(`${expr}[`);
}
this.visitExpr(ast.accessKey, level, env);
if (ast.accessKey.type === 'variable') {
this.emit(`.Value`);
}
this.emit(`]`);
}