Sha256: 4652d51e6b0a8ee59ed2f31a8a3be435eef7f7911420a5c71be201bfd00d5d39

Contents?: true

Size: 775 Bytes

Versions: 3

Compression:

Stored size: 775 Bytes

Contents

use :node;

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

fn BlockStatement(body)
  extends Node {
  
  this.type = 'BlockStatement';
  this.body = body;
  
  for statement, i in body {
    if statement {
      statement.parent = this;
    } else {
      body[i] = { type: 'EmptyStatement' };
    }
  }
}

BlockStatement.prototype.codegen = () -> {
  if !super.codegen() {
    return;
  }
  
  var i = 0;
  while (i < this.body.length) {
    var statement = this.body[i];
    
    if !statement || statement.codeGenerated {
      i++;
      continue;
    }
    
    if statement.codegen?() {
      this.body[this.body.indexOf(statement)] = statement;
      i++;
    } else {
      this.body.splice(i, 1);
    }
  }
  
  return this;
};

exports.BlockStatement = BlockStatement;

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
spider-src-0.1.7 lib/spider-src/support/spider/src/ast/statements/BlockStatement.spider
spider-src-0.1.6 lib/spider-src/support/spider/src/ast/statements/BlockStatement.spider
spider-src-0.1.5 lib/spider-src/support/spider/src/ast/statements/BlockStatement.spider