use :node;

var Node = module.require('../Node').Node;

fn ArrayPattern(elements)

extends Node {

this.type = 'ArrayPattern';
this.elements = elements;

for element in this.elements {
  if element? {
    element.parent = this;
  }
}

}

ArrayPattern.prototype.codegen = () -> {

if !super.codegen() {
  return;
}

var context = this.getContext().node;
for element, i in this.elements {
  this.elements[i] = element?.codegen(false);

  if element? and element.type == "Identifier" {
    context.defineIdentifier(element);
  }
}

return this;

};

ArrayPattern.prototype.hasCallExpression = () -> true;

exports.ArrayPattern = ArrayPattern;