in lib/generator.js [2763:2811]
visitArray(ast, level, env, expected) {
assert.equal(ast.type, 'array');
let expectedType;
if (!expected || !expected.type || (expected && _name(expected) && _name(expected) === 'any')) {
expectedType = ast.inferred;
} else {
expectedType = expected;
}
this.visitPointerType(expectedType, level, env);
let arrayComments = DSL.comment.getBetweenComments(this.comments, ast.tokenRange[0], ast.tokenRange[1]);
if (ast.items.length === 0) {
this.emit(`{`);
if (arrayComments.length > 0) {
this.emit('\n');
this.visitComments(arrayComments, level + 1);
this.emit('', level);
}
this.emit('}');
return;
}
let item;
this.emit(`{`);
let itemType = expectedType.subType || expectedType.itemType;
itemType.pointer = true;
for (let i = 0; i < ast.items.length; i++) {
item = ast.items[i];
let comments = DSL.comment.getFrontComments(this.comments, item.tokenRange[0]);
if (comments.length > 0) {
this.emit('\n');
this.visitComments(comments, level + 1);
this.emit('', level + 1);
}
this.visitExpr(item, level + 1, env, itemType);
if (i < ast.items.length - 1) {
this.emit(`, `);
}
}
if (item) {
//find the last item's back comment
let comments = DSL.comment.getBetweenComments(this.comments, item.tokenRange[0], ast.tokenRange[1]);
if (comments.length > 0) {
this.emit('\n');
this.visitComments(comments, level + 1);
this.emit(`}`, level);
return;
}
}
this.emit(`}`);
}